Skip to content
Newer
Older
100644 318 lines (267 sloc) 12.5 KB
36198b0 Currently working through making setup.py functional for generating r…
Alex Kesling authored Jun 7, 2010
1 #!/usr/bin/env python
3d26436 @crobinso setup.py: Add stub 'test' command
crobinso authored Feb 5, 2012
2 import glob, os, sys, time, yaml
3 from distutils.core import setup, Command
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
4 from distutils.command.build_py import build_py as _build_py
3d26436 @crobinso setup.py: Add stub 'test' command
crobinso authored Feb 5, 2012
5 import unittest
36198b0 Currently working through making setup.py functional for generating r…
Alex Kesling authored Jun 7, 2010
6
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
7 try:
8 import subprocess
9 except:
10 import cobbler.sub_process as subprocess
11
3d26436 @crobinso setup.py: Add stub 'test' command
crobinso authored Feb 5, 2012
12 try:
13 import coverage
14 except:
15 converage = None
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
16
a09e3ef @jimi-c Modified cobbler.spec and setup.py files in master so they reflect th…
jimi-c authored Oct 27, 2011
17 VERSION = "2.3.1"
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
18 OUTPUT_DIR = "config"
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
19
20
21 #####################################################################
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
22 ## Helper Functions #################################################
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
23 #####################################################################
24
25
26 #####################################################################
27
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
28 def explode_glob_path(path):
29 """Take a glob and hand back the full recursive expansion,
30 ignoring links.
31 """
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
32
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
33 result = []
34 includes = glob.glob(path)
35 for item in includes:
36 if os.path.isdir(item) and not os.path.islink(item):
37 result.extend(explode_glob_path(os.path.join(item, "*")))
38 else:
39 result.append(item)
40 return result
36198b0 Currently working through making setup.py functional for generating r…
Alex Kesling authored Jun 7, 2010
41
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
42
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
43 def proc_data_files(data_files):
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
44 """Because data_files doesn't natively support globs...
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
45 let's add them.
46 """
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
47
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
48 result = []
49 for dir,files in data_files:
50 includes = []
51 for item in files:
52 includes.extend(explode_glob_path(item))
53 result.append((dir, includes))
54 return result
36198b0 Currently working through making setup.py functional for generating r…
Alex Kesling authored Jun 7, 2010
55
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
56 #####################################################################
57
58 def gen_manpages():
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
59 """Generate the man pages... this is currently done through POD,
60 possible future version may do this through some Python mechanism
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
61 (maybe conversion from ReStructured Text (.rst))...
62 """
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
63
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
64 manpages = {
65 "cobbler": 'pod2man --center="cobbler" --release="" ./docs/cobbler.pod | gzip -c > ./docs/cobbler.1.gz',
66 "koan": 'pod2man --center="koan" --release="" ./docs/koan.pod | gzip -c > ./docs/koan.1.gz',
67 "cobbler-register": 'pod2man --center="cobbler-register" --release="" ./docs/cobbler-register.pod | gzip -c > ./docs/cobbler-register.1.gz',
68 }
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
69
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
70 #Actually build them
71 for man, cmd in manpages.items():
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
72 print("building %s man page." % man)
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
73 if os.system(cmd):
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
74 print "Creation of %s manpage failed." % man
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
75 exit(1)
36198b0 Currently working through making setup.py functional for generating r…
Alex Kesling authored Jun 7, 2010
76
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
77 #####################################################################
78
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
79 def gen_build_version():
80 fd = open(os.path.join(OUTPUT_DIR, "version"),"w+")
81 gitdate = "?"
82 gitstamp = "?"
83 builddate = time.asctime()
84 if os.path.exists(".git"):
85 # for builds coming from git, include the date of the last commit
d81be53 Make use of --format in git and use the short hash. Thanks Todd Zulli…
Scott Henson authored Mar 21, 2011
86 cmd = subprocess.Popen(["/usr/bin/git","log","--format=%h%n%ad","-1"],stdout=subprocess.PIPE)
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
87 data = cmd.communicate()[0].strip()
d81be53 Make use of --format in git and use the short hash. Thanks Todd Zulli…
Scott Henson authored Mar 21, 2011
88 if cmd.returncode == 0:
89 gitstamp, gitdate = data.split("\n")
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
90 data = {
91 "gitdate" : gitdate,
92 "gitstamp" : gitstamp,
93 "builddate" : builddate,
94 "version" : VERSION,
95 "version_tuple" : [ int(x) for x in VERSION.split(".")]
96 }
97 fd.write(yaml.dump(data))
98 fd.close()
99
100 #####################################################################
101
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
102
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
103 #####################################################################
104 ## Modify Build Stage ##############################################
105 #####################################################################
106
107 class build_py(_build_py):
108 """Specialized Python source builder."""
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
109
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
110 def run(self):
111 gen_manpages()
a81ca9a Added back in old-style version tracking... because api.py needs it.
Alex Kesling authored Jun 30, 2010
112 gen_build_version()
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
113 _build_py.run(self)
114
3d26436 @crobinso setup.py: Add stub 'test' command
crobinso authored Feb 5, 2012
115 #####################################################################
116 ## Test Command #####################################################
117 #####################################################################
118
119 class test_command(Command):
120 user_options = []
121
122 def initialize_options(self):
123 pass
124 def finalize_options(self):
125 pass
126
127 def run(self):
128 testfiles = []
129 testdirs = ["koan"]
130
131 for d in testdirs:
132 testdir = os.path.join(os.getcwd(), "tests", d)
133
134 for t in glob.glob(os.path.join(testdir, '*.py')):
135 if t.endswith('__init__.py'):
136 continue
137 testfile = '.'.join(['tests', d,
138 os.path.splitext(os.path.basename(t))[0]])
139 testfiles.append(testfile)
140
141 tests = unittest.TestLoader().loadTestsFromNames(testfiles)
142 runner = unittest.TextTestRunner(verbosity = 1)
143
144 if coverage:
145 coverage.erase()
146 coverage.start()
147
148 result = runner.run(tests)
149
150 if coverage:
151 coverage.stop()
152 sys.exit(int(bool(len(result.failures) > 0 or
153 len(result.errors) > 0)))
154
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
155
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
156 #####################################################################
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
157 ## Actual Setup.py Script ###########################################
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
158 #####################################################################
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
159 if __name__ == "__main__":
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
160 ## Configurable installation roots for various data files.
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
161
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
162 # Trailing slashes on these vars is to allow for easy
163 # later configuration of relative paths if desired.
164 docpath = "/usr/share/man/man1"
165 etcpath = "/etc/cobbler/"
166 initpath = "/etc/init.d/"
167 libpath = "/var/lib/cobbler/"
168 logpath = "/var/log/"
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
169
b5f0bf3 @kscherer Update setup files to use proper apache configuration path
kscherer authored Jan 10, 2011
170 if os.path.exists("/etc/SuSE-release"):
171 webconfig = "/etc/apache2/conf.d"
e882588 Detect the webroot to be used based on the distro.
Chuck Short authored Jan 28, 2011
172 webroot = "/srv/www/"
b5f0bf3 @kscherer Update setup files to use proper apache configuration path
kscherer authored Jan 10, 2011
173 elif os.path.exists("/etc/debian_version"):
174 webconfig = "/etc/apache2/conf.d"
e882588 Detect the webroot to be used based on the distro.
Chuck Short authored Jan 28, 2011
175 webroot = "/usr/share/cobbler/webroot/"
b5f0bf3 @kscherer Update setup files to use proper apache configuration path
kscherer authored Jan 10, 2011
176 else:
177 webconfig = "/etc/httpd/conf.d"
e882588 Detect the webroot to be used based on the distro.
Chuck Short authored Jan 28, 2011
178 webroot = "/var/www/"
b5f0bf3 @kscherer Update setup files to use proper apache configuration path
kscherer authored Jan 10, 2011
179
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
180 webcontent = webroot + "cobbler_webui_content/"
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
181
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
182
183 setup(
3d26436 @crobinso setup.py: Add stub 'test' command
crobinso authored Feb 5, 2012
184 cmdclass={'build_py': build_py, 'test': test_command},
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
185 name = "cobbler",
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
186 version = VERSION,
187 description = "Network Boot and Update Server",
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
188 long_description = "Cobbler is a network install server. Cobbler supports PXE, virtualized installs, and reinstalling existing Linux machines. The last two modes use a helper tool, 'koan', that integrates with cobbler. There is also a web interface 'cobbler-web'. Cobbler's advanced features include importing distributions from DVDs and rsync mirrors, kickstart templating, integrated yum mirroring, and built-in DHCP/DNS Management. Cobbler has a XMLRPC API for integration with other applications.",
de186cd Update the author and author email
Scott Henson authored Jun 17, 2010
189 author = "Team Cobbler",
190 author_email = "cobbler@lists.fedorahosted.org",
7f60daf @jbartus changed link to new home page
jbartus authored Dec 4, 2011
191 url = "http://cobbler.github.com/",
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
192 license = "GPLv2+",
193 requires = [
194 "mod_python",
195 "cobbler",
196 ],
197 packages = [
198 "cobbler",
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
199 "cobbler/modules",
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
200 "koan",
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
201 ],
202 package_dir = {
203 "cobbler_web": "web/cobbler_web",
204 },
205 scripts = [
206 "scripts/cobbler",
207 "scripts/cobblerd",
208 "scripts/cobbler-ext-nodes",
209 "scripts/koan",
210 "scripts/cobbler-register",
211 ],
212 data_files = proc_data_files([
912481f A smart tftp server, and a module to manage it
Douglas Kilpatrick authored Jul 12, 2010
213 # tftpd, hide in /usr/sbin
214 ("/usr/sbin", ["scripts/tftpd.py"]),
215
b5f0bf3 @kscherer Update setup files to use proper apache configuration path
kscherer authored Jan 10, 2011
216 ("%s" % webconfig, ["config/cobbler.conf"]),
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
217 ("%s" % webconfig, ["config/cobbler_web.conf"]),
218 ("%s" % initpath, ["config/cobblerd"]),
219 ("%s" % docpath, ["docs/*.gz"]),
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
220 ("installer_templates", ["installer_templates/*"]),
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
221 ("%skickstarts" % libpath, ["kickstarts/*"]),
222 ("%ssnippets" % libpath, ["snippets/*"]),
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
223 ("web", ["web/*.*"]),
66266fa The new setup.py placed webui_content in the wrong spot...
Alex Kesling authored Jun 30, 2010
224 ("%s" % webcontent, ["web/content/*.*"]),
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
225 ("web/cobbler_web", ["web/cobbler_web/*.*"]),
226 ("web/cobbler_web/templatetags",["web/cobbler_web/templatetags/*"]),
227 ("web/cobbler_web/templates", ["web/cobbler_web/templates/*"]),
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
228 ("%swebui_sessions" % libpath, []),
5fcea8c Add in /var/lib/cobbler/loaders
Scott Henson authored Jun 28, 2010
229 ("%sloaders" % libpath, []),
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
230 ("%scobbler/aux" % webroot, ["aux/*"]),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
231
232 #Configuration
233 ("%s" % etcpath, ["config/*"]),
234 ("%s" % etcpath, ["templates/etc/*"]),
d931171 Moved HEADER heredoc from action_buildiso.py to /etc/cobbler/iso/buil…
Glenn E. Bailey III authored Jul 6, 2011
235 ("%siso" % etcpath, ["templates/iso/*"]),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
236 ("%spxe" % etcpath, ["templates/pxe/*"]),
237 ("%sreporting" % etcpath, ["templates/reporting/*"]),
238 ("%spower" % etcpath, ["templates/power/*"]),
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
239 ("%sldap" % etcpath, ["templates/ldap/*"]),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
240
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
241 #Build empty directories to hold triggers
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
242 ("%striggers/add/distro/pre" % libpath, []),
243 ("%striggers/add/distro/post" % libpath, []),
244 ("%striggers/add/profile/pre" % libpath, []),
245 ("%striggers/add/profile/post" % libpath, []),
246 ("%striggers/add/system/pre" % libpath, []),
247 ("%striggers/add/system/post" % libpath, []),
248 ("%striggers/add/repo/pre" % libpath, []),
249 ("%striggers/add/repo/post" % libpath, []),
250 ("%striggers/add/mgmtclass/pre" % libpath, []),
251 ("%striggers/add/mgmtclass/post" % libpath, []),
252 ("%striggers/add/package/pre" % libpath, []),
253 ("%striggers/add/package/post" % libpath, []),
254 ("%striggers/add/file/pre" % libpath, []),
255 ("%striggers/add/file/post" % libpath, []),
256 ("%striggers/delete/distro/pre" % libpath, []),
257 ("%striggers/delete/distro/post" % libpath, []),
258 ("%striggers/delete/profile/pre" % libpath, []),
259 ("%striggers/delete/profile/post" % libpath, []),
260 ("%striggers/delete/system/pre" % libpath, []),
261 ("%striggers/delete/system/post" % libpath, []),
262 ("%striggers/delete/repo/pre" % libpath, []),
263 ("%striggers/delete/repo/post" % libpath, []),
264 ("%striggers/delete/mgmtclass/pre" % libpath, []),
265 ("%striggers/delete/mgmtclass/post" % libpath,[]),
266 ("%striggers/delete/package/pre" % libpath, []),
267 ("%striggers/delete/package/post" % libpath, []),
268 ("%striggers/delete/file/pre" % libpath, []),
269 ("%striggers/delete/file/post" % libpath, []),
270 ("%striggers/install/pre" % libpath, []),
271 ("%striggers/install/post" % libpath, []),
b0a1771 Add firstboot install trigger mode
Jonthan Sabo authored Mar 8, 2011
272 ("%striggers/install/firstboot" % libpath, []),
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
273 ("%striggers/sync/pre" % libpath, []),
274 ("%striggers/sync/post" % libpath, []),
275 ("%striggers/change" % libpath, []),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
276
277 #Build empty directories to hold the database
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
278 ("%sconfig" % libpath, []),
279 ("%sconfig/distros.d" % libpath, []),
280 ("%sconfig/images.d" % libpath, []),
281 ("%sconfig/profiles.d" % libpath, []),
282 ("%sconfig/repos.d" % libpath, []),
283 ("%sconfig/systems.d" % libpath, []),
284 ("%sconfig/mgmtclasses.d" % libpath, []),
285 ("%sconfig/packages.d" % libpath, []),
286 ("%sconfig/files.d" % libpath, []),
287
288 #Build empty directories to hold koan localconfig
289 ("/var/lib/koan/config", []),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
290
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
291 # logfiles
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
292 ("%scobbler/kicklog" % logpath, []),
293 ("%scobbler/syslog" % logpath, []),
294 ("%shttpd/cobbler" % logpath, []),
295 ("%scobbler/anamon" % logpath, []),
296 ("%skoan" % logpath, []),
297 ("%scobbler/tasks" % logpath, []),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
298
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
299 # spoolpaths
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
300 ("spool/koan", []),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
301
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
302 # web page directories that we own
86ca397 Reconfigured setup.py to now place config files and web ui content in…
Alex Kesling authored Jun 8, 2010
303 ("%scobbler/localmirror" % webroot, []),
304 ("%scobbler/repo_mirror" % webroot, []),
305 ("%scobbler/ks_mirror" % webroot, []),
306 ("%scobbler/ks_mirror/config" % webroot, []),
307 ("%scobbler/links" % webroot, []),
308 ("%scobbler/aux" % webroot, []),
b3213db @jmaas Bugfix: add the /var/www/cobbler/pub directory to setup.py. Calling b…
jmaas authored Nov 4, 2011
309 ("%scobbler/pub" % webroot, []),
27d7199 Fix some issues with clean installs of cobbler post build cleanup
Scott Henson authored Jun 25, 2010
310
5eb82f4 Dont install some things in the webroot and put the services script down
Scott Henson authored Jun 28, 2010
311 #A script that isn't really data, wsgi script
312 ("%scobbler/svc/" % webroot, ["scripts/services.py"]),
313
9cd4ade Added more useful files to setup.py and MANIFEST.in as well as extra
Alex Kesling authored Jun 8, 2010
314 # zone-specific templates directory
87ec75c @kelseyhightower Updating setup.py and spec file.
kelseyhightower authored Jul 13, 2010
315 ("%szone_templates" % etcpath, []),
230ff2e Massive overhaul of setup.py . Moved things around a little to clean up
Alex Kesling authored Jun 7, 2010
316 ]),
317 )
Something went wrong with that request. Please try again.