Patchwork [3/3] package_rpm: Fix attemptonly and suggest packages

login
register
mail settings
Submitter Mark Hatle
Date Aug. 12, 2011, 1:14 a.m.
Message ID <411f1eab33f06b7d6ffa6b0890f89f531470f895.1313111544.git.mark.hatle@windriver.com>
Download mbox | patch
Permalink /patch/9687/
State New, archived
Headers show

Comments

Mark Hatle - Aug. 12, 2011, 1:14 a.m.
[YOCTO #1325] [YOCTO #1366]

Packages that were in the PACKAGE_ATTEMPTONLY and SUGGESTS were not
being properly found, which was causing image creation failures.

In PACKAGE_ATTEMPTONLY, when an item was not found, it caused an
error.  This should have been a note, followed by skipping the
package.

The SUGGESTS processing was simply broken.  It was using a
non-existant function, due to an apparently typo.

In addition to the above, the MLPREFIX processing was not being
done properly, preventing multilib packages from working in this
with PACKAGE_ATTEMPTONLY.  (SUGGESTS doesn't need this as the names
are munged when creating the packages.)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
 meta/classes/package_rpm.bbclass |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

Patch

diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 5c67f69..b15786d 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -257,10 +257,16 @@  package_install_internal_rpm () {
 		echo "Adding attempt only packages..."
 		for pkg in ${package_attemptonly} ; do
 			echo "Processing $pkg..."
-			pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf)
+			archvar=base_archs
+			ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,")
+			if [ "${ml_pkg}" != "${pkg}" ]; then
+				archvar=ml_archs
+			fi
+
+			pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg})
 			if [ -z "$pkg_name" ]; then
-				echo "Unable to find package $pkg!"
-				exit 1
+				echo "Note: Unable to find package $pkg ($ml_pkg) -- PACKAGE_INSTALL_ATTEMPTONLY"
+				continue
 			fi
 			echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}"
 			${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
@@ -297,8 +303,17 @@  package_install_internal_rpm () {
 			# Ohh there was a new one, we'll need to loop again...
 			loop=1
 			echo "Processing $pkg..."
-			pkg_name=$(resolve_package $pkg ${confbase}.conf)
-			if [ -z "$pkg_name" ]; then
+			found=0
+			for archvar in base_archs ml_archs ; do
+				pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${pkg})
+				if [ -n "$pkg_name" ]; then
+					found=1
+					break
+				fi
+			done
+
+			if [ $found -eq 0 ]; then
+				echo "Note: Unable to find package $pkg -- suggests"
 				echo "Unable to find package $pkg." >> "${WORKDIR}/temp/log.do_${task}_recommend.${PID}"
 				continue
 			fi