classes/image: handle multilibs in complementary package lookup

For multilib the vendor string is altered, so we need to iterate over
all of the multilib vendors when we do the glob processing for
complementary packages.

(From OE-Core rev: ff01518c6667e1b6e87df4e5a435a701d0f38fa7)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>

In addition, the RPM package arch have been munged by adding the multilib
identifier.  This identifier needs to be stripped when generating the
installed_packages list for the complementary lookup code to work.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2012-12-14 16:40:33 -06:00
committed by Richard Purdie
parent caaabe6510
commit 84a5c63a57
2 changed files with 19 additions and 2 deletions

View File

@@ -113,6 +113,17 @@ python () {
bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp)))) bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp))))
d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features))) d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features)))
# Ensure we have the vendor list for complementary package handling
ml_vendor_list = ""
multilibs = d.getVar('MULTILIBS', True) or ""
for ext in multilibs.split():
eext = ext.split(':')
if len(eext) > 1 and eext[0] == 'multilib':
localdata = bb.data.createCopy(d)
vendor = localdata.getVar("TARGET_VENDOR_virtclass-multilib-" + eext[1], False)
ml_vendor_list += " " + vendor
d.setVar('MULTILIB_VENDORS', ml_vendor_list)
} }
python image_handler () { python image_handler () {
@@ -357,7 +368,10 @@ rootfs_install_complementary() {
if [ "$GLOBS" != "" ] ; then if [ "$GLOBS" != "" ] ; then
# Use the magic script to do all the work for us :) # Use the magic script to do all the work for us :)
oe-pkgdata-util glob ${TMPDIR}/pkgdata ${TARGET_VENDOR}-${TARGET_OS} ${WORKDIR}/installed_pkgs.txt "$GLOBS" > ${WORKDIR}/complementary_pkgs.txt : > ${WORKDIR}/complementary_pkgs.txt
for vendor in ${TARGET_VENDOR} ${MULTILIB_VENDORS} ; do
oe-pkgdata-util glob ${TMPDIR}/pkgdata $vendor-${TARGET_OS} ${WORKDIR}/installed_pkgs.txt "$GLOBS" >> ${WORKDIR}/complementary_pkgs.txt
done
# Install the packages, if any # Install the packages, if any
sed -i '/^$/d' ${WORKDIR}/complementary_pkgs.txt sed -i '/^$/d' ${WORKDIR}/complementary_pkgs.txt

View File

@@ -99,8 +99,11 @@ translate_smart_to_oe() {
if [ "$arch" = "$cmp_arch" -o "$fixed_arch" = "$cmp_arch" ]; then if [ "$arch" = "$cmp_arch" -o "$fixed_arch" = "$cmp_arch" ]; then
if [ "$mlib" = "default" ]; then if [ "$mlib" = "default" ]; then
new_pkg="$pkg" new_pkg="$pkg"
new_arch=$cmp_arch
else else
new_pkg="$mlib-$pkg" new_pkg="$mlib-$pkg"
# We need to strip off the ${mlib}_ prefix on the arch
new_arch=${cmp_arch#${mlib}_}
fi fi
# Workaround for bug 3565 # Workaround for bug 3565
# Simply look to see if we know of a package with that name, if not try again! # Simply look to see if we know of a package with that name, if not try again!
@@ -121,7 +124,7 @@ translate_smart_to_oe() {
#echo "$pkg -> $new_pkg" >&2 #echo "$pkg -> $new_pkg" >&2
if [ "$arg1" = "arch" ]; then if [ "$arg1" = "arch" ]; then
echo $new_pkg $cmp_arch $other echo $new_pkg $new_arch $other
else else
echo $new_pkg $other echo $new_pkg $other
fi fi