mirror of
https://git.yoctoproject.org/poky
synced 2026-02-09 02:03:04 +01:00
Give each rootfs its own RPM channel to use. This puts the RPM metadata in a private subdirectory of $WORKDIR, rather than living in DEPLOY_DIR where other tasks may race with it. This allows us to reduce the time that the rpm.lock is held to only the time needed to hardlink the RPMs, allowing the majority of the rootfs operation to run in parallel. Also, this fixes the smart tests by generating an index for all packages at the time of the test, rather than using the one provided by the rootfs process. Original credit for the enhancement should go to Steven Walter stevenrwalter@gmail.com. (From OE-Core rev: a92c196449c516fe51786d429078bbb1213bb029) Signed-off-by: Stephano Cetola <stephano.cetola@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
#
|
|
# Creates a root filesystem out of rpm packages
|
|
#
|
|
|
|
ROOTFS_PKGMANAGE = "rpm smartpm"
|
|
ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts"
|
|
|
|
# Add 100Meg of extra space for Smart
|
|
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("PACKAGE_INSTALL", "smartpm", " + 102400", "" ,d)}"
|
|
|
|
# Smart is python based, so be sure python-native is available to us.
|
|
EXTRANATIVEPATH += "python-native"
|
|
|
|
# opkg is needed for update-alternatives
|
|
RPMROOTFSDEPENDS = "rpm-native:do_populate_sysroot \
|
|
rpmresolve-native:do_populate_sysroot \
|
|
python-smartpm-native:do_populate_sysroot \
|
|
createrepo-native:do_populate_sysroot \
|
|
opkg-native:do_populate_sysroot"
|
|
|
|
do_rootfs[depends] += "${RPMROOTFSDEPENDS}"
|
|
do_populate_sdk[depends] += "${RPMROOTFSDEPENDS}"
|
|
|
|
do_rootfs[recrdeptask] += "do_package_write_rpm"
|
|
do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
|
|
|
|
python () {
|
|
if d.getVar('BUILD_IMAGES_FROM_FEEDS', True):
|
|
flags = d.getVarFlag('do_rootfs', 'recrdeptask', True)
|
|
flags = flags.replace("do_package_write_rpm", "")
|
|
flags = flags.replace("do_deploy", "")
|
|
flags = flags.replace("do_populate_sysroot", "")
|
|
d.setVarFlag('do_rootfs', 'recrdeptask', flags)
|
|
d.setVar('RPM_PREPROCESS_COMMANDS', '')
|
|
d.setVar('RPM_POSTPROCESS_COMMANDS', '')
|
|
|
|
}
|
|
# Smart is python based, so be sure python-native is available to us.
|
|
EXTRANATIVEPATH += "python-native"
|
|
|
|
rpmlibdir = "/var/lib/rpm"
|