X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-dev.git/blobdiff_plain/78011666f8c604b24b673ef94d0c31bc6778ce91..refs/heads/glasgall-dev:/invirtibuilder diff --git a/invirtibuilder b/invirtibuilder index bf3b499..43f09f1 100755 --- a/invirtibuilder +++ b/invirtibuilder @@ -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