stop building source packages in a schroot; we don't need to anymore
[invirt/packages/invirt-dev.git] / invirtibuilder
index bf3b499..43f09f1 100755 (executable)
@@ -133,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))
@@ -220,7 +221,31 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
     pushes to the superproject.
     """
     superproject = os.path.join(b._REPO_DIR, 'invirt/packages.git')
+
     branch = b.pocketToGit(pocket)
+
+    if not b.pocketExists(pocket, superproject):
+        gitmodules = "\n"
+        gitmodules_hash = logAndRun(['git', 'hash-object', '-w', '--stdin'],
+                                    cwd=superproject,
+                                    stdin_str=gitmodules).strip()
+        tree_items = {'.gitmodules': "100644 blob "+gitmodules_hash}
+        new_tree = "\n".join("%s\t%s" % (v, k) for (k, v) in tree_items.iteritems())
+        new_tree_id = logAndRun(['git', 'mktree', '--missing'],
+                                cwd=superproject,
+                                stdin_str=new_tree).strip()
+        env2 = dict(os.environ)
+        env2['GIT_AUTHOR_NAME'] = config.build.tagger.name
+        env2['GIT_AUTHOR_EMAIL'] = config.build.tagger.email
+        env2['GIT_COMMITTER_NAME'] = config.build.tagger.name
+        env2['GIT_COMMITTER_EMAIL'] = config.build.tagger.email
+        new_commit = logAndRun(['git', 'commit-tree', new_tree_id],
+                               cwd=superproject,
+                               env=env2,
+                               stdin_str="Create new pocket").strip()
+        logAndRun(['git', 'update-ref', 'refs/heads/%s' % branch, new_commit],
+                  cwd=superproject)
+
     tree = logAndRun(['git', 'ls-tree', branch],
                      cwd=superproject).strip()
 
@@ -243,7 +268,7 @@ def updateSuperproject(pocket, package, commit, principal, version, env):
             gitmodules_hash = logAndRun(['git', 'hash-object', '-w', '--stdin'],
                                         cwd=superproject,
                                         stdin_str=gitmodules).strip()
-            tree_items[package] = "100644 blob "+gitmodules_hash
+            tree_items['.gitmodules'] = "100644 blob "+gitmodules_hash
 
     new_tree = "\n".join("%s\t%s" % (v, k) for (k, v) in tree_items.iteritems())
 
@@ -287,8 +312,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,
              ],
@@ -330,7 +355,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()
@@ -356,6 +381,8 @@ def build():
             env = dict(os.environ)
             env['GIT_COMMITTER_NAME'] = config.build.tagger.name
             env['GIT_COMMITTER_EMAIL'] = config.build.tagger.email
+            env['GIT_AUTHOR_NAME'] = principal.split('@')[0]
+            env['GIT_AUTHOR_EMAIL'] = principal
 
             # If validateBuild returns something other than True, then
             # it means we should copy from that pocket to our pocket.
@@ -391,7 +418,6 @@ def build():
                     # complains about not having an orig.tar.gz
                     logAndRun(['dpkg-buildpackage', '-us', '-uc', '-S'],
                               cwd=packagedir)
-
                     db.failed_stage = 'building binary packages'
                     sbuildAll(package, commit, b.pocketToDistro(pocket), workdir)
                     db.failed_stage = 'tagging submodule'
@@ -415,7 +441,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