Update packaging to dh7
[invirt/packages/invirt-dev.git] / invirtibuilder
index 9260b1e..4aff352 100755 (executable)
@@ -56,6 +56,9 @@ def logAndRun(cmd, *args, **kwargs):
         del kwargs['stdout']
     kwargs['stderr'] = logfile
     logfile.write('---> Ran %s\n' % (cmd, ))
+    if 'stdin_str' in kwargs:
+        logfile.write('STDIN:\n')
+        logfile.write(kwargs['stdin_str'])
     logfile.write('STDERR:\n')
     output = c.captureOutput(cmd, *args, **kwargs)
     logfile.write('STDOUT:\n')
@@ -130,12 +133,13 @@ def sbuild(package, ref, distro, arch, workdir, arch_all=False):
     nmutag = b.distroToSuffix(distro)
     env = os.environ.copy()
     env['NMUTAG'] = nmutag
-
+    maintainer = "Invirt Autobuilder <%s>" % (config.contact,)
     # Run sbuild with a hack in place to append arbitrary versions
     args = ['perl', '-I/usr/share/invirt-dev', '-MSbuildHack',
             '/usr/bin/sbuild',
             '--binNMU=171717', '--make-binNMU=Build with sbuild',
-            '-v', '-d', distro, '--arch', arch]
+            '-v', '-d', distro, '-m', maintainer, 
+            '--arch', arch]
     if arch_all:
         args.append('-A')
     args.append(getDscName(package, ref))
@@ -199,8 +203,11 @@ def uploadBuild(pocket, workdir):
         except subprocess.CalledProcessError, e:
             if not force:
                 raise
-            package = deb822.Changes(open(changes).read())['Binary']
-            logAndRun(['reprepro-env', 'remove', apt, package])
+            changelog = deb822.Changes(open(changes).read())
+            packages = set(changelog['Binary'].split())
+            packages.add(changelog['Source'])
+            for package in packages:
+                logAndRun(['reprepro-env', 'remove', apt, package])
             logAndRun(upload)
 
 
@@ -235,7 +242,8 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
 \turl = ../packages/%s.git
 """ % (package, package, package)
             gitmodules_hash = logAndRun(['git', 'hash-object', '-w', '--stdin'],
-                                        cwd=superproject).strip()
+                                        cwd=superproject,
+                                        stdin_str=gitmodules).strip()
             tree_items[package] = "100644 blob "+gitmodules_hash
 
     new_tree = "\n".join("%s\t%s" % (v, k) for (k, v) in tree_items.iteritems())
@@ -280,8 +288,8 @@ def packageWorkdir(package, commit, build_id):
     workdir = tempfile.mkdtemp(prefix=("b%d-" % build_id))
     try:
         p_archive = subprocess.Popen(
-            ['git', 'archive',
-             '--remote=file://%s' % b.getRepo(package),
+            ['git', '--git-dir=%s' % (b.getRepo(package),),
+             'archive',
              '--prefix=%s/' % package,
              commit,
              ],
@@ -323,7 +331,7 @@ def build():
         db.pocket = pocket
         db.commit = commit
         db.principal = principal
-        database.session.save_or_update(db)
+        database.session.add(db)
         database.session.commit()
 
         database.session.begin()
@@ -408,7 +416,7 @@ def build():
             if logfile is not None:
                 logfile.close()
 
-            database.session.save_or_update(db)
+            database.session.add(db)
             database.session.commit()
 
             # Finally, now that everything is done, remove the