From a284e24c01ad20d8f7707047e6a01402834a3b5e Mon Sep 17 00:00:00 2001 From: John Audia Date: Tue, 16 Jul 2024 15:23:36 -0400 Subject: [PATCH] lxc: fix decompression of rootfs tarballs Modified 025-remove-unsupported-option.patch to both remove the bsdtar command as it ends in errors, see below, and to circumvent an error when extracting to overlayfs[1]. Error when extracting rootfs tarball with bsdtar: tar --absolute-names --numeric-owner '--xattrs-include=*' -xpJf /var/cache/lxc//download/archlinux/current/amd64//default/rootfs.tar.xz -C /mnt/data/lxc/test/rootfs ./usr/bin/newgidmap: Cannot restore extended attributes on this system: Illegal byte sequence lxc-create: test: ../src/lxc/lxccontainer.c: create_run_template: 1589 Failed to create container from template lxc-create: test: ../src/lxc/tools/lxc_create.c: lxc_create_main: 318 Failed to create container test 1. https://github.com/openwrt/openwrt/issues/15888 Signed-off-by: John Audia Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia --- .../025-remove-unsupported-option.patch | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/utils/lxc/patches/025-remove-unsupported-option.patch b/utils/lxc/patches/025-remove-unsupported-option.patch index 7e7f4bffd8d908..70eb12bbe60fc3 100644 --- a/utils/lxc/patches/025-remove-unsupported-option.patch +++ b/utils/lxc/patches/025-remove-unsupported-option.patch @@ -1,9 +1,14 @@ --- a/templates/lxc-download.in +++ b/templates/lxc-download.in -@@ -380,26 +380,10 @@ if tar --version | grep -sq "bsdtar"; th - IS_BSD_TAR="true" - fi +@@ -375,32 +375,7 @@ fi + # Unpack the rootfs + echo "Unpacking the rootfs" +-IS_BSD_TAR="false" +-if tar --version | grep -sq "bsdtar"; then +- IS_BSD_TAR="true" +-fi +- -EXCLUDES="" -excludelist=$(relevant_file excludes) -if [ -f "${excludelist}" ]; then @@ -20,12 +25,12 @@ -# is to use a function wrapper, but the latter can't be used here as the args -# are dynamic. We thus need to ignore the warning brought by shellcheck. -# shellcheck disable=SC2086 - if [ "${IS_BSD_TAR}" = "true" ]; then +-if [ "${IS_BSD_TAR}" = "true" ]; then - tar ${EXCLUDES} --numeric-owner -xpJf "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}" -+ tar --numeric-owner -xpJf "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}" - else +-else - tar --anchored ${EXCLUDES} --numeric-owner --xattrs-include='*' -xpJf "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}" -+ tar --numeric-owner --xattrs-include='*' -xpJf "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}" - fi +-fi ++tar --absolute-names --numeric-owner --xattrs-include='*' -xpJf "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}" mkdir -p "${LXC_ROOTFS}/dev/pts/" +