-
Notifications
You must be signed in to change notification settings - Fork 9
/
setup.py
109 lines (94 loc) · 3.25 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
#!/usr/bin/env python
import os, sys
import glob
from distutils.core import setup
try:
import setuptools
# enable "setup.py develop", optional
except ImportError:
pass
MOD_NAME = 'mic'
version_path = 'VERSION'
if not os.path.isfile(version_path):
print 'No VERSION file in topdir, abort'
sys.exit(1)
try:
# first line should be the version number
version = open(version_path).readline().strip()
if not version:
print 'VERSION file is invalid, abort'
sys.exit(1)
ver_file = open('%s/__version__.py' % MOD_NAME, 'w')
ver_file.write("VERSION = \"%s\"\n" % version)
ver_file.close()
except IOError:
print 'WARNING: Cannot write version number file'
# --install-layout is recognized after 2.5
if sys.version_info[:2] > (2, 5):
if len(sys.argv) > 1 and 'install' in sys.argv:
try:
import platform
(dist, ver, id) = platform.linux_distribution()
# for debian-like distros, mods will be installed to
# ${PYTHONLIB}/dist-packages
if dist in ('debian', 'Ubuntu'):
sys.argv.append('--install-layout=deb')
except:
pass
PACKAGES = [MOD_NAME,
MOD_NAME + '/utils',
MOD_NAME + '/imager',
MOD_NAME + '/kickstart',
MOD_NAME + '/kickstart/custom_commands',
MOD_NAME + '/3rdparty/pykickstart',
MOD_NAME + '/3rdparty/pykickstart/commands',
MOD_NAME + '/3rdparty/pykickstart/handlers',
MOD_NAME + '/3rdparty/pykickstart/urlgrabber',
]
IMAGER_PLUGINS = glob.glob(os.path.join("plugins", "imager", "*.py"))
BACKEND_PLUGINS = glob.glob(os.path.join("plugins", "backend", "*.py"))
# the following code to do a simple parse for '--prefix' opts
prefix = sys.prefix
is_next = False
for arg in sys.argv:
if is_next:
prefix = arg
break
if '--prefix=' in arg:
prefix = arg[9:]
break
elif '--prefix' == arg:
is_next = True
# get the installation path of mic.conf
prefix = os.path.abspath(os.path.expanduser(prefix)).rstrip('/')
if prefix.lstrip('/') == 'usr':
etc_prefix = '/etc'
else:
etc_prefix = os.path.join(prefix, 'etc')
conffile = 'distfiles/mic.conf'
if os.path.isfile('%s/mic/mic.conf' % etc_prefix):
conffile += '.new'
# apply prefix to mic.conf.in to generate actual mic.conf
conf_str = file('distfiles/mic.conf.in').read()
conf_str = conf_str.replace('@PREFIX@', prefix)
with file(conffile, 'w') as wf:
wf.write(conf_str)
try:
os.environ['PREFIX'] = prefix
setup(name=MOD_NAME,
version = version,
description = 'Image Creator for Linux Distributions',
author='Jian-feng Ding, Qiang Zhang, Gui Chen',
url='https://github.com/jfding/mic',
scripts=[
'tools/mic',
],
packages = PACKAGES,
data_files = [("%s/lib/mic/plugins/imager" % prefix, IMAGER_PLUGINS),
("%s/lib/mic/plugins/backend" % prefix, BACKEND_PLUGINS),
("%s/mic" % etc_prefix, [conffile])]
)
finally:
# remove dynamic file distfiles/mic.conf
os.unlink(conffile)