createrepo: implement support for recommends
Adds a flag into the output metadata to note recommends relationships in a way that should not break compatibility with clients that don't understand this flag. (From OE-Core rev: e7df818182e9e68b2e0fdede20a41d492b776a5b) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
a8cee41b3d
commit
5443525de8
|
@ -0,0 +1,71 @@
|
|||
createrepo: implement recommends support
|
||||
|
||||
Record against the corresponding requires entry in the output metadata
|
||||
if a dependency relationship is marked with the RPMSENSE_MISSINGOK flag
|
||||
(indicating it is a recommendation, rather than a hard dependency).
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
|
||||
|
||||
diff --git a/dumpMetadata.py b/dumpMetadata.py
|
||||
index 70bb2d8..e40e8ac 100644
|
||||
--- a/dumpMetadata.py
|
||||
+++ b/dumpMetadata.py
|
||||
@@ -319,6 +319,23 @@ class RpmMetaData:
|
||||
reqs.append(0)
|
||||
return reqs
|
||||
|
||||
+ def _checkMissingOk(self, flags):
|
||||
+ reqs=[]
|
||||
+ if flags is None:
|
||||
+ return reqs
|
||||
+
|
||||
+ if type(flags) is not types.ListType:
|
||||
+ flags = [flags]
|
||||
+ for flag in flags:
|
||||
+ newflag = flag
|
||||
+ if flag is not None:
|
||||
+ newflag = flag & rpm.RPMSENSE_MISSINGOK
|
||||
+ if newflag:
|
||||
+ reqs.append(1)
|
||||
+ else:
|
||||
+ reqs.append(0)
|
||||
+ return reqs
|
||||
+
|
||||
|
||||
def _correctVersion(self, vers):
|
||||
returnvers = []
|
||||
@@ -537,9 +554,10 @@ class RpmMetaData:
|
||||
tmpflags = self.hdr[rpm.RPMTAG_REQUIREFLAGS]
|
||||
flags = self._correctFlags(tmpflags)
|
||||
prereq = self._checkPreReq(tmpflags)
|
||||
+ missingok = self._checkMissingOk(tmpflags)
|
||||
ver = self._correctVersion(self.hdr[rpm.RPMTAG_REQUIREVERSION])
|
||||
if names is not None:
|
||||
- lst = zip(names, flags, ver, prereq)
|
||||
+ lst = zip(names, flags, ver, prereq, missingok)
|
||||
return self._uniq(lst)
|
||||
|
||||
def obsoletesList(self):
|
||||
@@ -692,7 +710,7 @@ def generateXML(doc, node, formatns, rpmObj, sumtype):
|
||||
depsList = rpmObj.depsList()
|
||||
if len(depsList) > 0:
|
||||
rpconode = format.newChild(formatns, 'requires', None)
|
||||
- for (name, flags, (e,v,r), prereq) in depsList:
|
||||
+ for (name, flags, (e,v,r), prereq, missingok) in depsList:
|
||||
entry = rpconode.newChild(formatns, 'entry', None)
|
||||
entry.newProp('name', name)
|
||||
if flags != 0:
|
||||
@@ -711,6 +729,8 @@ def generateXML(doc, node, formatns, rpmObj, sumtype):
|
||||
entry.newProp('rel', str(r))
|
||||
if prereq == 1:
|
||||
entry.newProp('pre', str(prereq))
|
||||
+ if missingok:
|
||||
+ entry.newProp('missingok', '1')
|
||||
|
||||
for file in rpmObj.usefulFiles():
|
||||
files = format.newChild(None, 'file', None)
|
||||
--
|
||||
1.7.9.5
|
||||
|
|
@ -6,12 +6,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
|
|||
|
||||
RDEPENDS_${PN}_class-native += "libxml2-native rpm-native"
|
||||
|
||||
PR = "r7"
|
||||
PR = "r8"
|
||||
|
||||
SRC_URI= "http://createrepo.baseurl.org/download/${BP}.tar.gz \
|
||||
file://fix-native-install.patch \
|
||||
file://python-scripts-should-use-interpreter-from-env.patch \
|
||||
file://createrepo-rpm549.patch \
|
||||
file://recommends.patch \
|
||||
file://rpm-createsolvedb.py \
|
||||
"
|
||||
|
||||
|
|
Loading…
Reference in New Issue