[RFC,2/5] meta: refactor containerization

Message ID 20211012130413.1719424-3-adriaan.schmidt@siemens.com
State RFC
Headers show
Series Refactor mount logic | expand

Commit Message

Schmidt, Adriaan Oct. 12, 2021, 4:04 a.m. UTC
Don't unmount, but instead use "stay on one filesystem" options

Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
---
 meta/classes/image-container-extension.bbclass | 3 ++-
 meta/classes/image-sdk-extension.bbclass       | 6 +-----
 2 files changed, 3 insertions(+), 6 deletions(-)

Comments

Jan Kiszka Oct. 13, 2021, 1:17 a.m. UTC | #1
On 12.10.21 15:04, Adriaan Schmidt wrote:
> Don't unmount, but instead use "stay on one filesystem" options
> 

...which works because there are no bind mounts involved.

BTW, providing a "why" (e.g. "simpler") would be good for any commit
message.

Jan

> Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> ---
>  meta/classes/image-container-extension.bbclass | 3 ++-
>  meta/classes/image-sdk-extension.bbclass       | 6 +-----
>  2 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
> index e26604a..762be4a 100644
> --- a/meta/classes/image-container-extension.bbclass
> +++ b/meta/classes/image-container-extension.bbclass
> @@ -19,6 +19,7 @@ containerize_rootfs() {
>      # prepare OCI container image skeleton
>      bbdebug 1 "prepare OCI container image skeleton"
>      rm -rf "${oci_img_dir}"
> +
>      sudo umoci init --layout "${oci_img_dir}"
>      sudo umoci new --image "${oci_img_dir}:${empty_tag}"
>      sudo umoci config --image "${oci_img_dir}:${empty_tag}" \
> @@ -27,7 +28,7 @@ containerize_rootfs() {
>          "${oci_img_dir}_unpacked"
>  
>      # add root filesystem as the flesh of the skeleton
> -    sudo cp -a "${rootfs}"/* "${oci_img_dir}_unpacked/rootfs/"
> +    sudo sh -c "tar --one-file-system -C \"${rootfs}\" -cpf - . | tar -C \"${oci_img_dir}_unpacked/rootfs\" --strip-components=1 -xpf -"
>      # clean-up temporary files
>      sudo find "${oci_img_dir}_unpacked/rootfs/tmp" -mindepth 1 -delete
>  
> diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass
> index 426b925..2cc5933 100644
> --- a/meta/classes/image-sdk-extension.bbclass
> +++ b/meta/classes/image-sdk-extension.bbclass
> @@ -33,15 +33,11 @@ do_populate_sdk() {
>          sudo rm -f ${SDKCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list
>      fi
>  
> -    sudo umount -R ${SDKCHROOT_DIR}/dev || true
> -    sudo umount ${SDKCHROOT_DIR}/proc || true
> -    sudo umount -R ${SDKCHROOT_DIR}/sys || true
> -
>      # Remove setup scripts
>      sudo rm -f ${SDKCHROOT_DIR}/chroot-setup.sh ${SDKCHROOT_DIR}/configscript.sh
>  
>      # Make all links relative
> -    for link in $(find ${SDKCHROOT_DIR}/ -type l); do
> +    for link in $(find ${SDKCHROOT_DIR}/ -type l -xdev); do
>          target=$(readlink $link)
>  
>          if [ "${target#/}" != "${target}" ]; then
>

Patch

diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
index e26604a..762be4a 100644
--- a/meta/classes/image-container-extension.bbclass
+++ b/meta/classes/image-container-extension.bbclass
@@ -19,6 +19,7 @@  containerize_rootfs() {
     # prepare OCI container image skeleton
     bbdebug 1 "prepare OCI container image skeleton"
     rm -rf "${oci_img_dir}"
+
     sudo umoci init --layout "${oci_img_dir}"
     sudo umoci new --image "${oci_img_dir}:${empty_tag}"
     sudo umoci config --image "${oci_img_dir}:${empty_tag}" \
@@ -27,7 +28,7 @@  containerize_rootfs() {
         "${oci_img_dir}_unpacked"
 
     # add root filesystem as the flesh of the skeleton
-    sudo cp -a "${rootfs}"/* "${oci_img_dir}_unpacked/rootfs/"
+    sudo sh -c "tar --one-file-system -C \"${rootfs}\" -cpf - . | tar -C \"${oci_img_dir}_unpacked/rootfs\" --strip-components=1 -xpf -"
     # clean-up temporary files
     sudo find "${oci_img_dir}_unpacked/rootfs/tmp" -mindepth 1 -delete
 
diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass
index 426b925..2cc5933 100644
--- a/meta/classes/image-sdk-extension.bbclass
+++ b/meta/classes/image-sdk-extension.bbclass
@@ -33,15 +33,11 @@  do_populate_sdk() {
         sudo rm -f ${SDKCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list
     fi
 
-    sudo umount -R ${SDKCHROOT_DIR}/dev || true
-    sudo umount ${SDKCHROOT_DIR}/proc || true
-    sudo umount -R ${SDKCHROOT_DIR}/sys || true
-
     # Remove setup scripts
     sudo rm -f ${SDKCHROOT_DIR}/chroot-setup.sh ${SDKCHROOT_DIR}/configscript.sh
 
     # Make all links relative
-    for link in $(find ${SDKCHROOT_DIR}/ -type l); do
+    for link in $(find ${SDKCHROOT_DIR}/ -type l -xdev); do
         target=$(readlink $link)
 
         if [ "${target#/}" != "${target}" ]; then