diff options
author | Philip Lorenz <philip.lorenz@bmw.de> | 2024-12-30 16:58:36 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-01-03 11:05:03 +0000 |
commit | a464534c72ec9c13b68085bfbee37917539f248d (patch) | |
tree | 15a15f827502c8df3208e356ba309080032cb748 | |
parent | f1f926c70a194cfc90533ab93fe6f05fa2b38e68 (diff) | |
download | poky-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>
-rw-r--r-- | meta/classes-recipe/image.bbclass | 26 | ||||
-rw-r--r-- | meta/classes-recipe/populate_sdk_base.bbclass | 27 |
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 | |||
681 | deltask do_package_write_deb | 681 | deltask do_package_write_deb |
682 | deltask do_package_write_rpm | 682 | deltask do_package_write_rpm |
683 | 683 | ||
684 | # Prepare the root links to point to the /usr counterparts. | ||
685 | create_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 | |||
705 | create_merged_usr_symlinks_rootfs() { | 684 | create_merged_usr_symlinks_rootfs() { |
706 | create_merged_usr_symlinks ${IMAGE_ROOTFS} | 685 | create_merged_usr_symlinks ${IMAGE_ROOTFS} |
707 | } | 686 | } |
708 | 687 | ||
709 | create_merged_usr_symlinks_sdk() { | ||
710 | create_merged_usr_symlinks ${SDK_OUTPUT}${SDKTARGETSYSROOT} | ||
711 | } | ||
712 | |||
713 | ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_rootfs', '',d)}" | 688 | ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_rootfs', '',d)}" |
714 | POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk', '',d)}" | ||
715 | 689 | ||
716 | reproducible_final_image_task () { | 690 | reproducible_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" | |||
175 | POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " write_target_sdk_manifest sdk_prune_dirs" | 175 | POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " write_target_sdk_manifest sdk_prune_dirs" |
176 | POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " write_host_sdk_manifest" | 176 | POPULATE_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. | ||
179 | create_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 | |||
199 | create_merged_usr_symlinks_sdk() { | ||
200 | create_merged_usr_symlinks ${SDK_OUTPUT}${SDKTARGETSYSROOT} | ||
201 | } | ||
202 | |||
203 | POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk', '',d)}" | ||
204 | |||
178 | SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC}' if '${SDK_PACKAGING_FUNC}' else ''}" | 205 | SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC}' if '${SDK_PACKAGING_FUNC}' else ''}" |
179 | SDK_POSTPROCESS_COMMAND = "create_sdk_files check_sdk_sysroots archive_sdk ${SDK_PACKAGING_COMMAND}" | 206 | SDK_POSTPROCESS_COMMAND = "create_sdk_files check_sdk_sysroots archive_sdk ${SDK_PACKAGING_COMMAND}" |
180 | 207 | ||