a6aa74817c
The variable MULTILIB_PACKAGE_ARCHS has been removed in favor of a repurposed MULTILIB_PREFIX_LIST. The format of this item is now <libid>:<arch>:<arch1>:...:<archN>. This ensures that we can correctly translate the libid to one of the supported archs in a tri-lib system. All of the users of MULTILIB_PREFIX_LIST and MULTILIB_PACKAGE_ARCHS have been modified accordingly. Also change the way attempted packages are installed, verify the package exists in the translate functions, then perform the install in one single operation. This results in a significantly faster install time. (From OE-Core rev: ffe6cf3a1c57defdbe8531bdeb588e199177bb6c) 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>
128 lines
4.3 KiB
Text
128 lines
4.3 KiB
Text
# Smart is python based, so be sure python-native is available to us.
|
|
EXTRANATIVEPATH += "python-native"
|
|
|
|
do_populate_sdk[depends] += "rpm-native:do_populate_sysroot"
|
|
do_populate_sdk[depends] += "rpmresolve-native:do_populate_sysroot"
|
|
do_populate_sdk[depends] += "python-smartpm-native:do_populate_sysroot"
|
|
|
|
# Needed for update-alternatives
|
|
do_populate_sdk[depends] += "opkg-native:do_populate_sysroot"
|
|
|
|
# Creating the repo info in do_rootfs
|
|
do_populate_sdk[depends] += "createrepo-native:do_populate_sysroot"
|
|
|
|
do_populate_sdk[recrdeptask] += "do_package_write_rpm"
|
|
|
|
rpmlibdir = "/var/lib/rpm"
|
|
RPMOPTS="--dbpath ${rpmlibdir}"
|
|
RPM="rpm ${RPMOPTS}"
|
|
|
|
do_populate_sdk[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
|
|
|
|
populate_sdk_post_rpm () {
|
|
|
|
local target_rootfs=$1
|
|
|
|
# remove lock files
|
|
rm -f ${target_rootfs}/__db.*
|
|
|
|
# Remove all remaining resolver files
|
|
rm -rf ${target_rootfs}/install
|
|
rm -rf ${target_rootfs}/var/lib/smart
|
|
}
|
|
|
|
populate_sdk_rpm () {
|
|
|
|
package_update_index_rpm
|
|
|
|
## install target ##
|
|
# This needs to work in the same way as rootfs_rpm.bbclass!
|
|
#
|
|
export INSTALL_ROOTFS_RPM="${SDK_OUTPUT}/${SDKTARGETSYSROOT}"
|
|
export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
|
|
export INSTALL_PACKAGES_RPM="${TOOLCHAIN_TARGET_TASK}"
|
|
export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${TOOLCHAIN_TARGET_TASK_ATTEMPTONLY}"
|
|
export INSTALL_PACKAGES_LINGUAS_RPM=""
|
|
export INSTALL_PROVIDENAME_RPM=""
|
|
export INSTALL_TASK_RPM="populate_sdk-target"
|
|
export INSTALL_COMPLEMENTARY_RPM=""
|
|
export INTERCEPT_DIR=${WORKDIR}/intercept_scripts
|
|
export NATIVE_ROOT=${STAGING_DIR_NATIVE}
|
|
|
|
# Setup base system configuration
|
|
mkdir -p ${INSTALL_ROOTFS_RPM}/etc/rpm/
|
|
|
|
# List must be prefered to least preferred order
|
|
INSTALL_PLATFORM_EXTRA_RPM=""
|
|
for i in ${MULTILIB_PREFIX_LIST} ; do
|
|
old_IFS="$IFS"
|
|
IFS=":"
|
|
set $i
|
|
IFS="$old_IFS"
|
|
shift #remove mlib
|
|
while [ -n "$1" ]; do
|
|
INSTALL_PLATFORM_EXTRA_RPM="$INSTALL_PLATFORM_EXTRA_RPM $1"
|
|
shift
|
|
done
|
|
done
|
|
export INSTALL_PLATFORM_EXTRA_RPM
|
|
|
|
package_install_internal_rpm
|
|
${POPULATE_SDK_POST_TARGET_COMMAND}
|
|
populate_sdk_post_rpm ${INSTALL_ROOTFS_RPM}
|
|
|
|
## install nativesdk ##
|
|
echo "Installing NATIVESDK packages"
|
|
export INSTALL_ROOTFS_RPM="${SDK_OUTPUT}"
|
|
export INSTALL_PLATFORM_RPM="${SDK_ARCH}"
|
|
export INSTALL_PACKAGES_RPM="${TOOLCHAIN_HOST_TASK}"
|
|
export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${TOOLCHAIN_TARGET_HOST_ATTEMPTONLY}"
|
|
export INSTALL_PACKAGES_LINGUAS_RPM=""
|
|
export INSTALL_PROVIDENAME_RPM="/bin/sh /bin/bash /usr/bin/env /usr/bin/perl pkgconfig libGL.so()(64bit) libGL.so"
|
|
export INSTALL_TASK_RPM="populate_sdk_rpm-nativesdk"
|
|
export INSTALL_COMPLEMENTARY_RPM=""
|
|
|
|
# List must be prefered to least preferred order
|
|
INSTALL_PLATFORM_EXTRA_RPM=""
|
|
for each_arch in ${SDK_PACKAGE_ARCHS} ; do
|
|
INSTALL_PLATFORM_EXTRA_RPM="$each_arch $INSTALL_PLATFORM_EXTRA_RPM"
|
|
done
|
|
export INSTALL_PLATFORM_EXTRA_RPM
|
|
|
|
package_install_internal_rpm --sdk
|
|
populate_sdk_post_rpm ${INSTALL_ROOTFS_RPM}
|
|
|
|
# move host RPM library data
|
|
install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
|
|
mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
|
|
rm -Rf ${SDK_OUTPUT}/var
|
|
|
|
install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
|
|
mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
|
|
rm -rf ${SDK_OUTPUT}/etc
|
|
|
|
populate_sdk_log_check populate_sdk
|
|
}
|
|
|
|
python () {
|
|
# The following code should be kept in sync w/ the rootfs_rpm version.
|
|
|
|
# package_arch order is reversed. This ensures the -best- match is listed first!
|
|
package_archs = d.getVar("PACKAGE_ARCHS", True) or ""
|
|
package_archs = ":".join(package_archs.split()[::-1])
|
|
ml_prefix_list = "%s:%s" % ('default', package_archs)
|
|
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)
|
|
default_tune = localdata.getVar("DEFAULTTUNE_virtclass-multilib-" + eext[1], False)
|
|
if default_tune:
|
|
localdata.setVar("DEFAULTTUNE", default_tune)
|
|
package_archs = localdata.getVar("PACKAGE_ARCHS", True) or ""
|
|
package_archs = ":".join([i in "all noarch any".split() and i or eext[1]+"_"+i for i in package_archs.split()][::-1])
|
|
ml_prefix_list += " %s:%s" % (eext[1], package_archs)
|
|
d.setVar('MULTILIB_PREFIX_LIST', ml_prefix_list)
|
|
}
|
|
|