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')
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)
\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())
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
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',
# 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)