Hello community, here is the log from the commit of package ketchup for openSUSE:Factory checked in at 2012-02-10 17:16:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ketchup (Old) and /work/SRC/openSUSE:Factory/.ketchup.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ketchup", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/ketchup/ketchup.changes 2011-09-23 02:06:44.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ketchup.new/ketchup.changes 2012-02-10 17:16:03.000000000 +0100 @@ -1,0 +2,5 @@ +Mon Sep 19 22:45:49 UTC 2011 - [email protected] + +- update to 1.0.1 version which handles the 3.0 kernel properly + +------------------------------------------------------------------- Old: ---- ketchup-0.9.8.tar.bz2 New: ---- ketchup-1.0.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ketchup.spec ++++++ --- /var/tmp/diff_new_pack.EjAlxQ/_old 2012-02-10 17:16:04.000000000 +0100 +++ /var/tmp/diff_new_pack.EjAlxQ/_new 2012-02-10 17:16:04.000000000 +0100 @@ -1,7 +1,7 @@ # -# spec file for package ketchup (Version 0.9.8) +# spec file for package ketchup # -# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ Name: ketchup -Version: 0.9.8 +Version: 1.0.1 Release: 101 License: GPL v2 or later BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ ketchup-0.9.8.tar.bz2 -> ketchup-1.0.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ketchup new/ketchup --- old/ketchup 2006-05-01 22:09:00.000000000 +0200 +++ new/ketchup 2011-05-18 18:25:56.000000000 +0200 @@ -1,9 +1,23 @@ #!/usr/bin/python # -# ketchup 0.9.8 -# http://selenic.com/ketchup/wiki +# ketchup 1.0.1 +# http://github.com/psomas/ketchup +# git://github.com/psomas/ketchup.git # -# Copyright 2004 Matt Mackall <[email protected]> +# Orignial code by: +# Copyright 2004 Matt Mackall <[email protected]> +# +# Added code for new RT location and maintained until 2011 by: +# Steven Rostedt <[email protected]> +# +# Now maintained by: +# Stratos Psomadakis <[email protected]> +# +# Contributors: +# Baruch Even <[email protected]> +# Pavel Machek <[email protected]> +# Johann Felix Soden <[email protected]> +# Carsten Emde <[email protected]> # # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. @@ -25,7 +39,7 @@ # gpg = '/weird/path/to/gpg' # -import re, sys, urllib, os, getopt, glob, shutil +import re, sys, urllib, os, getopt, glob, shutil, subprocess def error(*args): sys.stderr.write("ketchup: ") @@ -42,7 +56,6 @@ sys.stdout.write(" ".join(map(str, args))) sys.stdout.write("\n") - def fancyopts(args, options, state, syntax=''): long = [] short = '' @@ -119,10 +132,6 @@ try: return re.match(r'\d+\.\d+\.\d+\.(\d+)', ver).group(1) except: return None -def pretype(ver): - try: return re.match(r'\d+\.\d+\.\d+(\.\d+)?-((rc|pre)\d+)', ver).group(3) - except: return None - def prenum(ver): try: return int(re.match(r'\d+\.\d+\.\d+-((rc|pre)(\d+))', ver).group(3)) except: return None @@ -139,24 +148,24 @@ return v def forkname(ver): - try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+?)\d+)?', - ver).group(5) + try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-([a-zA-Z]+)(-)?(\d+)?)?', + ver).group(5) except: return None def forknum(ver): - try: return int( - re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+?)(\d+))?', - ver).group(6)) + try: return int(re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-([a-zA-Z]+)(-)?(\d+)?)?', + ver).group(7)) except: return None def fork(ver): - try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?(-(\w+))?', ver).group(4) + try: return re.match(r'\d+.\d+.\d+(\.\d+)?(-(rc|pre)\d+)?((\.\d+)?-(\w+(-)?(\d+)?))?', + ver).group(4) except: return None def get_ver(makefile): """ Read the version information from the specified makefile """ part = {} - parts = "VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION".split(' ') + parts = "VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION CKVERSION".split(' ') m = open(makefile) for l in m.readlines(): for p in parts: @@ -165,6 +174,14 @@ version = "%s.%s.%s" % tuple([part[p] for p in parts[:3]]) version += part.get("EXTRAVERSION","") + version += part.get("CKVERSION","") + + # required for -next patchset + try: n = open("localversion-next") + except: return version + + version += n.read()[:-1] + return version def get_localversion(): @@ -184,9 +201,6 @@ def compare_ver(a, b): """ Compare kernel versions a and b - - Note that -pre and -rc versions sort before the version they modify, - -pre sorts before -rc, -bk, -git, and -mm, etc. sort alphabetically. """ if a == b: return 0 @@ -196,8 +210,6 @@ if c: return c c = cmp(int(post(a) or 0), int(post(b) or 0)) if c: return c - c = cmp(pretype(a), pretype(b)) # pre sorts before rc - if c: return c c = cmp(prenum(a), prenum(b)) if c: return c c = cmp(forkname(a), forkname(b)) @@ -210,69 +222,70 @@ if m: n = m.group(1) return n -def latest_mm(url, pat): - url = kernel_url + '/people/akpm/patches/2.6/' - url += last(url) - part = last(url) - return part[:-1] +def latest_mmotm(url, pat): + for l in urllib.urlopen(url + "/broken-out/mm.patch").readlines(): + m = re.search('-EXTRAVERSION = (\S+)', l) + if m: n = m.group(1) + + latest = latest_dir(os.path.dirname(version_info['2.6-rc'][1]), ('patch-(.*%s).bz2' % n)) + + return latest + "-mm1" def latest_ck(url, pat): - url = "http://ck.kolivas.org/patches/2.6/pre-releases/" + url = "http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/" url += last(url) - part = last(url) - pre = part[:-1] + part = fork(last(url)) + stable = latest_dir(os.path.dirname(version_info['2.6'][1][0]), version_info['2.6'][2]) - url = "http://ck.kolivas.org/patches/2.6/" - url += last(url,"(2.6.*/)") - part = last(url) - rel = part[:-1] - - l = [pre, rel] - l.sort(compare_ver) - return l[-1] + return stable + part -def latest_dir(url, pat): - """Find the latest link matching pat at url after sorting""" +def latest_pf(url, pat): + url = "http://pf.natalenko.name/sources/" + url += last(url) + part = last(url,"(.*patch.*)") + part = re.search('\d+.\d+.\d+-pf\d+', part).group(0) + + return part + +def latest_dir_lt(url, pat): + """Find the latest link to the stable release series that is used local""" + cwd=os.getcwd() + lv = None + if os.path.isdir(options["directory"]): + os.chdir(options["directory"]) + try: + lv = get_ver('Makefile') + except: + lv = None + os.chdir(cwd) + if not lv: + qprint("No local version found. Use newest kernel release instead.") + return latest_dir(url, pat) + local_revbase = revbase(lv) p = [] + url = url % { "kernel_url": kernel_url } for l in urllib.urlopen(url).readlines(): m = re.search('"%s"' % pat, l) - if m: p.append(m.group(1)) + if m and revbase(m.group(1))==local_revbase: + p.append(m.group(1)) if not p: return None p.sort(compare_ver) return p[-1] -# mbligh is lazy and has a bunch of empty directories -def latest_mjb(url, pat): - url = kernel_url + '/people/mbligh/' - - # find the last Linus release and search backwards - l = [find_ver('2.6'), find_ver("2.6-pre")] - l.sort(compare_ver) - linus = l[-1] - +def latest_dir(url, pat): + """Find the latest link matching pat at url after sorting""" p = [] + url = url % { "kernel_url": kernel_url } for l in urllib.urlopen(url).readlines(): - m = re.search('"(2\.6\..*/)"', l) - if m: - v = m.group(1) - if compare_ver(v, linus) <= 0: - p.append(v) - - p.sort(compare_ver) - p.reverse() - - for ver in p: - mjb = latest_dir(url + ver, pat) - if mjb: return mjb + m = re.search('"%s"' % pat, l) + if m: p.append(m.group(1)) - return None + if not p: return None -def latest_26_tip(url, pat): - l = [find_ver('2.6'), find_ver('2.6-git'), find_ver('2.6-pre')] - l.sort(compare_ver) - return l[-1] + p.sort(compare_ver) + return p[-1] def find_info(ver): b = "%.1f" % tree(ver) @@ -283,7 +296,7 @@ if f: s = "%s-%s" % (b, f) elif p: - s = "%s-pre" % b + s = "%s-rc" % b return version_info[s] @@ -297,7 +310,10 @@ 'full': ver, 'tree': tree(ver), 'base': base(ver), - 'prebase': prebase(ver) + 'prebase': prebase(ver), + 'fork': fork(ver), + 'revbase': revbase(ver), + 'kernel_url': kernel_url } l = [] @@ -307,7 +323,12 @@ return l def patch_path(ver): - return os.path.join(archive, os.path.basename(version_urls(ver)[0])) + patch_name = os.path.basename(version_urls(ver)[0]) + if re.search(r'\d+\.\d+', patch_name) == None: + suf = re.search(r'\.tar\.(gz|(bz(\d+)?))', patch_name).group(0) + patch_name = re.sub(r'(\.tar\.(gz|(bz(\d+)?)))', "-%s%s" % (ver, suf), patch_name) + + return os.path.join(archive, patch_name) def download(url, f): qprint("Downloading %s" % os.path.basename(url)) @@ -322,10 +343,35 @@ else: e = os.system("%s -c -O %s %s" % (options["wget"], f + ".partial", url)) + if e & 255: + error("wget terminated by signal.") + sys.exit(1) if e: return None os.rename(f + ".partial", f) + return 1 +def check_if_gpg_key_available(url, f, sign): + if options["no-gpg"] or options["dry-run"] or not options["gpg-path"]: + return 1 + sf = f + sign + qprint("Check if GPG key is available...") + if not download(url + sign, sf): + error("signature download failed") + return 0 + + process= subprocess.Popen([options["gpg-path"], "--no-tty", "--batch", "--verify",sf,sf], + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + output, unused_err = process.communicate() + r = process.poll() + if r == 2: # key is not available + qprint(output) + error("The GPG key seems not to be in the keyring. Please fix this and try again.") + qprint("In the case potential malicious kernel code is not a problem,\n" + "you can skip the verifying by using --no-gpg.") + return -1 + if r < 0: # killed by signal + return -1 return 1 def verify(url, f, sign): @@ -333,7 +379,7 @@ return 1 sf = f + sign - if not download(url + sign, sf): + if not os.path.isfile(sf) and not download(url + sign, sf): error("signature download failed") error("removing files...") os.unlink(f) @@ -352,6 +398,12 @@ def trydownload(urls, f, sign): for url in urls: + if sign: + result=check_if_gpg_key_available(url, f, sign) + if result < 0: # gpg key not available + return None + elif result==0: # download failed + continue if download(url, f): if not sign or verify(url, f, sign): return f @@ -361,6 +413,11 @@ if download(url2, f2): if not sign or verify(url2, f2, sign): return f2 + f2 = f[:-4] + url2 = url[:-4] + if download(url2, f2): + if not sign or verify(url2, f2, sign): + return f2 return None def get_patch(ver): @@ -368,10 +425,19 @@ f = patch_path(ver) if os.path.exists(f): return f + + if re.search(r'-mm1', ver) != None: + if pre(find_ver('2.6-rc')) != pre(ver): + error("-mm1 patchset can only be applied to the latest -rc release!") + sys.exit(-1) + if f[-4:] == ".bz2": f2 = f[:-4] + ".gz" if os.path.exists(f2): return f2 + f2 = f[:-4] + if os.path.exists(f2): + return f2 urls = version_urls(ver) sign = find_info(ver)[3] @@ -383,6 +449,35 @@ return f +def apply_mmotm(ver, reverse = 0): + if reverse: + err = os.system("quilt pop -a &> .patchdiag") + if err: + sys.stderr.write(open(".patchdiag").read()) + os.unlink(".patchdiag") + os.system("rm -rf patches .pc Next") + else: + old = os.getcwd() + os.mkdir("patches") + os.chdir("patches") + err = os.system("zcat %s | tar -xf -" % patch_path(ver)) + if err: + error("Unpacking failed: ", err) + os.chdir(old) + os.system("rm -rf patches") + sys.exit(-1) + + os.system("mv broken-out/*.patch ./") + + os.chdir(old) + + err = os.system("quilt push -a --leave-rejects &> .patchdiag") + if err: + sys.stderr.write(open(".patchdiag").read()) + os.unlink(".patchdiag") + + return err + def apply_patch(ver, reverse = 0): """Find the patch to upgrade from the predecessor of ver to ver and apply or reverse it.""" @@ -392,9 +487,12 @@ r = " -R" qprint("Applying %s%s" % (os.path.basename(p), r)) - if options["dry-run"]: + if options["dry-run"] or options["only-dl"]: return ver + if forkname(ver) == "mm": + return apply_mmotm(ver, reverse) + def cmd(patch, reverse, dry): base = "patch -l -p1%s" % reverse if dry: @@ -456,12 +554,13 @@ if not list or (options["full-tarball"] and list[0][0]): f = "linux-%s.tar.bz2" % ver url = "%s/v%s/%s" % (kernel_url, t, f) + url_longterm = "%s/v%s/longterm/v%s/%s" % (kernel_url, t, revbase(ver), f) f = archive + "/" + f sign = find_info(ver)[3] if sign == 1: sign = ".sign" - f = trydownload([url], f, sign) + f = trydownload([url, url_longterm], f, sign) if not f: error("Tarball download failed") sys.exit(-1) @@ -471,7 +570,7 @@ ver = list[0][2] qprint("Unpacking %s" % os.path.basename(f)) - if options["dry-run"]: return ver + if options["dry-run"] or options["only-dl"]: return ver untar(f) return ver @@ -506,7 +605,7 @@ apply_patch(a, 1) a = base(a) - if post(a) and post(a) != post(b): + if post(a) and (post(a) != post(b) or rev(a) != rev(b)): apply_patch(prebase(a), 1) ra, rb = rev(a), rev(b) @@ -546,70 +645,53 @@ # latest lookup function, canonical urls, pattern for lookup function, -# signature flag, description +# signature flag, description version_info = { '2.4': (latest_dir, - kernel_url + "/v2.4" + "/patch-%(base)s.bz2", + "%(kernel_url)s" + "/v2.4" + "/patch-%(base)s.bz2", r'patch-(.*?).bz2', 1, "old stable kernel series"), - '2.4-pre': (latest_dir, - kernel_url + "/v2.4" + "/testing/patch-%(prebase)s.bz2", - r'patch-(.*?).bz2', - 1, "old stable kernel series prereleases"), '2.6': (latest_dir, - kernel_url + "/v2.6" + "/patch-%(prebase)s.bz2", + ["%(kernel_url)s" + "/v2.6" + "/patch-%(prebase)s.bz2", + "%(kernel_url)s" + "/v2.6/longterm/v%(revbase)s/patch-%(prebase)s.bz2"], r'patch-(.*?).bz2', 1, "current stable kernel series"), + '2.6-lt': (latest_dir_lt, + ["%(kernel_url)s" + "/v2.6" + "/patch-%(prebase)s.bz2", + "%(kernel_url)s" + "/v2.6/longterm/v%(revbase)s/patch-%(prebase)s.bz2"], + r'patch-(.*?).bz2', + 1, "stable kernel series - update (only) to newer longterm stable releases (fourth number of 2.6 kernels)"), '2.6-rc': (latest_dir, - kernel_url + "/v2.6" + "/testing/patch-%(prebase)s.bz2", - r'patch-(.*?).bz2', - 1, "current stable kernel series prereleases"), - '2.6-pre': (latest_dir, - kernel_url + "/v2.6" + "/testing/patch-%(prebase)s.bz2", - r'patch-(.*?).bz2', - 1, "current stable kernel series prereleases"), + "%(kernel_url)s" + "/v2.6" + "/testing/patch-%(prebase)s.bz2", + r'patch-(.*?).bz2', + 1, "current stable kernel series prereleases"), '2.6-git': (latest_dir, - [kernel_url + "/v2.6" + "/snapshots/patch-%(full)s.bz2", - kernel_url + "/v2.6" + "/snapshots/old/patch-%(full)s.bz2"], + "%(kernel_url)s" + "/v2.6" + "/snapshots/patch-%(full)s.bz2", r'patch-(.*?).bz2', 1, "current stable kernel series snapshots"), - '2.6-bk': (latest_dir, - [kernel_url + "/v2.6" + "/snapshots/patch-%(full)s.bz2", - kernel_url + "/v2.6" + "/snapshots/old/patch-%(full)s.bz2"], - r'patch-(.*?).bz2', - 1, "old stable kernel series snapshots"), - '2.6-tip': (latest_26_tip, "", "", 1, - "current stable kernel series tip"), - '2.6-mm': (latest_mm, - kernel_url + "/people/akpm/patches/" + - "%(tree)s/%(prebase)s/%(full)s/%(full)s.bz2", "", - 1, "Andrew Morton's -mm development tree"), - '2.6-tiny': (latest_dir, - "http://www.selenic.com/tiny/%(full)s.patch.bz2", - r'(2.6.*?).patch.bz2', - 1, "Matt Mackall's -tiny tree for small systems"), - '2.6-mjb': (latest_mjb, - kernel_url + "/people/mbligh/%(prebase)s/patch-%(full)s.bz2", - r'patch-(2.6.*?).bz2', - 1, "Martin Bligh's random collection 'o crap"), '2.6-rt': (latest_dir, - ["http://people.redhat.com/mingo/" + - "realtime-preempt/patch-%(full)s", - "http://people.redhat.com/mingo/" + - "realtime-preempt/older/patch-%(full)s"], - r'patch-(2.6.*?)', + ["%(kernel_url)s" + "/projects/rt/patch-%(full)s.bz2", + "%(kernel_url)s" + "/projects/rt/older/patch-%(full)s.bz2"], + r'patch-(2.6.*?).bz2', 0, "Ingo Molnar's realtime-preempt kernel"), + '2.6-pf': (latest_pf, + "http://pf.natalenko.name/sources" + "/%(revbase)s" + + "/patch-%(full)s.bz2", + r'patch-(.*?).bz2', + 0, "-pf kernel patchset"), '2.6-ck': (latest_ck, - ["http://ck.kolivas.org/patches/2.6/" + - "%(prebase)s/%(full)s/patch-%(full)s.bz2", - "http://ck.kolivas.org/patches/2.6/pre-releases/" + - "%(prebase)s/%(full)s/patch-%(full)s.bz2"], - "", ".sig", - "Con Kolivas' patches for system responsiveness (desktop)"), - '2.6-cks': (latest_dir, - "http://ck.kolivas.org/patches/cks/patch-%(full)s.bz2", - r'patch-(2.6.*?).bz2', ".sig", - "Con Kolivas' patches for system responsiveness (server)") + "%(kernel_url)s" + "/people/ck/patches/2.6" + + "/%(revbase)s/%(revbase)s%(fork)s/patch-%(revbase)s%(fork)s.bz2", + "", 0, + "Con Kolivas' -ck patchset"), + '2.6-next': (latest_dir, + "%(kernel_url)s" + "/v2.6/next" + "/patch-v%(prebase)s%(fork)s.bz2", + r'patch-v(.*?).bz2', + 0, "linux-next tree"), + '2.6-mm': (latest_mmotm, + "http://userweb.kernel.org/~akpm/mmotm/broken-out.tar.gz", + r'broken-out.tar.gz', + 0, "-mmotm quilt patchset"), } # Override defaults with ~/.ketchuprc which is just a Python script @@ -643,6 +725,7 @@ ('l', 'list-trees', None, 'list supported trees'), ('m', 'show-makefile', None, 'output version in makefile <arg>'), ('n', 'dry-run', None, 'don\'t download or apply patches'), + ('o', 'only-dl', None, 'don\'t apply patches'), ('p', 'show-previous', None, 'output version previous to <arg>'), ('q', 'quiet', None, 'reduce output'), ('r', 'rename-directory', None, 'rename updated directory to %s<v>' @@ -676,10 +759,10 @@ l = version_info.keys() l.sort() for tree in l: - if version_info[tree][3] == 0: - lprint(tree, "(unsigned)") + if version_info[tree][3] == 0: + lprint(tree, "(unsigned)") else: - lprint(tree, "(signed)") + lprint(tree, "(signed)") lprint(" " + version_info[tree][4]) sys.exit(0) @@ -735,7 +818,7 @@ b = find_ver(args[0]) qprint("%s -> %s" % (a, b)) transform(a, b) -if options["rename-directory"] and not options["dry-run"]: +if options["rename-directory"] and not options["dry-run"] and not options["only-dl"] : rename_dir(b) if postcommand and os.system(postcommand): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ketchup.1 new/ketchup.1 --- old/ketchup.1 2006-04-13 22:30:33.000000000 +0200 +++ new/ketchup.1 2011-05-18 18:25:56.000000000 +0200 @@ -1,5 +1,5 @@ .\" Hey, EMACS: -*- nroff -*- -.TH KETCHUP 1 "April 12, 2006" +.TH KETCHUP 1 "February 16, 2010" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -27,7 +27,7 @@ .HP .B \-a .B \-\-archive -(/home/baruch/.ketchup) +(~/.ketchup) .IP cache directory .HP @@ -74,6 +74,11 @@ .IP don't download or apply patches .HP +.B \-o +.B \-\-only\-dl +.IP +don't apply patches +.HP .B \-p .B \-\-show\-previous .IP -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
