summaryrefslogtreecommitdiffstats
path: root/fedpkg-pull-build-chain
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-02-23 22:23:34 -0500
committerColin Walters <walters@verbum.org>2010-02-23 22:23:34 -0500
commit002e5fd5df172148bf1ca3c05cf3d93c61a5c9eb (patch)
tree1c6c12360e8c23fca7784b751e97a8f46fb07b9e /fedpkg-pull-build-chain
parentcee6a3708c0e71f928aa12f72ad22eda6029488b (diff)
downloadfedpkg-make-pull-002e5fd5df172148bf1ca3c05cf3d93c61a5c9eb.tar.gz
fedpkg-make-pull-002e5fd5df172148bf1ca3c05cf3d93c61a5c9eb.tar.xz
fedpkg-make-pull-002e5fd5df172148bf1ca3c05cf3d93c61a5c9eb.zip
Yet more hacking
Diffstat (limited to 'fedpkg-pull-build-chain')
-rwxr-xr-xfedpkg-pull-build-chain55
1 files changed, 39 insertions, 16 deletions
diff --git a/fedpkg-pull-build-chain b/fedpkg-pull-build-chain
index 4c943b3..37d14e1 100755
--- a/fedpkg-pull-build-chain
+++ b/fedpkg-pull-build-chain
@@ -89,9 +89,27 @@ def main():
if filename.endswith('.src.rpm'):
print "Deleting old srpm: " + fpath
os.unlink(fpath)
+
+
+ mock_resultdir = os.path.join('_build', arg)
+ try:
+ os.makedirs(mock_resultdir)
+ except OSError, e:
+ # assume EEXIST,
+ for filename in os.listdir(mock_resultdir):
+ if filename == 'lastbuild-status':
+ continue
+ os.unlink(os.path.join(mock_resultdir, filename))
+
+ lastbuild_filepath = os.path.join(mock_resultdir, 'lastbuild-status')
+ if os.path.exists(lastbuild_filepath):
+ last_build_succeeded = open(lastbuild_filepath).read() == 'success'
+ else:
+ last_build_succeeded = False
+
print "Running fedpkg-make-pull"
args = ['fedpkg-make-pull']
- if force:
+ if force or not last_build_succeeded:
args.append('--force')
try:
check_call_verbose(args, stdout=sys.stdout, stderr=sys.stderr, cwd=release_dir)
@@ -99,25 +117,16 @@ def main():
print "Failed: " + unicode(e)
failed.append(arg)
continue
-
+
srpm = None
for filename in os.listdir(release_dir):
fpath = os.path.join(release_dir, filename)
if filename.endswith('.src.rpm'):
srpm = fpath
- if srpm is None:
- print "No SRPM, assuming no changes upstream"
+ if srpm is None and last_build_succeeded:
+ print "No updates and have a previous successful build, nothing to do"
continue
- mock_resultdir = os.path.join('_build', arg)
- try:
- os.makedirs(mock_resultdir)
- except OSError, e:
- # assume EEXIST, and clean out old results
- for filename in os.listdir(mock_resultdir):
- os.unlink(os.path.join(mock_resultdir, filename))
-
-
current_failed = False
for mockrelease in mockreleases:
try:
@@ -128,15 +137,29 @@ def main():
failed.append(arg)
break
if current_failed:
- continue
-
+ f = open(lastbuild_filepath, 'w')
+ f.write('failed')
+ f.close()
+ break
+
+ print "Successfully built %r" % (arg, )
+ print "Updating repository in %r" % (resultdir, )
+ linkname = os.path.join(resultdir, os.path.basename(srpm))
+ if not os.path.exists(linkname):
+ os.link(srpm, linkname)
for filename in os.listdir(mock_resultdir):
if not filename.endswith('.rpm'):
continue
src = os.path.join(mock_resultdir, filename)
linkname = os.path.join(resultdir, filename)
- print "Linking %r to %r" % (src, linkname)
+ if os.path.exists(linkname):
+ continue
os.link(src, linkname)
+ check_call_verbose(['createrepo', '.'], cwd=resultdir)
+
+ f = open(lastbuild_filepath, 'w')
+ f.write('success')
+ f.close()
if len(failed) > 0:
sys.exit(1)