Hello community, here is the log from the commit of package yum for openSUSE:Factory checked in at 2014-02-28 16:22:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yum (Old) and /work/SRC/openSUSE:Factory/.yum.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yum" Changes: -------- --- /work/SRC/openSUSE:Factory/yum/yum.changes 2014-01-03 14:50:00.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yum.new/yum.changes 2014-02-28 16:22:10.000000000 +0100 @@ -1,0 +2,10 @@ +Mon Feb 24 18:53:37 UTC 2014 - [email protected] + +- minor change to the suse-missing-tags patch in order to fix bnc#841280 + +------------------------------------------------------------------- +Mon Feb 24 15:12:21 CET 2014 - [email protected] + +- adapt suse-missing-tags tags to new rpm weak dependency tags + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yum.spec ++++++ --- /var/tmp/diff_new_pack.LZAhPS/_old 2014-02-28 16:22:10.000000000 +0100 +++ /var/tmp/diff_new_pack.LZAhPS/_new 2014-02-28 16:22:10.000000000 +0100 @@ -93,7 +93,7 @@ %setup -q %patch1 -p1 %patch2 -p1 -%patch3 -p1 +%patch3 %patch6 -p1 %patch7 -p1 %patch8 -p1 ++++++ yum-3.4.3-suse-missing-tags.patch ++++++ --- /var/tmp/diff_new_pack.LZAhPS/_old 2014-02-28 16:22:10.000000000 +0100 +++ /var/tmp/diff_new_pack.LZAhPS/_new 2014-02-28 16:22:10.000000000 +0100 @@ -1,125 +1,129 @@ -diff -ru a/yum/packages.py b/yum/packages.py ---- a/yum/packages.py 2011-06-28 22:27:22.000000000 +0200 -+++ b/yum/packages.py 2012-02-23 09:56:09.814485258 +0100 -@@ -1121,6 +1121,8 @@ +--- ./yum/mdparser.py.orig 2014-02-25 11:04:36.905061790 +0000 ++++ ./yum/mdparser.py 2014-02-25 11:04:45.009061775 +0000 +@@ -155,7 +155,8 @@ class PrimaryEntry(BaseEntry): + p[name] = child.text + + elif name in ('provides', 'requires', 'conflicts', +- 'obsoletes'): ++ 'obsoletes', ++ 'suggests', 'enhances', 'recommends', 'supplements'): + self.prco[name] = self.getPrco(child) + + elif name == 'header-range': +--- ./yum/packages.py.orig 2014-02-25 11:04:36.910061790 +0000 ++++ ./yum/packages.py 2014-02-25 12:31:03.379052610 +0000 +@@ -54,6 +54,14 @@ except ImportError: + import pwd + import grp + ++# check if rpm has the new weakdeps tags ++_new_weakdeps = False ++try: ++ if rpm.RPMTAG_ENHANCENAME: ++ _new_weakdeps = True ++except: ++ pass ++ + def comparePoEVR(po1, po2): + """ + Compare two Package or PackageEVR objects. +@@ -412,6 +420,10 @@ class RpmBase(object): + self.prco['conflicts'] = [] # (name, flag, (e,v,r)) + self.prco['requires'] = [] # (name, flag, (e,v,r)) + self.prco['provides'] = [] # (name, flag, (e,v,r)) ++ self.prco['suggests'] = [] # (name, flag, (e,v,r)) ++ self.prco['enhances'] = [] # (name, flag, (e,v,r)) ++ self.prco['recommends'] = [] # (name, flag, (e,v,r)) ++ self.prco['supplements'] = [] # (name, flag, (e,v,r)) + self.files = {} + self.files['file'] = [] + self.files['dir'] = [] +@@ -615,6 +627,10 @@ class RpmBase(object): + provides = property(fget=lambda self: self.returnPrco('provides')) + obsoletes = property(fget=lambda self: self.returnPrco('obsoletes')) + conflicts = property(fget=lambda self: self.returnPrco('conflicts')) ++ suggests = property(fget=lambda self: self.returnPrco('suggests')) ++ enhances = property(fget=lambda self: self.returnPrco('enhances')) ++ recommends = property(fget=lambda self: self.returnPrco('recommends')) ++ supplements = property(fget=lambda self: self.returnPrco('supplements')) + provides_names = property(fget=lambda self: self.returnPrcoNames('provides')) + requires_names = property(fget=lambda self: self.returnPrcoNames('requires')) + conflicts_names = property(fget=lambda self: self.returnPrcoNames('conflicts')) +@@ -1122,6 +1138,10 @@ class YumAvailablePackage(PackageObject, msg += self._dump_requires() msg += self._dump_pco('conflicts') msg += self._dump_pco('obsoletes') -+ msg += self._dump_suggests_and_recommends() -+ msg += self._dump_enhances_and_supplements() ++ msg += self._dump_pco('suggests') ++ msg += self._dump_pco('enhances') ++ msg += self._dump_pco('recommends') ++ msg += self._dump_pco('supplements') msg += self._dump_files(True) if msg[-1] != '\n': msg += """\n""" -@@ -1173,11 +1175,110 @@ +@@ -1358,6 +1378,17 @@ class YumHeaderPackage(YumAvailablePacka + def _get_hdr(self): + return self.hdr - def _requires_with_pre(self): - raise NotImplementedError() -- -+ -+ # Rather than trying to stuff enhances, suggests, supplements and recommends -+ # into yum like the other tags, I'll save my sanity and just do it by hand. -+ def _dump_suggests_and_recommends(self): -+ msg = "" -+ suggests = "" -+ recommends = "" -+ names = self.hdr[rpm.RPMTAG_SUGGESTSNAME] -+ if not names: -+ return msg ++ def _filter_deps(self, name, flag, vers, andmask, resmask): ++ newname = [] ++ newflag = [] ++ newvers = [] ++ for (n, f, v) in zip(name, flag, vers): ++ if f & andmask == resmask: ++ newname.append(n) ++ newflag.append(f) ++ newvers.append(v) ++ return (newname, newflag, newvers) + -+ if type(names).__name__ != 'list': -+ names = [names] -+ -+ flags = self.hdr[rpm.RPMTAG_SUGGESTSFLAGS] -+ if type(flags).__name__ != 'list': -+ flags = [flags] -+ -+ versions = self.hdr[rpm.RPMTAG_SUGGESTSVERSION] -+ if type(versions).__name__ != 'list': -+ versions = [versions] + def _populatePrco(self): + "Populate the package object with the needed PRCO interface." + +@@ -1383,6 +1414,33 @@ class YumHeaderPackage(YumAvailablePacka + + prcotype = tag2prco[tag] + self.prco[prcotype] = map(misc.share_data, zip(name,flag,vers)) + -+ for i in range(len(names)): -+ name = names[i] -+ if name.startswith('rpmlib('): -+ continue -+ flag = flags[i] -+ flagstr = flagToString(flag) -+ (e,v,r) = stringToVersion(versions[i]) -+ entry = ''' <rpm:entry name="%s"''' % misc.to_xml(name, attrib=True) -+ if flagstr: -+ entry += ''' flags="%s"''' % misc.to_xml(flagstr, attrib=True) -+ if e: -+ entry += ''' epoch="%s"''' % misc.to_xml(e, attrib=True) -+ if v: -+ entry += ''' ver="%s"''' % misc.to_xml(v, attrib=True) -+ if r: -+ entry += ''' rel="%s"''' % misc.to_xml(r, attrib=True) -+ entry += "/>\n" -+ if flag & rpm.RPMSENSE_STRONG: -+ recommends += entry ++ tag2prco = { "SUGGEST": ( misc.share_data("suggests"), 1156, 1157, 1158, 1 << 27, 0), ++ "ENHANCE": ( misc.share_data("enhances"), 1159, 1160, 1161, 1 << 27, 0), ++ "RECOMMEND": ( misc.share_data("recommends"), 1156, 1157, 1158, 1 << 27, 1 << 27), ++ "SUPPLEMENT": ( misc.share_data("supplements"), 1159, 1160, 1161, 1 << 27, 1 << 27) } ++ for tag in tag2prco: ++ (prcotype, oldtagn, oldtagv, oldtagf, andmask, resmask) = tag2prco[tag] ++ name = None ++ if _new_weakdeps: ++ name = hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)] ++ if not name: ++ name = hdr[oldtagn] ++ if not name: ++ continue ++ (name, flag, vers) = self._filter_deps(name, hdr[oldtagf], hdr[oldtagv], andmask, resmask) + else: -+ suggests += entry -+ if suggests: -+ msg += "\n <rpm:suggests>\n" -+ msg += suggests -+ msg += " </rpm:suggests>\n" -+ if recommends: -+ msg += "\n <rpm:recommends>\n" -+ msg += recommends -+ msg += " </rpm:recommends>\n" -+ -+ return msg -+ -+ def _dump_enhances_and_supplements(self): -+ msg, enhances, supplements = "", "", "" -+ names = self.hdr[rpm.RPMTAG_ENHANCESNAME] -+ if not names: -+ return msg -+ if type(names).__name__ != 'list': -+ names = [names] -+ -+ flags = self.hdr[rpm.RPMTAG_ENHANCESFLAGS] -+ if type(flags).__name__ != 'list': -+ flags = [flags] -+ -+ versions = self.hdr[rpm.RPMTAG_ENHANCESVERSION] -+ if type(versions).__name__ != 'list': -+ versions = [versions] -+ -+ for i in range(len(names)): -+ name = names[i] -+ if name.startswith('rpmlib('): ++ flag = hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)] ++ vers = hdr[getattr(rpm, 'RPMTAG_%sVERSION' % tag)] ++ name = map(misc.share_data, name) ++ if not name: # empty or none or whatever, doesn't matter + continue -+ flag = flags[i] -+ flagstr = flagToString(flag) -+ (e,v,r) = stringToVersion(versions[i]) -+ entry = ''' <rpm:entry name="%s"''' % misc.to_xml(name, attrib=True) -+ if flagstr: -+ entry += ''' flags="%s"''' % misc.to_xml(flagstr, attrib=True) -+ if e: -+ entry += ''' epoch="%s"''' % misc.to_xml(e, attrib=True) -+ if v: -+ entry += ''' ver="%s"''' % misc.to_xml(v, attrib=True) -+ if r: -+ entry += ''' rel="%s"''' % misc.to_xml(r, attrib=True) -+ entry += "/>\n" -+ if flag & rpm.RPMSENSE_STRONG: -+ supplements += entry -+ else: -+ enhances += entry -+ if supplements: -+ msg += "\n <rpm:supplements>\n" -+ msg += supplements -+ msg += " </rpm:supplements>\n" -+ if enhances: -+ msg += "\n <rpm:enhances>\n" -+ msg += enhances -+ msg += " </rpm:enhances>\n" -+ return msg -+ - def _dump_requires(self): - """returns deps in XML format""" - mylist = self._requires_with_pre() -- - msg = "" - - if mylist: msg = "\n <rpm:requires>\n" ++ flag = map(rpmUtils.miscutils.flagToString, flag) ++ flag = map(misc.share_data, flag) ++ vers = map(rpmUtils.miscutils.stringToVersion, vers) ++ vers = map(lambda x: (misc.share_data(x[0]), misc.share_data(x[1]), ++ misc.share_data(x[2])), vers) ++ self.prco[prcotype] = map(misc.share_data, zip(name,flag,vers)) + + def tagByName(self, tag): + warnings.warn("tagByName() will go away in a furture version of Yum.\n", +--- ./yum/sqlitesack.py.orig 2014-02-25 11:04:36.922061790 +0000 ++++ ./yum/sqlitesack.py 2014-02-25 12:22:10.025053554 +0000 +@@ -179,7 +179,11 @@ class YumAvailablePackageSqlite(YumAvail + self.prco = { 'obsoletes': (), + 'conflicts': (), + 'requires': (), +- 'provides': () } ++ 'provides': (), ++ 'suggests': (), ++ 'enhances': (), ++ 'recommends': (), ++ 'supplements': () } + self.sack = repo.sack + self.repoid = repo.id + self.repo = repo -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
