Put the build number in the temporary directory builds happen in
[invirt/packages/invirt-dev.git] / invirtibuilder
index 3df3539..9260b1e 100755 (executable)
@@ -132,7 +132,7 @@ def sbuild(package, ref, distro, arch, workdir, arch_all=False):
     env['NMUTAG'] = nmutag
 
     # Run sbuild with a hack in place to append arbitrary versions
-    args = ['perl', '-I/usr/share/invirt-dev',
+    args = ['perl', '-I/usr/share/invirt-dev', '-MSbuildHack',
             '/usr/bin/sbuild',
             '--binNMU=171717', '--make-binNMU=Build with sbuild',
             '-v', '-d', distro, '--arch', arch]
@@ -218,7 +218,7 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
     tree = logAndRun(['git', 'ls-tree', branch],
                      cwd=superproject).strip()
 
-    tree_items = dict(k, v for v, k in (x.split("\t" for x in tree.split("\n"))))
+    tree_items = dict((k, v) for (v, k) in (x.split("\t") for x in tree.split("\n")))
 
     created = not (package in tree_items)
 
@@ -227,15 +227,15 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
     # If "created" is true, we need to check if the package is
     # mentioned in .gitmodules, and add it if not.
     if created:
-        gitmodules = c.captureOutput(['git', 'cat-file', 'blob', '%s:.gitmodules' % (branch)],
-                                     cwd=superproject)
+        gitmodules = logAndRun(['git', 'cat-file', 'blob', '%s:.gitmodules' % (branch)],
+                               cwd=superproject)
         if ('[submodule "%s"]' % (package)) not in gitmodules.split("\n"):
             gitmodules += """[submodule "%s"]
 \tpath = %s
 \turl = ../packages/%s.git
 """ % (package, package, package)
-            gitmodules_hash = c.captureOutput(['git', 'hash-object', '-w', '--stdin'],
-                                              cwd=superproject).strip()
+            gitmodules_hash = logAndRun(['git', 'hash-object', '-w', '--stdin'],
+                                        cwd=superproject).strip()
             tree_items[package] = "100644 blob "+gitmodules_hash
 
     new_tree = "\n".join("%s\t%s" % (v, k) for (k, v) in tree_items.iteritems())
@@ -248,10 +248,10 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
         commit_msg = 'Add %s at version %s'
     else:
         commit_msg = 'Update %s to version %s'
-    commit_msg = (commit_msg + '\n\n'
-                  'Requested by %s' % (package,
-                                       version.full_version,
-                                       principal))
+    commit_msg = ((commit_msg + '\n\n'
+                   'Requested by %s') % (package,
+                                         version.full_version,
+                                         principal))
     new_commit = logAndRun(
         ['git', 'commit-tree', new_tree_id, '-p', branch],
         cwd=superproject,
@@ -267,7 +267,7 @@ def makeReadable(workdir):
     os.chmod(workdir, 0755)
 
 @contextlib.contextmanager
-def packageWorkdir(package, commit):
+def packageWorkdir(package, commit, build_id):
     """Checkout the package in a temporary working directory.
 
     This context manager returns that working directory. The requested
@@ -277,7 +277,7 @@ def packageWorkdir(package, commit):
     When the context wrapped with this context manager is exited, the
     working directory is automatically deleted.
     """
-    workdir = tempfile.mkdtemp()
+    workdir = tempfile.mkdtemp(prefix=("b%d-" % build_id))
     try:
         p_archive = subprocess.Popen(
             ['git', 'archive',
@@ -371,7 +371,7 @@ def build():
             # do the build ourselves
             else:
                 db.failed_stage = 'checking out package source'
-                with packageWorkdir(package, commit) as workdir:
+                with packageWorkdir(package, commit, db.build_id) as workdir:
                     db.failed_stage = 'preparing source package'
                     packagedir = os.path.join(workdir, package)