summaryrefslogtreecommitdiffstats
path: root/mgagnome
diff options
context:
space:
mode:
authorOlav Vitters <ovitters@mageia.org>2012-08-03 05:18:24 +0000
committerOlav Vitters <ovitters@mageia.org>2012-08-03 05:18:24 +0000
commit73122396a5415d739aec9fb55adeece9d3d36ca6 (patch)
treed4e6ddfbe256d4e602ec6e5a625507ea8ba7d727 /mgagnome
parentf216da23f397c2518f74ef80498aaaf3674c6155 (diff)
downloadmgagnome-73122396a5415d739aec9fb55adeece9d3d36ca6.tar
mgagnome-73122396a5415d739aec9fb55adeece9d3d36ca6.tar.gz
mgagnome-73122396a5415d739aec9fb55adeece9d3d36ca6.tar.bz2
mgagnome-73122396a5415d739aec9fb55adeece9d3d36ca6.tar.xz
mgagnome-73122396a5415d739aec9fb55adeece9d3d36ca6.zip
add initial support for distro releases
Diffstat (limited to 'mgagnome')
-rwxr-xr-xmgagnome49
1 files changed, 35 insertions, 14 deletions
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<module>.*?)[_-](?:(?P<oldversion>([0-9]+[\.])*[0-9]+)-)?(?P<version>([0-9]+[\.\-])*[0-9]+)\.(?P<format>(?: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: