Add matrix-rootfs to install since it now works again
[matrix.git] / setup.py
1 #!/usr/bin/env python
2
3 import distutils.core
4 import optparse
5 import sys
6 import os
7 from glob import glob
8 from os.path import join
9
10 def add_flag(option, opt, value, parser):
11         dist_args.append(opt)
12
13 def add_value(option, opt, value, parser):
14         dist_args.append(opt)
15         dist_args.append(value)
16
17 def add_prefix_value(option, opt, value, parser):
18         global dist_prefix
19         dist_prefix = value
20         add_value(option, opt, value, parser)
21
22 parser = optparse.OptionParser()
23 parser.add_option(
24         '--prefix',
25         help='installation prefix',
26         action='callback', callback=add_prefix_value, type="string")
27 parser.add_option(
28         '--compile',
29         help='compile .py to .pyc [default]',
30         action='callback', callback=add_flag)
31 parser.add_option(
32         '--no-compile',
33         help="don't compile .py files",
34         action='callback', callback=add_flag)
35 parser.add_option(
36         '-O', '--optimize',
37         help='optimize',
38         action='callback', callback=add_value, type="string")
39 parser.add_option(
40         '-f', '--force',
41         help='force installation (overwrite any existing files)',
42         action='callback', callback=add_flag)
43
44 parse_args = None
45 dist_args = None
46 dist_prefix = '/usr/local'
47
48 for i in xrange(1, len(sys.argv)):
49         arg = sys.argv[i]
50         if arg.startswith('-'):
51                 continue
52         if arg.startswith('install'):
53                 dist_args = sys.argv[:i+1]
54                 parse_args = sys.argv[i+1:]
55         break
56
57 if parse_args:
58         parser.usage = '%s [options]' % ' '.join(dist_args)
59         parser.parse_args(args=parse_args)
60
61         sys.argv = dist_args
62
63 binfiles = [
64         'bin/matrix',
65         'bin/matrix-graph',
66         'bin/matrix-upload',
67         'bin/matrix-rootfs',
68         'bin/matrixify',
69 ]
70
71 scriptdir = 'share/matrix/scripts'
72
73 distutils.core.setup(
74         name='matrix',
75         version='1.0-pre',
76         license='GPL',
77         packages=['matrix'],
78         scripts=binfiles,
79         data_files=[
80                 (scriptdir, glob('scripts/*.sh') + glob('scripts/*.mk')),
81                 (join(scriptdir, 'styles'), glob('scripts/styles/*.mk')),
82         ],
83 )
84
85 python_version = 'python%d.%d' % tuple(sys.version_info[0:2])
86
87 dist_moduledir = join(dist_prefix, 'lib', python_version, 'site-packages')
88 dist_scriptdir = join(dist_prefix, scriptdir)
89
90 dist_binfiles = [join(dist_prefix, file) for file in binfiles]
91
92 try:
93         while dist_binfiles:
94                 path = dist_binfiles[0]
95
96                 file = open(path, 'rU')
97                 lines = file.readlines()
98                 file.close()
99
100                 file = open(path, 'w')
101                 for line in lines:
102                         line = line.replace('@MODULEDIR@', dist_moduledir)
103                         line = line.replace('@SCRIPTDIR@', dist_scriptdir)
104                         file.write(line)
105                 file.close()
106
107                 del dist_binfiles[0]
108 finally:
109         for path in dist_binfiles:
110                 try:
111                         os.unlink(path)
112                 except:
113                         pass