projects
/
invirt/packages/invirt-dev.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
build source packages in a chroot too
[invirt/packages/invirt-dev.git]
/
invirtibuilder
diff --git
a/invirtibuilder
b/invirtibuilder
index
2882272
..
4e73484
100755
(executable)
--- a/
invirtibuilder
+++ b/
invirtibuilder
@@
-56,6
+56,9
@@
def logAndRun(cmd, *args, **kwargs):
del kwargs['stdout']
kwargs['stderr'] = logfile
logfile.write('---> Ran %s\n' % (cmd, ))
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')
logfile.write('STDERR:\n')
output = c.captureOutput(cmd, *args, **kwargs)
logfile.write('STDOUT:\n')
@@
-199,8
+202,11
@@
def uploadBuild(pocket, workdir):
except subprocess.CalledProcessError, e:
if not force:
raise
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)
logAndRun(upload)
@@
-235,7
+241,8
@@
def updateSuperproject(pocket, package, commit, principal, version, env):
\turl = ../packages/%s.git
""" % (package, package, package)
gitmodules_hash = logAndRun(['git', 'hash-object', '-w', '--stdin'],
\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())
tree_items[package] = "100644 blob "+gitmodules_hash
new_tree = "\n".join("%s\t%s" % (v, k) for (k, v) in tree_items.iteritems())
@@
-267,7
+274,7
@@
def makeReadable(workdir):
os.chmod(workdir, 0755)
@contextlib.contextmanager
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
"""Checkout the package in a temporary working directory.
This context manager returns that working directory. The requested
@@
-277,11
+284,11
@@
def packageWorkdir(package, commit):
When the context wrapped with this context manager is exited, the
working directory is automatically deleted.
"""
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(
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,
],
'--prefix=%s/' % package,
commit,
],
@@
-371,7
+378,7
@@
def build():
# do the build ourselves
else:
db.failed_stage = 'checking out package source'
# 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)
db.failed_stage = 'preparing source package'
packagedir = os.path.join(workdir, package)
@@
-382,7
+389,9
@@
def build():
# If we were, we could use debuild and get nice
# environment scrubbing. Since we're not, debuild
# complains about not having an orig.tar.gz
# If we were, we could use debuild and get nice
# environment scrubbing. Since we're not, debuild
# complains about not having an orig.tar.gz
- logAndRun(['dpkg-buildpackage', '-us', '-uc', '-S'],
+ logAndRun(['schroot', '-c',
+ '%s-amd64-sbuild' % (b.pocketToDistro(pocket),),
+ '--', 'dpkg-buildpackage', '-us', '-uc', '-S'],
cwd=packagedir)
db.failed_stage = 'building binary packages'
cwd=packagedir)
db.failed_stage = 'building binary packages'