summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe
diff options
context:
space:
mode:
authorPhilip Lorenz <philip.lorenz@bmw.de>2024-12-30 16:58:36 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-01-03 11:05:03 +0000
commita464534c72ec9c13b68085bfbee37917539f248d (patch)
tree15a15f827502c8df3208e356ba309080032cb748 /meta/classes-recipe
parentf1f926c70a194cfc90533ab93fe6f05fa2b38e68 (diff)
downloadpoky-a464534c72ec9c13b68085bfbee37917539f248d.tar.gz
image/populate_sdk: Support usrmerge in toolchain SDK builds
SDKs which aren't built from an image recipe should also come with drop-in symlinks for `/bin`, `/lib` and `/sbin`. Support this by moving the common functionality into `populate_sdk_base` and enabling the symlink creation when the `usrmerge` DISTRO_FEATURE is on. (From OE-Core rev: 8e1e86cc9d5d4e866ff0ab62c8954db0e65c19e6) Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes-recipe')
-rw-r--r--meta/classes-recipe/image.bbclass26
-rw-r--r--meta/classes-recipe/populate_sdk_base.bbclass27
2 files changed, 27 insertions, 26 deletions
diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index eda3c6d0f3..84a2017eb5 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -681,37 +681,11 @@ deltask do_package_write_ipk
681deltask do_package_write_deb 681deltask do_package_write_deb
682deltask do_package_write_rpm 682deltask do_package_write_rpm
683 683
684# Prepare the root links to point to the /usr counterparts.
685create_merged_usr_symlinks() {
686 root="$1"
687 install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
688 ln -rs $root${base_bindir} $root/bin
689 ln -rs $root${base_sbindir} $root/sbin
690 ln -rs $root${base_libdir} $root/${baselib}
691
692 if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
693 install -d $root${nonarch_base_libdir}
694 ln -rs $root${nonarch_base_libdir} $root/lib
695 fi
696
697 # create base links for multilibs
698 multi_libdirs="${@d.getVar('MULTILIB_VARIANTS')}"
699 for d in $multi_libdirs; do
700 install -d $root${exec_prefix}/$d
701 ln -rs $root${exec_prefix}/$d $root/$d
702 done
703}
704
705create_merged_usr_symlinks_rootfs() { 684create_merged_usr_symlinks_rootfs() {
706 create_merged_usr_symlinks ${IMAGE_ROOTFS} 685 create_merged_usr_symlinks ${IMAGE_ROOTFS}
707} 686}
708 687
709create_merged_usr_symlinks_sdk() {
710 create_merged_usr_symlinks ${SDK_OUTPUT}${SDKTARGETSYSROOT}
711}
712
713ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_rootfs', '',d)}" 688ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_rootfs', '',d)}"
714POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk', '',d)}"
715 689
716reproducible_final_image_task () { 690reproducible_final_image_task () {
717 if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then 691 if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index 031c65f05f..98ac723552 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -175,6 +175,33 @@ POPULATE_SDK_POST_TARGET_COMMAND:append = " write_sdk_test_data"
175POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " write_target_sdk_manifest sdk_prune_dirs" 175POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " write_target_sdk_manifest sdk_prune_dirs"
176POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " write_host_sdk_manifest" 176POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " write_host_sdk_manifest"
177 177
178# Prepare the root links to point to the /usr counterparts.
179create_merged_usr_symlinks() {
180 root="$1"
181 install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
182 ln -rs $root${base_bindir} $root/bin
183 ln -rs $root${base_sbindir} $root/sbin
184 ln -rs $root${base_libdir} $root/${baselib}
185
186 if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
187 install -d $root${nonarch_base_libdir}
188 ln -rs $root${nonarch_base_libdir} $root/lib
189 fi
190
191 # create base links for multilibs
192 multi_libdirs="${@d.getVar('MULTILIB_VARIANTS')}"
193 for d in $multi_libdirs; do
194 install -d $root${exec_prefix}/$d
195 ln -rs $root${exec_prefix}/$d $root/$d
196 done
197}
198
199create_merged_usr_symlinks_sdk() {
200 create_merged_usr_symlinks ${SDK_OUTPUT}${SDKTARGETSYSROOT}
201}
202
203POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk', '',d)}"
204
178SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC}' if '${SDK_PACKAGING_FUNC}' else ''}" 205SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC}' if '${SDK_PACKAGING_FUNC}' else ''}"
179SDK_POSTPROCESS_COMMAND = "create_sdk_files check_sdk_sysroots archive_sdk ${SDK_PACKAGING_COMMAND}" 206SDK_POSTPROCESS_COMMAND = "create_sdk_files check_sdk_sysroots archive_sdk ${SDK_PACKAGING_COMMAND}"
180 207