Skip to contentSkip to conversation

Two small fixes, pseudo and rpm

PATCH Applied Mark Hatle 4 participants 10 messages Apr 12, 2012 – Apr 13, 2012

lore
Share & tools
lore

Mark Hatle

author
#0 lore raw

cover Two small fixes, pseudo and rpm

pseudo was adding in an rpath, prevent that

rpm-native was not resolving dependencies that looked like possible filename properly.

The following changes since commit 71e95c744eaa4dda1b3237db2e13f666f121c92b:

package_rpm.bbclass: Set tmppath for rpm to somewhere which won't conflict with the rootfs (2012-04-12 21:24:55 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib mhatle/fixes
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=mhatle/fixes

Mark Hatle (2):
pseudo: Tell pseudo to avoid specifying an RPATH
rpm: Ensure that we check both providename and filepaths

 meta/recipes-devtools/pseudo/pseudo.inc            |    8 ++--
 meta/recipes-devtools/pseudo/pseudo_1.3.bb         |    2 +-
 meta/recipes-devtools/pseudo/pseudo_git.bb         |    2 +-
 meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch |   36 ++++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_5.4.0.bb             |    3 +-
 5 files changed, 44 insertions(+), 7 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch
Signature · 1 line
1.7.3.4
author
#1 lore raw

PATCH 1/2 pseudo: Tell pseudo to avoid specifying an RPATH

[Yocto #2251]

Add --without-rpath to avoid embedding rpaths into the pseudo components.

---
 meta/recipes-devtools/pseudo/pseudo.inc    |    8 ++++----
 meta/recipes-devtools/pseudo/pseudo_1.3.bb |    2 +-
 meta/recipes-devtools/pseudo/pseudo_git.bb |    2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)
meta/recipes-devtools/pseudo/pseudo.inc +4 -4
index 664a9b5..d5c33df 100644
@@ -29,9 +29,9 @@ NO32LIBS ??= "0"
 # Compile for the local machine arch...
 do_compile () {
 	if [ "${SITEINFO_BITS}" == "64" ]; then
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
 	else
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
 	fi
 	oe_runmake ${MAKEOPTS}
 }
@@ -42,7 +42,7 @@ do_compile () {
 do_compile_prepend_virtclass-native () {
 	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
 		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
 		oe_runmake ${MAKEOPTS} libpseudo
 		# prevent it from removing the lib, but remove everything else
 		make 'LIB=foo' ${MAKEOPTS} distclean 
@@ -52,7 +52,7 @@ do_compile_prepend_virtclass-native () {
 do_compile_prepend_virtclass-nativesdk () {
 	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
 		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
 		oe_runmake ${MAKEOPTS} libpseudo
 		# prevent it from removing the lib, but remove everything else
 		make 'LIB=foo' ${MAKEOPTS} distclean 
meta/recipes-devtools/pseudo/pseudo_1.3.bb +1 -1
index e7a329c..080b739 100644
@@ -1,6 +1,6 @@
 require pseudo.inc
 
-PR = "r7"
+PR = "r8"
 
 SRC_URI = "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
 
meta/recipes-devtools/pseudo/pseudo_git.bb +1 -1
index 9414c79..7857275 100644
@@ -2,7 +2,7 @@ require pseudo.inc
 
 SRCREV = "f0375c9aaefbccfd41aebbf6d332bb4d9e8f980c"
 PV = "1.3+git${SRCPV}"
-PR = "r22"
+PR = "r23"
 
 DEFAULT_PREFERENCE = "-1"
 
Signature · 1 line
1.7.3.4
#2 lore raw

Re: [PATCH 1/2] pseudo: Tell pseudo to avoid specifying an RPATH

Quoted 38 lines · Mark Hatle

[Yocto #2251]

Add --without-rpath to avoid embedding rpaths into the pseudo components.

---
  meta/recipes-devtools/pseudo/pseudo.inc    |    8 ++++----
  meta/recipes-devtools/pseudo/pseudo_1.3.bb |    2 +-
  meta/recipes-devtools/pseudo/pseudo_git.bb |    2 +-
  3 files changed, 6 insertions(+), 6 deletions(-)
meta/recipes-devtools/pseudo/pseudo.inc +3 -3
index 664a9b5..d5c33df 100644
@@ -29,9 +29,9 @@ NO32LIBS ??= "0"
  # Compile for the local machine arch...
  do_compile () {
  	if [ "${SITEINFO_BITS}" == "64" ]; then
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
  	else
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
  	fi
  	oe_runmake ${MAKEOPTS}
  }
@@ -42,7 +42,7 @@ do_compile () {
  do_compile_prepend_virtclass-native () {
  	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
  		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
  		oe_runmake ${MAKEOPTS} libpseudo
  		# prevent it from removing the lib, but remove everything else
  		make 'LIB=foo' ${MAKEOPTS} distclean

meta/recipes-devtools/pseudo/pseudo.inc do_compile_prepend_virtclass-native () { · line 55

Quoted 5 lines
meta/recipes-devtools/pseudo/pseudo.inc +1 -1
@@ -52,7 +52,7 @@ do_compile_prepend_virtclass-native () {
  do_compile_prepend_virtclass-nativesdk () {
  	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
  		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath

We might still need this rpath or something similar since the nativesdk now breaks not finding the correct version of the included libc.so.6

/opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr/bin/pseudo -P /opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr tar -C "/tmp/opt" -xjf "/intel/home/sgw/Downloads/core-image-minimal-qemux86-64.tar.bz2"
tar: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr/lib/pseudo/lib64/libpseudo.so)

See also bug 1968

I do have a libc.so.6.

/opt/poky/1.2/sysroots/x86_64-pokysdk-linux/lib/libc.so.6 -> libc-2.15.so

Sau!

Quoted 28 lines
meta/recipes-devtools/pseudo/pseudo.inc +0 -0
  		oe_runmake ${MAKEOPTS} libpseudo
  		# prevent it from removing the lib, but remove everything else
  		make 'LIB=foo' ${MAKEOPTS} distclean
meta/recipes-devtools/pseudo/pseudo_1.3.bb +1 -1
index e7a329c..080b739 100644
@@ -1,6 +1,6 @@
  require pseudo.inc
 
-PR = "r7"
+PR = "r8"
 
  SRC_URI = "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
 
meta/recipes-devtools/pseudo/pseudo_git.bb +1 -1
index 9414c79..7857275 100644
@@ -2,7 +2,7 @@ require pseudo.inc
 
  SRCREV = "f0375c9aaefbccfd41aebbf6d332bb4d9e8f980c"
  PV = "1.3+git${SRCPV}"
-PR = "r22"
+PR = "r23"
 
  DEFAULT_PREFERENCE = "-1"
 
author
#3 lore raw

Re: [PATCH 1/2] pseudo: Tell pseudo to avoid specifying an RPATH

Quoted 38 lines · Saul Wold
Quoted 37 lines · Mark Hatle

[Yocto #2251]

Add --without-rpath to avoid embedding rpaths into the pseudo components.

---
   meta/recipes-devtools/pseudo/pseudo.inc    |    8 ++++----
   meta/recipes-devtools/pseudo/pseudo_1.3.bb |    2 +-
   meta/recipes-devtools/pseudo/pseudo_git.bb |    2 +-
   3 files changed, 6 insertions(+), 6 deletions(-)
meta/recipes-devtools/pseudo/pseudo.inc +3 -3
index 664a9b5..d5c33df 100644
@@ -29,9 +29,9 @@ NO32LIBS ??= "0"
   # Compile for the local machine arch...
   do_compile () {
   	if [ "${SITEINFO_BITS}" == "64" ]; then
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
   	else
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite
+	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
   	fi
   	oe_runmake ${MAKEOPTS}
   }
@@ -42,7 +42,7 @@ do_compile () {
   do_compile_prepend_virtclass-native () {
   	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
   		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
   		oe_runmake ${MAKEOPTS} libpseudo
   		# prevent it from removing the lib, but remove everything else
   		make 'LIB=foo' ${MAKEOPTS} distclean
Quoted 8 lines

meta/recipes-devtools/pseudo/pseudo.inc do_compile_prepend_virtclass-native () { · line 55

Quoted 6 lines
meta/recipes-devtools/pseudo/pseudo.inc +1 -1
@@ -52,7 +52,7 @@ do_compile_prepend_virtclass-native () {
   do_compile_prepend_virtclass-nativesdk () {
   	if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
   		# We need the 32-bit libpseudo on a 64-bit machine...
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath

We might still need this rpath or something similar since the nativesdk now breaks not finding the correct version of the included libc.so.6

In this case, I don't think embedding a static RPATH makes sense, but perhaps a $ORIGIN path might?

Can chrpath be used to add an rpath after compilation and linking, if so that is what I would suggest to do. Otherwise I'm not exactly sure how to resolve this...

Note, typically pseudo is -not- linked the "sdk" version of the libc, but is linked to the host libc. In the past when exporting and sdk with something like pseudo you needed to either build on a common machine (where everything was compatible) or have a way to rebuild pseudo on the final target system. Perhaps that is what is needed?

--Mark

Quoted 43 lines

/opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr/bin/pseudo -P /opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr tar -C "/tmp/opt" -xjf "/intel/home/sgw/Downloads/core-image-minimal-qemux86-64.tar.bz2"
tar: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /opt/poky/1.2/sysroots/x86_64-pokysdk-linux/usr/lib/pseudo/lib64/libpseudo.so)

See also bug 1968

I do have a libc.so.6.

/opt/poky/1.2/sysroots/x86_64-pokysdk-linux/lib/libc.so.6 -> libc-2.15.so

Sau!

Quoted 28 lines
meta/recipes-devtools/pseudo/pseudo.inc +0 -0
   		oe_runmake ${MAKEOPTS} libpseudo
   		# prevent it from removing the lib, but remove everything else
   		make 'LIB=foo' ${MAKEOPTS} distclean
meta/recipes-devtools/pseudo/pseudo_1.3.bb +1 -1
index e7a329c..080b739 100644
@@ -1,6 +1,6 @@
   require pseudo.inc
 
-PR = "r7"
+PR = "r8"
 
   SRC_URI = "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
 
meta/recipes-devtools/pseudo/pseudo_git.bb +1 -1
index 9414c79..7857275 100644
@@ -2,7 +2,7 @@ require pseudo.inc
 
   SRCREV = "f0375c9aaefbccfd41aebbf6d332bb4d9e8f980c"
   PV = "1.3+git${SRCPV}"
-PR = "r22"
+PR = "r23"
 
   DEFAULT_PREFERENCE = "-1"
 
#4 lore raw

Re: [PATCH 1/2] pseudo: Tell pseudo to avoid specifying an RPATH

Quoted 6 lines · Mark Hatle
Quoted 2 lines

We might still need this rpath or something similar since the nativesdk now breaks not finding the correct version of the included libc.so.6

In this case, I don't think embedding a static RPATH makes sense, but perhaps a $ORIGIN path might?

Quoted 8 lines

Can chrpath be used to add an rpath after compilation and linking, if so that is what I would suggest to do. Otherwise I'm not exactly sure how to resolve this...

Note, typically pseudo is -not- linked the "sdk" version of the libc, but is linked to the host libc. In the past when exporting and sdk with something like pseudo you needed to either build on a common machine (where everything was compatible) or have a way to rebuild pseudo on the final target system. Perhaps that is what is needed?

We need to embed a full static rpath and then our nativesdk relocation code will then handle adding in the correct $ORIGIN for us.

The way the sdk works, it will link against the sdk libc btw and this avoids the need to rebuild on the target system. We just need the rpath in there so it can figure things out correctly.

Cheers,

Richard

author
#5 lore raw

Re: [PATCH 1/2] pseudo: Tell pseudo to avoid specifying an RPATH

Quoted 16 lines · Richard Purdie
Quoted 6 lines · Mark Hatle
Quoted 2 lines

We might still need this rpath or something similar since the nativesdk now breaks not finding the correct version of the included libc.so.6

In this case, I don't think embedding a static RPATH makes sense, but perhaps a $ORIGIN path might?

Quoted 8 lines

Can chrpath be used to add an rpath after compilation and linking, if so that is what I would suggest to do. Otherwise I'm not exactly sure how to resolve this...

Note, typically pseudo is -not- linked the "sdk" version of the libc, but is linked to the host libc. In the past when exporting and sdk with something like pseudo you needed to either build on a common machine (where everything was compatible) or have a way to rebuild pseudo on the final target system. Perhaps that is what is needed?

Quoted 6 lines

We need to embed a full static rpath and then our nativesdk relocation code will then handle adding in the correct $ORIGIN for us.

The way the sdk works, it will link against the sdk libc btw and this avoids the need to rebuild on the target system. We just need the rpath in there so it can figure things out correctly.

Ha, that is what we had (unintentionally) that triggered the QA failure.

If it's only for a nativesdk build, then we simply switch the --without-rpath

--Mark

Quoted 11 lines

Cheers,

Richard

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

#6 lore raw

Re: [PATCH 1/2] pseudo: Tell pseudo to avoid specifying an RPATH

Quoted 20 lines · Mark Hatle
Quoted 19 lines · Richard Purdie
Quoted 6 lines · Mark Hatle
Quoted 2 lines

We might still need this rpath or something similar since the nativesdk now breaks not finding the correct version of the included libc.so.6

In this case, I don't think embedding a static RPATH makes sense, but perhaps a $ORIGIN path might?

Quoted 8 lines

Can chrpath be used to add an rpath after compilation and linking, if so that is what I would suggest to do. Otherwise I'm not exactly sure how to resolve this...

Note, typically pseudo is -not- linked the "sdk" version of the libc, but is linked to the host libc. In the past when exporting and sdk with something like pseudo you needed to either build on a common machine (where everything was compatible) or have a way to rebuild pseudo on the final target system. Perhaps that is what is needed?

We need to embed a full static rpath and then our nativesdk relocation code will then handle adding in the correct $ORIGIN for us.

Quoted 7 lines
Quoted 3 lines

The way the sdk works, it will link against the sdk libc btw and this avoids the need to rebuild on the target system. We just need the rpath in there so it can figure things out correctly.

Ha, that is what we had (unintentionally) that triggered the QA failure.

If it's only for a nativesdk build, then we simply switch the --without-rpath

Maybe, maybe not. It depends exactly what rpath its encoding in there. Previously it looked like it was encoding the sysroot path too (which is a security hole). We need a target rpath in there and no sysroot path.

Cheers,

Richard

author
#7 lore raw

PATCH 2/2 rpm: Ensure that we check both providename and filepaths

In reply to Mark Hatle

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.

---
 meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch |   36 ++++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_5.4.0.bb             |    3 +-
 2 files changed, 38 insertions(+), 1 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch
meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch new file +36 -0
new file mode 100644
index 0000000..8c01a30
@@ -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 <[email protected]>
+
+--- 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? */
meta/recipes-devtools/rpm/rpm_5.4.0.bb +2 -1
index 4576f67..a9c9628 100644
@@ -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 \
Signature · 1 line
1.7.3.4
Tested-by on v1 2/2
#8 lore raw

Re: [PATCH 2/2] rpm: Ensure that we check both providename and filepaths

Quoted 7 lines · Mark Hatle

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.

Applied
#9 lore raw
In reply to Mark Hatle
Quoted 18 lines · Mark Hatle

pseudo was adding in an rpath, prevent that

rpm-native was not resolving dependencies that looked like possible filename properly.

The following changes since commit 71e95c744eaa4dda1b3237db2e13f666f121c92b:

package_rpm.bbclass: Set tmppath for rpm to somewhere which won't conflict with the rootfs (2012-04-12 21:24:55 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib mhatle/fixes
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=mhatle/fixes

Mark Hatle (2):
pseudo: Tell pseudo to avoid specifying an RPATH
rpm: Ensure that we check both providename and filepaths

Quoted 8 lines
  meta/recipes-devtools/pseudo/pseudo.inc            |    8 ++--
  meta/recipes-devtools/pseudo/pseudo_1.3.bb         |    2 +-
  meta/recipes-devtools/pseudo/pseudo_git.bb         |    2 +-
  meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch |   36 ++++++++++++++++++++
  meta/recipes-devtools/rpm/rpm_5.4.0.bb             |    3 +-
  5 files changed, 44 insertions(+), 7 deletions(-)

create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-resolvedep.patch

Merged into OE-Core

Thanks
Sau!