Use PREFIX in install rule.
[SysBars.git] / install.py
blob50fa8194abf586d21d762d9d3da8bf9f5e0f787c
1 #!/usr/bin/env python
3 import fnmatch
4 import os
5 import shutil
6 import subprocess
7 import sys
9 src_dir = os.path.dirname(os.path.abspath(__file__))
11 var_opts = {}
12 uninstall = False
14 def opj(*elements):
15 elements = list(elements)
16 for n in range(1, len(elements)):
17 if elements[n][0] == '/':
18 elements[n] = elements[n][1:]
19 return os.path.join(*elements)
21 def get_var(name, default = None):
22 global var_opts
23 v = var_opts.get(name)
24 if not v:
25 v = os.environ.get(name)
26 if not v:
27 v = default
28 return v
30 for a in sys.argv[1:]:
31 if '=' in a:
32 a = a.split('=', 1)
33 var_opts[a[0]] = a[1]
34 elif a == 'uninstall':
35 uninstall = True
37 dest_dir = get_var('DEST_DIR', '/')
38 prefix = get_var('PREFIX')
39 if not prefix:
40 fp = subprocess.Popen('pkg-config --variable=prefix libgnome-2.0',
41 shell = True, stdout = subprocess.PIPE).stdout
42 prefix = fp.read().strip()
43 fp.close()
45 lib_dir = opj(prefix, 'lib', 'sysbars')
46 share_dir = opj(prefix, 'share', 'sysbars')
47 icons_dir = opj(prefix, 'share', 'icons',
48 'hicolor', 'scalable', 'apps')
49 pixmaps_dir = opj(prefix, 'share', 'pixmaps')
50 bonobo_dir = opj(prefix, 'lib', 'bonobo', 'servers')
51 doc_dir = opj(prefix, 'share', 'doc', 'sysbars')
53 if uninstall:
54 try:
55 os.unlink(opj(dest_dir, icons_dir, 'sysbars.svg'))
56 except:
57 pass
58 try:
59 os.unlink(opj(dest_dir, pixmaps_dir, 'sysbars.xpm'))
60 except:
61 pass
62 try:
63 os.unlink(opj(dest_dir, bonobo_dir,
64 'GNOME_SysBarsApplet.server'))
65 except:
66 pass
67 for d in (lib_dir, share_dir, doc_dir):
68 d = opj(dest_dir, d)
69 for root, dirs, files in os.walk(d):
70 for n in files:
71 try:
72 os.remove(opj(root, n))
73 except:
74 pass
75 for n in dirs:
76 try:
77 os.rmdir(opj(root, n))
78 except:
79 pass
80 try:
81 os.rmdir(d)
82 except:
83 pass
84 sys.exit(0)
86 def make_dir(d):
87 d = opj(dest_dir, d)
88 if not os.path.isdir(d):
89 os.makedirs(d, 0755)
91 def install(f, dest):
92 shutil.copy(opj(src_dir, f), opj(dest_dir, dest))
94 for d in (opj(lib_dir, 'platform'), opj(lib_dir, 'plugins'),
95 share_dir, icons_dir, pixmaps_dir, bonobo_dir, doc_dir):
96 make_dir(d)
98 for f in fnmatch.filter(os.listdir(src_dir), '*.py'):
99 if f != 'install.py' and f != 'procstat.py':
100 install(f, lib_dir)
101 os.chmod(opj(dest_dir, lib_dir, 'sysbars.py'), 0755)
102 for f in fnmatch.filter(os.listdir(opj(src_dir, 'platform')), '*.py'):
103 install(opj('platform', f), opj(lib_dir, 'platform'))
104 for f in fnmatch.filter(os.listdir(opj(src_dir, 'plugins')), '*.py'):
105 install(opj('plugins', f), opj(lib_dir, 'plugins'))
106 install('AppInfo.xml', share_dir)
107 install('.DirIcon', opj(icons_dir, 'sysbars.svg'))
108 install('sysbars.xpm', pixmaps_dir)
109 install(opj('Help', 'Changes'), opj(doc_dir, 'ChangeLog'))
110 install(opj('Help', 'COPYING'), doc_dir)
111 install(opj('Help', 'README'), doc_dir)
113 fp = open(opj(dest_dir, lib_dir, 'prefix.py'), 'w')
114 fp.write( \
116 prefix = '%s'
117 share_dir = '%s'
118 icons_dir = '%s'
119 """ % (prefix, share_dir, icons_dir))
120 fp.close()
122 fp = open(opj(dest_dir, bonobo_dir, 'GNOME_SysBarsApplet.server'), 'w')
123 fp.write( \
124 """<oaf_info>
125 <oaf_server iid="OAFIID:GNOME_SysBarsApplet_Factory"
126 type="exe" location="%s">
128 <oaf_attribute name="repo_ids" type="stringv">
129 <item value="IDL:Bonobo/GenericFactory:1.0"/>
130 <item value="IDL:Bonobo/Unknown:1.0"/>
131 </oaf_attribute>
132 <oaf_attribute name="name" type="string" value="SysBars"/>
133 <oaf_attribute name="description" type="string"
134 value="System resource usage barchart display"/>
135 </oaf_server>
137 <oaf_server iid="OAFIID:GNOME_SysBarsApplet"
138 type="factory" location="OAFIID:GNOME_SysBarsApplet_Factory">
140 <oaf_attribute name="repo_ids" type="stringv">
141 <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
142 <item value="IDL:Bonobo/Control:1.0"/>
143 <item value="IDL:Bonobo/Unknown:1.0"/>
144 </oaf_attribute>
145 <oaf_attribute name="name" type="string" value="SysBars"/>
146 <oaf_attribute name="description" type="string"
147 value="System resource usage barchart display"/>
148 <oaf_attribute name="panel:category" type="string" value="Utility"/>
149 <oaf_attribute name="panel:icon" type="string" value="sysbars"/>
150 </oaf_server>
151 </oaf_info>
152 """ % (opj(lib_dir, 'sysbars.py')))
153 fp.close()