forked from hpc2n/softwareaccounting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
112 lines (94 loc) · 3.52 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"""
SAMS Software accounting
Copyright (C) 2018-2021 Swedish National Infrastructure for Computing (SNIC)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; If not, see <http://www.gnu.org/licenses/>.
"""
import os
from distutils.command.install import install
from distutils.command.install_data import install_data
from distutils.core import setup
import setuptools
from sams import __version__
# nasty global for relocation
RELOCATE = None
class InstallSams(install):
def finalize_options(self):
install.finalize_options(self)
global RELOCATE
RELOCATE = self.home
class InstallDataSams(install_data):
# this class is used to filter out data files which should not be overwritten
def finalize_options(self):
install_data.finalize_options(self)
# relocation
if RELOCATE:
print("relocating to %s" % RELOCATE)
for (prefix, files) in reversed(self.data_files):
if prefix.startswith("/"):
new_prefix = os.path.join(RELOCATE, prefix[1:])
self.data_files.remove((prefix, files))
self.data_files.append((new_prefix, files))
# check that we don't overwrite /etc files
for (prefix, files) in reversed(self.data_files):
if prefix.startswith(os.path.join(RELOCATE or "/", "etc")):
for basefile in files:
fn = os.path.join(prefix, os.path.basename(basefile))
if os.path.exists(fn):
print("Skipping installation of %s (already exists)" % fn)
files.remove(basefile)
if not files:
self.data_files.remove((prefix, []))
cmdclasses = {"install": InstallSams, "install_data": InstallDataSams}
setup(
name="sams-software-accounting",
version=__version__,
description="SAMS Software Accounting",
author="Magnus Jonsson",
author_email="magnus@hpc2n.umu.se",
url="http://www.hpc2n.umu.se/",
packages=[
"sams",
"sams.aggregator",
"sams.loader",
"sams.output",
"sams.pidfinder",
"sams.sampler",
"sams.backend",
"sams.software",
"sams.xmlwriter",
"sams.listener",
],
scripts=[
"sams-aggregator.py",
"sams-collector.py",
"sams-post-receiver.py",
"sams-software-extractor.py",
"sams-software-updater.py",
"extras/sgas-sa-registrant/bin/sgas-sa-registrant",
],
install_requires=[
"Flask",
"httplib2",
"Twisted",
"PyYAML",
],
cmdclass=cmdclasses,
data_files=[
("/etc/sams", ["sams-aggregator.yaml"]),
("/etc/sams", ["sams-collector.yaml"]),
("/etc/sams", ["sams-post-receiver.yaml"]),
("/etc/sams", ["sams-software-extractor.yaml"]),
("/etc/sams", ["sams-software-updater.yaml"]),
("/etc/sams", ["sams-post-receiver.yaml"]),
("/etc/sams", ["extras/sgas-sa-registrant/etc/sgas-sa-registrant.conf"]),
],
)