diff options
-rwxr-xr-x | mgagnome | 34 |
1 files changed, 28 insertions, 6 deletions
@@ -50,6 +50,8 @@ MEDIA="Core Release Source" URL="http://download.gnome.org/sources/" PKGROOT='~/pkgs' SLEEP_INITIAL=300 +SLEEP_REPEAT=30 +SLEEP_TIMES=20 re_majmin = re.compile(r'^([0-9]+\.[0-9]+).*') re_version = re.compile(r'([-.]|\d+|[^-.\d]+)') @@ -257,7 +259,7 @@ class SpecFile(object): else spec.sources() return dict((os.path.basename(name), name) for name, no, flags in srclist) - def update(self, version): + def update(self, version, force=False): """Update specfile (increase version)""" cur_version = self.version @@ -269,7 +271,7 @@ class SpecFile(object): if judgement < 5: print "WARNING: %s!" % (msg) - return False + if not force: return False # XXX - os.path.join is hackish if subprocess.check_output(["svn", "diff", os.path.join(self.path, '..')]) != '': @@ -302,9 +304,26 @@ class SpecFile(object): print "ERROR: Increased version to %s, but RPM doesn't agree!?!" % version return False + + # Try to download the new tarball various times and wait between attempts + tries = 0 + while tries < SLEEP_TIMES: + tries += 1 + try: + # Download new tarball + subprocess.check_call(['mgarepo', 'sync', '-d'], cwd=self.cwd) + break + except subprocess.CalledProcessError, e: + # mgarepo sync returns 1 if the tarball cannot be downloaded + if e.returncode != 1: + return False + + if tries == SLEEP_TIMES: + return False + + time.sleep(SLEEP_REPEAT) + try: - # Download new tarball - subprocess.check_call(['mgarepo', 'sync', '-d'], cwd=self.cwd) # Check patches still apply subprocess.check_call(['bm', '-p', '--nodeps'], cwd=self.cwd) except subprocess.CalledProcessError: @@ -600,7 +619,7 @@ def cmd_package_new_version(options, parser): # SpecFile class handles the actual version+release change s = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package)) print "%s => %s" % (s.version, options.version) - if not s.update(options.version): + if not s.update(options.version, force=options.force): sys.exit(1) # Check hash, if given @@ -734,6 +753,8 @@ def main(): subparser = subparsers.add_parser('increase', help='Increase version number') subparser.add_argument("package", help="Package name") subparser.add_argument("version", help="Version number") + subparser.add_argument("-f", "--force", action="store_true", dest="force", + help="Override warnings, just do it") subparser.add_argument("-u", "--upstream", action="store_true", dest="upstream", help="Package name reflects the upstream name") subparser.add_argument("-s", "--submit", action="store_true", dest="submit", @@ -743,7 +764,8 @@ def main(): subparser.add_argument("--hash", dest="hexdigest", help="Hexdigest of the hash") subparser.set_defaults( - func=cmd_package_new_version, submit=False, upstream=False, hexdigest=None, algo="sha256" + func=cmd_package_new_version, submit=False, upstream=False, hexdigest=None, algo="sha256", + force=False ) subparser = subparsers.add_parser('gnome-release-email', help='Submit packages based on GNOME ftp-release-list email') |