package_rpm: Fix attemptonly and suggest packages
authorMark Hatle <mark.hatle@windriver.com>
Fri, 12 Aug 2011 00:23:48 +0000 (19:23 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 12 Aug 2011 16:21:55 +0000 (17:21 +0100)
[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.)

(From OE-Core rev: 4fb6723ab1ee14cf539f0ef2df63a3ee1b978de6)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/package_rpm.bbclass

index 5c67f69..b15786d 100644 (file)
@@ -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