better handling for installing config file in virtualenv
[tools/mic.git] / setup.py
1 #!/usr/bin/env python
2
3 import os, sys
4 import glob
5 from distutils.core import setup
6
7 MOD_NAME = 'mic'
8
9 try:
10     import mic
11     version = mic.__version__
12 except (ImportError, AttributeError):
13     version = "dev"
14
15 # --install-layout is recognized after 2.5
16 if sys.version_info[:2] > (2, 5):
17     if len(sys.argv) > 1 and 'install' in sys.argv:
18         try:
19             import platform
20             (dist, ver, id) = platform.linux_distribution()
21
22             # for debian-like distros, mods will be installed to
23             # ${PYTHONLIB}/dist-packages
24             if dist in ('debian', 'Ubuntu'):
25                 sys.argv.append('--install-layout=deb')
26         except:
27             pass
28
29 PACKAGES = [MOD_NAME,
30             MOD_NAME + '/utils',
31             MOD_NAME + '/imager',
32             MOD_NAME + '/kickstart',
33             MOD_NAME + '/kickstart/custom_commands',
34             MOD_NAME + '/3rdparty/pykickstart',
35             MOD_NAME + '/3rdparty/pykickstart/commands',
36             MOD_NAME + '/3rdparty/pykickstart/handlers',
37             MOD_NAME + '/3rdparty/pykickstart/urlgrabber',
38            ]
39
40 IMAGER_PLUGINS = glob.glob(os.path.join("plugins", "imager", "*.py"))
41 BACKEND_PLUGINS = glob.glob(os.path.join("plugins", "backend", "*.py"))
42
43 prefix = sys.prefix
44 # if real_prefix, it must be in virtualenv, use prefix as root
45 root = sys.prefix if hasattr(sys, 'real_prefix') else ''
46
47 conffile = 'etc/mic.conf'
48 # apply prefix to mic.conf.in to generate actual mic.conf
49 conf_str = file('etc/mic.conf.in').read()
50 conf_str = conf_str.replace('@PREFIX@', prefix)
51 with file(conffile, 'w') as wf:
52     wf.write(conf_str)
53
54 setup(name=MOD_NAME,
55   version = version,
56   description = 'Image Creator for Linux Distributions',
57   author='Jian-feng Ding, Qiang Zhang, Gui Chen',
58   author_email='jian-feng.ding@intel.com, qiang.z.zhang@intel.com, gui.chen@intel.com',
59   url='https://github.com/jfding/mic',
60   scripts=[
61       'tools/mic',
62       ],
63   packages = PACKAGES,
64   data_files = [("%s/lib/mic/plugins/imager" % prefix, IMAGER_PLUGINS),
65                 ("%s/lib/mic/plugins/backend" % prefix, BACKEND_PLUGINS),
66                 ("%s/etc/mic" % root, [conffile])]
67 )