diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2012-04-12 16:21:23 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-04-13 12:05:03 +0100 |
commit | 08fb526c42e85c89135960344745e878c5fb633a (patch) | |
tree | 959298736781529429f7f8f067f8cc72b2094a35 /meta | |
parent | ae978e9671fdbcb31e306308bfb816b4bd2b2496 (diff) | |
download | openembedded-core-08fb526c42e85c89135960344745e878c5fb633a.tar.gz openembedded-core-08fb526c42e85c89135960344745e878c5fb633a.tar.bz2 openembedded-core-08fb526c42e85c89135960344745e878c5fb633a.tar.xz openembedded-core-08fb526c42e85c89135960344745e878c5fb633a.zip |
rpm: Ensure that we check both providename and filepaths
In lib/rpmts.c we need to make sure to look for missing dependencies,
such as /bin/sh, in both the providename and filepaths DB. Previously
the system would key off an initial '/' and only look in the filepaths DB.
This causes problems when a package such as "bash", has a Provides: /bin/sh.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch | 36 | ||||
-rw-r--r-- | meta/recipes-devtools/rpm/rpm_5.4.0.bb | 3 |
2 files changed, 38 insertions, 1 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch b/meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch new file mode 100644 index 000000000..8c01a3065 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch @@ -0,0 +1,36 @@ +lib/rpmts.c: Ensure that we check both providename and filepaths + +When looking up a missing dependencies, such as /bin/sh, we need to lookup +in both the providename and filepaths DB, not just the filepaths DB. + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +--- rpm-5.4.0.orig/lib/rpmts.c 2010-12-27 16:08:25.000000000 -0600 ++++ rpm-5.4.0/lib/rpmts.c 2012-04-12 15:01:12.990184067 -0500 +@@ -403,8 +403,8 @@ + if (sdb == NULL) + continue; + +- /* Look for a matching Provides: in suggested universe. */ +- rpmtag = (*keyp == '/' ? RPMTAG_FILEPATHS : RPMTAG_PROVIDENAME); ++ rpmtag = RPMTAG_PROVIDENAME; ++ do { + mi = rpmmiInit(sdb, rpmtag, keyp, keylen); + while ((h = rpmmiNext(mi)) != NULL) { + size_t hnamelen; +@@ -439,6 +439,15 @@ + bhnamelen = hnamelen; + } + mi = rpmmiFree(mi); ++ ++ if (bh == NULL && *keyp == '/' && rpmtag == RPMTAG_PROVIDENAME) { ++ rpmtag = RPMTAG_FILEPATHS; ++ continue; ++ } ++ ++ break; ++ } while (1); ++ + } + + /* Is there a suggested resolution? */ diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb index 4576f6762..a9c96287f 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb @@ -45,7 +45,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1" DEPENDS = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}" extrarpmdeps = "python perl file" extrarpmdeps_virtclass-native = "file-native" -PR = "r35" +PR = "r36" # rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed # in order to extract the distribution SRPM into a format we can extract... @@ -69,6 +69,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;ex file://fix_for_automake_1.11.2.patch \ file://pythondeps.sh \ file://rpmdeps-oecore.patch \ + file://rpm-resolvedep.patch \ " # file://rpm-autoconf.patch \ |