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 | ||
