SOURCES: yum-missingok.patch (NEW) - understand the MISSINGOK flag
patrys
patrys at pld-linux.org
Sat May 26 21:17:20 CEST 2007
Author: patrys Date: Sat May 26 19:17:20 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- understand the MISSINGOK flag
---- Files affected:
SOURCES:
yum-missingok.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/yum-missingok.patch
diff -u /dev/null SOURCES/yum-missingok.patch:1.1
--- /dev/null Sat May 26 21:17:20 2007
+++ SOURCES/yum-missingok.patch Sat May 26 21:17:15 2007
@@ -0,0 +1,132 @@
+diff -ur yum-3.2.0/output.py yum-3.2.0-new/output.py
+--- yum-3.2.0/output.py 2007-01-21 21:21:37.000000000 +0100
++++ yum-3.2.0-new/output.py 2007-05-26 21:06:18.981804315 +0200
+@@ -268,6 +268,9 @@
+ appended = ' replacing %s.%s %s\n\n' % (obspo.name,
+ obspo.arch, obspo.printVer())
+ msg = msg+appended
++ for sug in txmbr.po.prco['suggests']:
++ appended = ' suggests %s\n\n' % prco_tuple_to_string(sug)
++ msg = msg+appended
+ totalmsg = totalmsg + msg
+
+ if pkglist:
+diff -ur yum-3.2.0/rpmUtils/miscutils.py yum-3.2.0-new/rpmUtils/miscutils.py
+--- yum-3.2.0/rpmUtils/miscutils.py 2007-04-08 05:56:54.000000000 +0200
++++ yum-3.2.0-new/rpmUtils/miscutils.py 2007-05-26 21:06:18.961805690 +0200
+@@ -299,6 +299,8 @@
+ return s
+
+ def flagToString(flags):
++ if flags & (1 << 19): return ('OPTIONAL', flagToString(flags & 0xf))
++
+ flags = flags & 0xf
+
+ if flags == 0: return None
+diff -ur yum-3.2.0/yum/packages.py yum-3.2.0-new/yum/packages.py
+--- yum-3.2.0/yum/packages.py 2007-04-26 00:19:28.000000000 +0200
++++ yum-3.2.0-new/yum/packages.py 2007-05-26 21:06:18.951806377 +0200
+@@ -183,6 +183,8 @@
+
+ def __init__(self):
+ self.prco = {}
++ self.prco['suggests'] = [] # (name, flag, (e,v,r))
++ self.prco['enhances'] = [] # (name, flag, (e,v,r))
+ self.prco['obsoletes'] = [] # (name, flag, (e,v,r))
+ self.prco['conflicts'] = [] # (name, flag, (e,v,r))
+ self.prco['requires'] = [] # (name, flag, (e,v,r))
+@@ -677,7 +679,6 @@
+
+ def _populatePrco(self):
+ "Populate the package object with the needed PRCO interface."
+-
+ tag2prco = { "OBSOLETE": "obsoletes",
+ "CONFLICT": "conflicts",
+ "REQUIRE": "requires",
+@@ -685,8 +686,8 @@
+ for tag in tag2prco.keys():
+ name = self.hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)]
+
+- lst = self.hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
+- flag = map(rpmUtils.miscutils.flagToString, lst)
++ flg = self.hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
++ flag = map(rpmUtils.miscutils.flagToString, flg)
+
+ lst = self.hdr[getattr(rpm, 'RPMTAG_%sVERSION' % tag)]
+ vers = map(rpmUtils.miscutils.stringToVersion, lst)
+@@ -694,6 +695,15 @@
+ prcotype = tag2prco[tag]
+ if name is not None:
+ self.prco[prcotype] = zip(name, flag, vers)
++ if prcotype in ('requires', 'provides'):
++ for dep in self.prco[prcotype]:
++ if type(dep[1]) is tuple and dep[1][0] == 'OPTIONAL':
++ self.prco[prcotype].remove(dep)
++ dep = (dep[0], dep[1][1], dep[2])
++ if prcotype == 'requires':
++ self.prco['suggests'].append(dep)
++ else:
++ self.prco['enhances'].append(dep)
+
+ def tagByName(self, tag):
+ warnings.warn("tagByName() will go away in a furture version of Yum.\n",
+diff -ur yum-3.2.0/yum/rpmsack.py yum-3.2.0-new/yum/rpmsack.py
+--- yum-3.2.0/yum/rpmsack.py 2007-04-27 15:16:12.000000000 +0200
++++ yum-3.2.0-new/yum/rpmsack.py 2007-05-26 21:06:18.908476022 +0200
+@@ -41,7 +41,13 @@
+ rpm.RPMTAG_CONFLICTFLAGS),
+ 'obsoletes' : (rpm.RPMTAG_OBSOLETENAME,
+ rpm.RPMTAG_OBSOLETEVERSION,
+- rpm.RPMTAG_OBSOLETEFLAGS)
++ rpm.RPMTAG_OBSOLETEFLAGS),
++ 'enhances' : (rpm.RPMTAG_ENHANCESNAME,
++ rpm.RPMTAG_ENHANCESVERSION,
++ rpm.RPMTAG_ENHANCESFLAGS),
++ 'suggests' : (rpm.RPMTAG_SUGGESTSNAME,
++ rpm.RPMTAG_SUGGESTSVERSION,
++ rpm.RPMTAG_SUGGESTSFLAGS)
+ }
+
+ def __init__(self, root='/'):
+diff -ur yum-3.2.0/yum/sqlitesack.py yum-3.2.0-new/yum/sqlitesack.py
+--- yum-3.2.0/yum/sqlitesack.py 2007-04-25 20:55:36.000000000 +0200
++++ yum-3.2.0-new/yum/sqlitesack.py 2007-05-26 21:06:18.951806377 +0200
+@@ -39,7 +39,9 @@
+ self.prco = { 'obsoletes': [],
+ 'conflicts': [],
+ 'requires': [],
+- 'provides': [] }
++ 'provides': [],
++ 'suggests': [],
++ 'enhances': [] }
+ self._files = {}
+ self.sack = repo.sack
+ self.repoid = repo.id
+@@ -187,9 +189,24 @@
+ self.pkgKey)
+ executeSQL(cur, query)
+ for ob in cur:
+- self.prco[prcotype].append((ob['name'], ob['flags'],
+- (ob['epoch'], ob['version'],
+- ob['release'])))
++ fl = ob['flags'].split(',')
++ if 'MISSINGOK' in fl:
++ fl.remove('MISSINGOK')
++ flags = ','.join(fl)
++ if not flags:
++ flags = None
++ if prcotype == 'requires':
++ self.prco['suggests'].append((ob['name'], flags,
++ (ob['epoch'], ob['version'],
++ ob['release'])))
++ elif prcotype == 'provides':
++ self.prco['enhances'].append((ob['name'], flags,
++ (ob['epoch'], ob['version'],
++ ob['release'])))
++ else:
++ self.prco[prcotype].append((ob['name'], ob['flags'],
++ (ob['epoch'], ob['version'],
++ ob['release'])))
+
+ return RpmBase.returnPrco(self, prcotype, printable)
+
================================================================
More information about the pld-cvs-commit
mailing list