From 73122396a5415d739aec9fb55adeece9d3d36ca6 Mon Sep 17 00:00:00 2001 From: Olav Vitters Date: Fri, 3 Aug 2012 05:18:24 +0000 Subject: add initial support for distro releases --- mgagnome | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) (limited to 'mgagnome') diff --git a/mgagnome b/mgagnome index 221cc38..c5e6b90 100755 --- a/mgagnome +++ b/mgagnome @@ -49,9 +49,6 @@ import datetime # packages --sort import itertools -MEDIA="Core Release Source" -URL="http://download.gnome.org/sources/" -PKGROOT='~/pkgs' SLEEP_INITIAL=180 SLEEP_REPEAT=30 SLEEP_TIMES=20 @@ -490,6 +487,7 @@ class Patch(object): class Upstream(object): + URL="http://download.gnome.org/sources/" limit = None def __init__(self): @@ -498,7 +496,7 @@ class Upstream(object): good_dir = re.compile('^[-A-Za-z0-9_+.]+/$') # Get the files - usock = urlopen.open(URL) + usock = urlopen.open(self.URL) parser = urllister() parser.feed(usock.read()) usock.close() @@ -514,8 +512,12 @@ class Upstream(object): class Downstream(object): re_file = re.compile(r'^(?P.*?)[_-](?:(?P([0-9]+[\.])*[0-9]+)-)?(?P([0-9]+[\.\-])*[0-9]+)\.(?P(?:tar\.|diff\.)?[a-z][a-z0-9]*)$') + MEDIA="Core Release Source" + PKGROOT='~/pkgs' + DISTRO=None + def __init__(self): - contents = subprocess.check_output(['urpmf', '--qf', '%name|%version|%files', '.', "--media", MEDIA], close_fds=True).strip("\n").splitlines() + contents = subprocess.check_output(['urpmf', '--qf', '%name|%version|%files', '.', "--media", self.MEDIA], close_fds=True).strip("\n").splitlines() FILES = {} TARBALLS = {} @@ -544,6 +546,17 @@ class Downstream(object): self.tarballs = TARBALLS self.files = FILES + @classmethod + def co(cls, package, cwd=None): + if cwd is None: + cwd = os.path.expanduser(cls.PKGROOT) + + cmd = ['mgarepo', 'co'] + if cls.DISTRO: + cmd.extend(('-d', cls.DISTRO)) + cmd.append(package) + return subprocess.check_call(cmd, cwd=cwd) + def get_downstream_from_upstream(self, upstream, version): if upstream not in self.tarballs: raise ValueError("No packages for upstream name: %s" % upstream) @@ -552,7 +565,7 @@ class Downstream(object): return self.tarballs[upstream].keys() # Directories packages are located in - root = os.path.expanduser(PKGROOT) + root = os.path.expanduser(self.PKGROOT) packages = {} for package in self.tarballs[upstream].keys(): @@ -560,7 +573,7 @@ class Downstream(object): # Checkout package to ensure the checkout reflects the latest changes try: - subprocess.check_call(['mgarepo', 'co', package], cwd=root) + self.co(package, cwd=root) except subprocess.CalledProcessError: raise ValueError("Multiple packages found and cannot checkout %s" % package) @@ -591,14 +604,15 @@ def write_file(path, data): os.rename(fdst.name, path) def cmd_co(options, parser): - root = os.path.expanduser(PKGROOT) - for package, module, package_version, spec_version, downstream_files in sorted(join_streams()): print "%s => %s" % (module, package) - subprocess.call(['mgarepo', 'co', package], cwd=root) + try: + Downstream.co(package) + except subprocess.CalledProcessError: + pass def join_streams(show_version=False, only_diff_version=False): - root = os.path.expanduser(PKGROOT) + root = os.path.expanduser(Downstream.PKGROOT) upstream = Upstream().names downstream = Downstream() @@ -636,7 +650,7 @@ def cmd_ls(options, parser): print def cmd_patches(options, parser): - root = os.path.expanduser(PKGROOT) + root = os.path.expanduser(Downstream.PKGROOT) for package, module, package_version, spec_version, downstream_files in sorted(join_streams()): for filename in downstream_files: @@ -667,12 +681,12 @@ def cmd_package_new_version(options, parser): package = options.package # Directories packages are located in - root = os.path.expanduser(PKGROOT) + root = os.path.expanduser(Downstream.PKGROOT) cwd = os.path.join(root, package) # Checkout package to ensure the checkout reflects the latest changes try: - subprocess.check_call(['mgarepo', 'co', package], cwd=root) + Downstream.co(package, cwd=root) except subprocess.CalledProcessError: sys.exit(1) @@ -803,6 +817,8 @@ def main(): parser.add_argument("-l", "--limit", type=argparse.FileType('r', 0), dest="limit_upstream", metavar="FILE", help="File containing upstream names") + parser.add_argument("-d", "--distro", action="store", dest="distro", + help="Distribution release") # SUBPARSERS subparsers = parser.add_subparsers(title='subcommands') @@ -878,6 +894,11 @@ def main(): if options.limit_upstream: Upstream.limit = set(options.limit_upstream.read().strip("\n").splitlines()) + if options.distro: + Downstream.PKGROOT = os.path.join('~/pkgs', options.distro) + Downstream.MEDIA = "Core Release %s Source" % options.distro + Downstream.DISTRO = options.distro + try: options.func(options, parser) except KeyboardInterrupt: -- cgit v1.2.1