diff options
author | Colin Walters <walters@verbum.org> | 2010-02-23 22:23:34 -0500 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2010-02-23 22:23:34 -0500 |
commit | 002e5fd5df172148bf1ca3c05cf3d93c61a5c9eb (patch) | |
tree | 1c6c12360e8c23fca7784b751e97a8f46fb07b9e /fedpkg-pull-build-chain | |
parent | cee6a3708c0e71f928aa12f72ad22eda6029488b (diff) | |
download | fedpkg-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-x | fedpkg-pull-build-chain | 55 |
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) |