diff --git a/rear-device-shrinking-bz2223895.patch b/rear-device-shrinking-bz2223895.patch new file mode 100644 index 0000000..4da263c --- /dev/null +++ b/rear-device-shrinking-bz2223895.patch @@ -0,0 +1,32 @@ +commit 4f03a10d4866efc9b6920a3878e6397d170742f9 +Author: Johannes Meixner +Date: Thu Jul 20 15:11:52 2023 +0200 + + Merge pull request #3027 from rmetrich/shrinking_file + + In build/GNU/Linux/100_copy_as_is.sh + ensure to really get all COPY_AS_IS files copied by using + 'tar ... -i' when extracting to avoid a false regular exit of 'tar' + in particular when padding zeroes get added when a file being read shrinks + because for 'tar' (without '-i') two consecutive 512-blocks of zeroes mean EOF, + cf. https://github.com/rear/rear/pull/3027 + +diff --git a/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh b/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh +index ec55f331..0e402b01 100644 +--- a/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh ++++ b/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh +@@ -92,9 +92,13 @@ done >$copy_as_is_exclude_file + # COPY_AS_IS+=( /path/to/directory/* ) + # which are used in our scripts and by users in their etc/rear/local.conf + # cf. https://github.com/rear/rear/pull/2405#issuecomment-633512932 ++# Using '-i' when extracting is necessary to avoid a false regular exit of 'tar' ++# in particular when padding zeroes get added when a file being read shrinks ++# because for 'tar' (without '-i') two consecutive 512-blocks of zeroes mean EOF, ++# cf. https://github.com/rear/rear/pull/3027 + # FIXME: The following code fails if file names contain characters from IFS (e.g. blanks), + # cf. https://github.com/rear/rear/issues/1372 +-if ! tar -v -X $copy_as_is_exclude_file -P -C / -c ${COPY_AS_IS[*]} 2>$copy_as_is_filelist_file | tar $v -C $ROOTFS_DIR/ -x 1>/dev/null ; then ++if ! tar -v -X $copy_as_is_exclude_file -P -C / -c ${COPY_AS_IS[*]} 2>$copy_as_is_filelist_file | tar $v -C $ROOTFS_DIR/ -x -i 1>/dev/null ; then + Error "Failed to copy files and directories in COPY_AS_IS minus COPY_AS_IS_EXCLUDE" + fi + Log "Finished copying files and directories in COPY_AS_IS minus COPY_AS_IS_EXCLUDE" diff --git a/rear.spec b/rear.spec index 4fcc8c1..cd6ad05 100644 --- a/rear.spec +++ b/rear.spec @@ -34,6 +34,7 @@ Patch52: rear-bz2091163.patch Patch53: rear-bz2130945.patch Patch54: rear-bz2131946.patch Patch56: s390-no-clobber-disks.patch +Patch58: rear-device-shrinking-bz2223895.patch ### Dependencies on all distributions BuildRequires: asciidoc @@ -161,6 +162,7 @@ fi %patch53 -p1 %patch54 -p1 %patch56 -p1 +%patch58 -p1 echo "30 1 * * * root test -f /var/lib/rear/layout/disklayout.conf && /usr/sbin/rear checklayout || /usr/sbin/rear mkrescue" >rear.cron