Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:steffens:lvermgeo:server
yum
yum-3.4.3-suse-missing-tags.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File yum-3.4.3-suse-missing-tags.patch of Package yum
Index: yum/mdparser.py =================================================================== --- yum/mdparser.py.orig +++ yum/mdparser.py @@ -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': Index: yum/packages.py =================================================================== --- yum/packages.py.orig +++ yum/packages.py @@ -28,6 +28,7 @@ import re import fnmatch import stat import warnings +import collections from subprocess import Popen, PIPE from rpmUtils import RpmUtilsError import rpmUtils.miscutils @@ -54,6 +55,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 +421,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 +628,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 +1139,10 @@ class YumAvailablePackage(PackageObject, msg += self._dump_requires() msg += self._dump_pco('conflicts') msg += self._dump_pco('obsoletes') + 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""" @@ -1358,6 +1379,22 @@ class YumHeaderPackage(YumAvailablePacka def _get_hdr(self): return self.hdr + def _filter_deps(self, name, flag, vers, andmask, resmask): + newname = [] + newflag = [] + newvers = [] + # backward compatibility fix for SLE 11: flag might be an int + # instead of a list, if there is exactly one entry for the + # corresponding tag + if not isinstance(flag, collections.Iterable): + flag = [flag] + 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) + def _populatePrco(self): "Populate the package object with the needed PRCO interface." @@ -1383,6 +1420,33 @@ class YumHeaderPackage(YumAvailablePacka prcotype = tag2prco[tag] self.prco[prcotype] = map(misc.share_data, zip(name,flag,vers)) + + 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: + 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 = 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", Index: yum/sqlitesack.py =================================================================== --- yum/sqlitesack.py.orig +++ yum/sqlitesack.py @@ -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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor