comparison paint/package.py @ 49:85374a69cf89

call in foreground to avoid hang :(
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 10 May 2012 15:24:51 -0700
parents abfb267e8332
children daa35ff485c2
comparison
equal deleted inserted replaced
48:abfb267e8332 49:85374a69cf89
28 constructor takes the package 'src' 28 constructor takes the package 'src'
29 """ 29 """
30 30
31 def __init__(self, src): 31 def __init__(self, src):
32 self.src = src 32 self.src = src
33 self.verbose = True
33 34
34 # ephemeral data 35 # ephemeral data
35 self._tmppath = None 36 self._tmppath = None
36 self._egg_info_path = None 37 self._egg_info_path = None
37 self._build_path = None 38 self._build_path = None
38 self._pkg_info_path = None 39 self._pkg_info_path = None
39 40
40 # TODO: list of temporary files/directories to be deleted 41 # TODO: list of temporary files/directories to be deleted
41 42
43 def _log(self, message):
44 if self.verbose:
45 print '>>> %s' % message
46
42 def _path(self): 47 def _path(self):
43 """filesystem path to package directory""" 48 """filesystem path to package directory"""
44 49
45 print ">>> Getting path to package" 50 print ">>> _path:Getting path to package"
46 51
47 # return cached copy if it exists 52 # return cached copy if it exists
48 if self._tmppath: 53 if self._tmppath:
49 return self._tmppath 54 return self._tmppath
50 55
227 return dependencies 232 return dependencies
228 233
229 def extension(self): 234 def extension(self):
230 """filename extension of the package""" 235 """filename extension of the package"""
231 236
237 print ">>> extension:Getting package"
232 package = self.package() 238 package = self.package()
239 print ">>> extension:package=%s" % package
233 240
234 # determine the extension (XXX hacky) 241 # determine the extension (XXX hacky)
235 extensions = ('.tar.gz', '.zip', '.tar.bz2') 242 extensions = ('.tar.gz', '.zip', '.tar.bz2')
236 for ext in extensions: 243 for ext in extensions:
237 if package.endswith(ext): 244 if package.endswith(ext):
241 248
242 def package(self, destination=None): 249 def package(self, destination=None):
243 """ 250 """
244 repackage the package to ensure its actually in the right form 251 repackage the package to ensure its actually in the right form
245 and return the path to the destination 252 and return the path to the destination
246 - destination: if given, path to put the build in [TODO] 253 - destination: if given, path to put the build in
247 """ 254 """
255
256 self._log("package: Getting package directory, destination=%s" % repr(destination))
248 257
249 if self._build_path: 258 if self._build_path:
259 self._log("package: build_path already set: %s" % self._build_path)
250 if destination: 260 if destination:
251 shutil.copy(self._build_path, destination) 261 shutil.copy(self._build_path, destination)
252 return os.path.abspath(destination) 262 return os.path.abspath(destination)
253 263
254 # return cached copy 264 # return cached copy
255 return self._build_path 265 return self._build_path
256 266
257 path = self._path() 267 path = self._path()
258 dist = os.path.join(path, 'dist') 268 dist = os.path.join(path, 'dist')
269 self._log("package: dist directory: %s; (path=%s)" % (dist, path))
259 if os.path.exists(dist): 270 if os.path.exists(dist):
260 shutil.rmtree(dist) 271 shutil.rmtree(dist)
261 272
262 call([sys.executable, 'setup.py', 'sdist'], cwd=path, stdout=subprocess.PIPE) 273 command = [sys.executable, 'setup.py', 'sdist']
274 self._log("package: running: %s" % ' '.join(command))
275 call(command, cwd=path)
276 self._log("package: done running setup.py dist")
263 277
264 assert os.path.exists(dist) 278 assert os.path.exists(dist)
265 contents = os.listdir(dist) 279 contents = os.listdir(dist)
266 assert len(contents) == 1 280 assert len(contents) == 1
267 281