Diff of the two buildlogs: -- --- b1/build.log 2024-04-21 14:18:09.174198910 +0000 +++ b2/build.log 2024-04-21 14:25:00.508653771 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Apr 21 02:09:11 -12 2024 -I: pbuilder-time-stamp: 1713708551 +I: Current time: Mon Apr 22 04:18:22 +14 2024 +I: pbuilder-time-stamp: 1713709102 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -32,52 +32,84 @@ dpkg-source: info: applying exclude18.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/28485/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/D01_modify_environment starting +debug: Running on virt64z. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Apr 21 14:18 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='b606fb8378034e6ab7b6498195d7bb9c' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='28485' - PS1='# ' - PS2='> ' + INVOCATION_ID=359fd88ccef441b19bda8cc97190b126 + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=15279 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Ydy2C7Rg/pbuilderrc_GfQA --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Ydy2C7Rg/b1 --logfile b1/build.log tar_1.35+dfsg-3.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Ydy2C7Rg/pbuilderrc_BHm5 --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Ydy2C7Rg/b2 --logfile b2/build.log tar_1.35+dfsg-3.dsc' + SUDO_GID=110 + SUDO_UID=103 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt32c 6.1.0-20-armmp-lpae #1 SMP Debian 6.1.85-1 (2024-04-11) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-20-arm64 #1 SMP Debian 6.1.85-1 (2024-04-11) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Apr 21 07:13 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/28485/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 21 07:12 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -169,7 +201,7 @@ Get: 38 http://deb.debian.org/debian trixie/main armhf libpcre2-dev armhf 10.42-4+b1 [668 kB] Get: 39 http://deb.debian.org/debian trixie/main armhf libsepol-dev armhf 3.5-2 [319 kB] Get: 40 http://deb.debian.org/debian trixie/main armhf libselinux1-dev armhf 3.5-2 [151 kB] -Fetched 21.2 MB in 0s (44.3 MB/s) +Fetched 21.2 MB in 0s (60.8 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sensible-utils. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19635 files and directories currently installed.) @@ -345,7 +377,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/tar-1.35+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../tar_1.35+dfsg-3_source.changes +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/tar-1.35+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../tar_1.35+dfsg-3_source.changes dpkg-buildpackage: info: source package tar dpkg-buildpackage: info: source version 1.35+dfsg-3 dpkg-buildpackage: info: source distribution unstable @@ -384,8 +420,8 @@ checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes -checking whether UID '1111' is supported by ustar format... yes -checking whether GID '1111' is supported by ustar format... yes +checking whether UID '2222' is supported by ustar format... yes +checking whether GID '2222' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking whether make supports nested variables... (cached) yes checking for gcc... gcc @@ -1040,7 +1076,7 @@ config.status: executing tests/atconfig commands make[1]: Leaving directory '/build/reproducible-path/tar-1.35+dfsg' dh_auto_build - make -j3 + make -j4 make[1]: Entering directory '/build/reproducible-path/tar-1.35+dfsg' make all-recursive make[2]: Entering directory '/build/reproducible-path/tar-1.35+dfsg' @@ -1099,6 +1135,7 @@ ./ctype.in.h > ctype.h-t mv alloca.h-t alloca.h mv configmake.h-t configmake.h +mv ctype.h-t ctype.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_DIRENT_H''@|1|g' \ @@ -1134,7 +1171,6 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./dirent.in.h > dirent.h-t -mv ctype.h-t ctype.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_ERROR_H''@|1|g' \ @@ -1169,7 +1205,6 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./fcntl.in.h > fcntl.h-t -mv error.h-t error.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|1|g' \ @@ -1179,18 +1214,19 @@ -e 's|@''NEXT_GETOPT_H''@||g' \ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ ./getopt.in.h > getopt.h-t +mv error.h-t error.h mv dirent.h-t dirent.h mv fcntl.h-t fcntl.h +mv getopt.h-t getopt.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''HAVE_SYS_CDEFS_H''@|1|g' \ ./getopt-cdefs.in.h > getopt-cdefs.h-t -mv getopt.h-t getopt.h /usr/bin/mkdir -p 'malloc' /usr/bin/mkdir -p 'malloc' -mv getopt-cdefs.h-t getopt-cdefs.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e '/libc_hidden_proto/d' \ ./malloc/dynarray.h > malloc/dynarray.gl.h-t +mv getopt-cdefs.h-t getopt-cdefs.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|||g' \ -e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \ @@ -1207,7 +1243,6 @@ -e '/libc_hidden_proto/d' \ ./malloc/scratch_buffer.h > malloc/scratch_buffer.gl.h-t mv malloc/dynarray.gl.h-t malloc/dynarray.gl.h -mv malloc/dynarray-skeleton.gl.h-t malloc/dynarray-skeleton.gl.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's/@''HAVE_INTTYPES_H''@/1/g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1237,6 +1272,7 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./inttypes.in.h > inttypes.h-t +mv malloc/dynarray-skeleton.gl.h-t malloc/dynarray-skeleton.gl.h mv malloc/scratch_buffer.gl.h-t malloc/scratch_buffer.gl.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ @@ -1263,7 +1299,7 @@ -e 's|@''PRAGMA_COLUMNS''@||g' \ -e 's|@''NEXT_LIMITS_H''@||g' \ ./limits.in.h > limits.h-t -mv limits.h-t limits.h +mv inttypes.h-t inttypes.h mv langinfo.h-t langinfo.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ @@ -1291,8 +1327,8 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./locale.in.h > locale.h-t -mv inttypes.h-t inttypes.h /usr/bin/mkdir -p 'selinux' +mv limits.h-t limits.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SELINUX_SELINUX_H''@/1/g' \ @@ -1327,10 +1363,11 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./signal.in.h > signal.h-t -mv selinux/selinux.h-t selinux/selinux.h -mv locale.h-t locale.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ ./stdckdint.in.h > stdckdint.h-t +mv locale.h-t locale.h +mv selinux/selinux.h-t selinux/selinux.h +mv stdckdint.h-t stdckdint.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1342,8 +1379,6 @@ -e 's|@''REPLACE_NULL''@|0|g' \ ./stddef.in.h > stddef.h-t mv signal.h-t signal.h -mv stdckdint.h-t stdckdint.h -mv stddef.h-t stddef.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1468,6 +1503,7 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ > stdio.h-t +mv stddef.h-t stddef.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1716,7 +1752,6 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ > string.h-t -mv stdio.h-t stdio.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_STRINGS_H''@|1|g' \ @@ -1732,11 +1767,10 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./strings.in.h > strings.h-t -mv stdlib.h-t stdlib.h -mv string.h-t string.h -/usr/bin/mkdir -p 'sys' -/usr/bin/mkdir -p 'sys' mv strings.h-t strings.h +/usr/bin/mkdir -p 'sys' +mv stdio.h-t stdio.h +mv string.h-t string.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1751,6 +1785,8 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./sys_random.in.h > sys/random.h-t +/usr/bin/mkdir -p 'sys' +/usr/bin/mkdir -p 'sys' sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1808,7 +1844,6 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./sys_stat.in.h > sys/stat.h-t -/usr/bin/mkdir -p 'sys' sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/1/g' \ @@ -1828,7 +1863,6 @@ ./sys_time.in.h > sys/time.h-t mv sys/random.h-t sys/random.h /usr/bin/mkdir -p 'sys' -mv sys/time.h-t sys/time.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1838,6 +1872,7 @@ -e 's|@''WINDOWS_64_BIT_OFF_T''@|0|g' \ -e 's|@''WINDOWS_STAT_INODES''@|0|g' \ ./sys_types.in.h > sys/types.h-t +mv stdlib.h-t stdlib.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -1885,8 +1920,8 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./time.in.h > time.h-t +mv sys/time.h-t sys/time.h mv sys/types.h-t sys/types.h -mv sys/stat.h-t sys/stat.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_UCHAR_H''@/1/g' \ @@ -1940,8 +1975,10 @@ -e 's/@''GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE''@/LIBUNISTRING_DLL_VARIABLE/g' \ -e 's/@''GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE''@/LIBUNISTRING_DLL_VARIABLE/g' \ ./unicase.in.h > unicase.h-t -mv unicase.h-t unicase.h +mv sys/stat.h-t sys/stat.h mv time.h-t time.h +mv uchar.h-t uchar.h +mv unicase.h-t unicase.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''HAVE_UNISTRING_WOE32DLL_H''@|0|g' \ -e 's/@''GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE''@/LIBUNISTRING_DLL_VARIABLE/g' \ @@ -2084,7 +2121,6 @@ -e 's/@''GNULIB_UNINORM_NFKD_DLL_VARIABLE''@/LIBUNISTRING_DLL_VARIABLE/g' \ -e 's/@''GNULIB_UNINORM_NFKC_DLL_VARIABLE''@/LIBUNISTRING_DLL_VARIABLE/g' \ ./uninorm.in.h > uninorm.h-t -mv uchar.h-t uchar.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|1|g' \ @@ -2282,11 +2318,10 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ > unistd.h-t -mv uninorm.h-t uninorm.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G -n -e 'w unitypes.h-t' ./unitypes.in.h +mv uninorm.h-t uninorm.h mv unitypes.h-t unitypes.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G -n -e 'w uniwidth.h-t' ./uniwidth.in.h -mv uniwidth.h-t uniwidth.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_UTIME_H''@/1/g' \ @@ -2302,7 +2337,7 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./utime.in.h > utime.h-t -mv utime.h-t utime.h +mv uniwidth.h-t uniwidth.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|include_next|g' \ @@ -2426,7 +2461,7 @@ -e '/definition of _GL_ARG_NONNULL/r ./arg-nonnull.h' \ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ > wchar.h-t -mv unistd.h-t unistd.h +mv utime.h-t utime.h sed -e 1h -e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */,' -e 1G \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_WCTYPE_H''@/1/g' \ @@ -2457,8 +2492,9 @@ -e '/definition of _GL_WARN_ON_USE/r ./warn-on-use.h' \ ./wctype.in.h > wctype.h-t mv unictype.h-t unictype.h -mv wchar.h-t wchar.h +mv unistd.h-t unistd.h mv wctype.h-t wctype.h +mv wchar.h-t wchar.h make all-recursive make[4]: Entering directory '/build/reproducible-path/tar-1.35+dfsg/gnu' make[5]: Entering directory '/build/reproducible-path/tar-1.35+dfsg/gnu' @@ -2714,7 +2750,7 @@ make[1]: Entering directory '/build/reproducible-path/tar-1.35+dfsg' cp tests/testsuite debian/testsuite.orig dh_auto_test - make -j3 check "TESTSUITEFLAGS=-j3 --verbose" VERBOSE=1 + make -j4 check "TESTSUITEFLAGS=-j4 --verbose" VERBOSE=1 make[2]: Entering directory '/build/reproducible-path/tar-1.35+dfsg' Making check in doc make[3]: Entering directory '/build/reproducible-path/tar-1.35+dfsg/doc' @@ -2766,17 +2802,16 @@ make[4]: Leaving directory '/build/reproducible-path/tar-1.35+dfsg/tests' make check-local make[4]: Entering directory '/build/reproducible-path/tar-1.35+dfsg/tests' -/bin/bash '/build/reproducible-path/tar-1.35+dfsg/build-aux/missing' autom4te --language=autotest -I . testsuite.at -o testsuite.tmp +/bin/sh '/build/reproducible-path/tar-1.35+dfsg/build-aux/missing' autom4te --language=autotest -I . testsuite.at -o testsuite.tmp mv testsuite.tmp testsuite -/bin/bash ./testsuite -j3 --verbose +/bin/sh ./testsuite -j4 --verbose ## ------------------------ ## ## GNU tar 1.35 test suite. ## ## ------------------------ ## -1. version.at:19: testing tar version ... -./version.at:21: tar --version | sed 1q + 2. pipe.at:29: testing decompressing from stdin ... ./pipe.at:33: mkdir v7 @@ -2801,14 +2836,14 @@ cmp orig/file1 directory/file1 echo "separator" cmp orig/file2 directory/file2) +1. version.at:19: testing tar version ... +./version.at:21: tar --version | sed 1q 3. options.at:24: testing mixing options ... ./options.at:27: echo > file1 TAR_OPTIONS=--numeric-owner tar chof archive file1 tar tf archive -1. version.at:19: ok - 3. options.at:24: ok 4. options02.at:26: testing interspersed options ... ./options02.at:29: @@ -2816,31 +2851,9 @@ tar c file1 -f archive tar tf archive - -./pipe.at:33: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -mkdir directory -genfile --length 10240 --pattern zeros --file directory/file1 -genfile --length 13 --file directory/file2 -tar cf archive directory -mv directory orig -cat archive | tar xfv - --warning=no-timestamp | sort -echo "separator" -cmp orig/file1 directory/file1 -echo "separator" -cmp orig/file2 directory/file2) +1. version.at:19: ok 4. options02.at:26: ok + 5. options03.at:21: testing TAR_OPTIONS with string arguments ... ./options03.at:31: echo dir/bar > exclude.list @@ -2851,19 +2864,18 @@ tar tf arc.tar -5. options03.at:21: ok + 6. opcomp01.at:21: testing occurrence compatibility ... ./opcomp01.at:24: tar --occurrence=1 -cf test.tar . - 6. opcomp01.at:21: ok ./pipe.at:33: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -2885,37 +2897,14 @@ ./opcomp02.at:24: tar --occurrence=1 -tf test.tar - 7. opcomp02.at:21: ok +5. options03.at:21: ok + + 8. opcomp03.at:21: testing --verify compatibility ... ./opcomp03.at:24: tar -tWf test.tar . -./pipe.at:33: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -mkdir directory -genfile --length 10240 --pattern zeros --file directory/file1 -genfile --length 13 --file directory/file2 -tar cf archive directory -mv directory orig -cat archive | tar xfv - --warning=no-timestamp | sort -echo "separator" -cmp orig/file1 directory/file1 -echo "separator" -cmp orig/file2 directory/file2) -8. opcomp03.at:21: ok - 9. opcomp04.at:21: testing compress option compatibility ... ./opcomp04.at:24: @@ -2927,17 +2916,13 @@ tar rzf test.tar newfile -10. opcomp05.at:21: testing --pax-option compatibility ... -./opcomp05.at:24: -tar -Hgnu -cf test.tar --pax-option user:=root . - -9. opcomp04.at:21: ok +8. opcomp03.at:21: ok ./pipe.at:33: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -2955,9 +2940,12 @@ cmp orig/file1 directory/file1 echo "separator" cmp orig/file2 directory/file2) -10. opcomp05.at:21: ok +10. opcomp05.at:21: testing --pax-option compatibility ... +./opcomp05.at:24: +tar -Hgnu -cf test.tar --pax-option user:=root . +10. opcomp05.at:21: ok 11. opcomp06.at:21: testing --pax-option compatibility ... ./opcomp06.at:24: @@ -2987,14 +2975,18 @@ genfile --file file tar -cf test.tar --acls -Hgnu file ---- - 2024-04-21 14:12:42.531362223 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/11/stderr 2024-04-21 14:12:42.524445776 +0000 +--- - 2024-04-21 14:21:18.772395138 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/11/stderr 2024-04-21 14:21:18.763792177 +0000 @@ -1,3 +1 @@ -tar: --acls can be used only on POSIX archives -Try 'tar --help' or 'tar --usage' for more information. -11. opcomp06.at:21: 12. defaults.at:16: testing checkpoint defaults ... -./defaults.at:18: +9. opcomp04.at:21: ok +11. opcomp06.at:21: skipped (opcomp06.at:24) + + +13. interval.at:16: testing checkpoint interval ... +./interval.at:18: mkdir t cd t for i in 0 1 2 3 4 5 6 7 8 9 @@ -3004,14 +2996,12 @@ TAR_OPTIONS=-Hgnu export TAR_OPTIONS -tar --checkpoint -c -f ../a.tar . +tar --checkpoint=2 -c -f ../a.tar . - skipped (opcomp06.at:24) -2. pipe.at:29: ok -13. interval.at:16: testing checkpoint interval ... -./interval.at:18: +12. defaults.at:16: testing checkpoint defaults ... +./defaults.at:18: mkdir t cd t for i in 0 1 2 3 4 5 6 7 8 9 @@ -3021,10 +3011,7 @@ TAR_OPTIONS=-Hgnu export TAR_OPTIONS -tar --checkpoint=2 -c -f ../a.tar . - - -12. defaults.at:16: ok +tar --checkpoint -c -f ../a.tar . 14. dot.at:16: testing dot action ... @@ -3041,6 +3028,56 @@ tar --checkpoint-action=dot -c -f ../a.tar . +./pipe.at:33: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +mkdir directory +genfile --length 10240 --pattern zeros --file directory/file1 +genfile --length 13 --file directory/file2 +tar cf archive directory +mv directory orig +cat archive | tar xfv - --warning=no-timestamp | sort +echo "separator" +cmp orig/file1 directory/file1 +echo "separator" +cmp orig/file2 directory/file2) +13. interval.at:16: ok +12. defaults.at:16: ok +14. dot.at:16: + ok +./pipe.at:33: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +mkdir directory +genfile --length 10240 --pattern zeros --file directory/file1 +genfile --length 13 --file directory/file2 +tar cf archive directory +mv directory orig +cat archive | tar xfv - --warning=no-timestamp | sort +echo "separator" +cmp orig/file1 directory/file1 +echo "separator" +cmp orig/file2 directory/file2) 15. dot-compat.at:16: testing dot action (compatibility syntax) ... ./dot-compat.at:18: mkdir t @@ -3055,7 +3092,7 @@ tar --checkpoint=.2 -c -f ../a.tar . -13. interval.at:16: ok + 16. dot-int.at:16: testing dot action and interval ... ./dot-int.at:18: @@ -3071,10 +3108,6 @@ tar --checkpoint-action=dot --checkpoint=2 -c -f ../a.tar . -14. dot.at:16: 15. dot-compat.at:16: ok - ok - - 17. testsuite.at:242: testing compress: gzip ... ./testsuite.at:242: @@ -3105,7 +3138,10 @@ tar xf k.tar.gz test -f empty +15. dot-compat.at:16: ok + 16. dot-int.at:16: ok +2. pipe.at:29: ok 18. testsuite.at:243: testing compress: bzip2 ... ./testsuite.at:243: @@ -3167,8 +3203,6 @@ tar xf k.tar.xz test -f empty -17. testsuite.at:242: ok -18. testsuite.at:243: ok 20. testsuite.at:246: testing compress: lzip ... ./testsuite.at:246: @@ -3195,15 +3229,19 @@ tar xf k.tar.lz test -f empty - ---- - 2024-04-21 14:12:42.840564142 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/20/stdout 2024-04-21 14:12:42.832416692 +0000 +17. testsuite.at:242: ok +--- - 2024-04-21 14:21:19.066503866 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/20/stdout 2024-04-21 14:21:19.055781344 +0000 @@ -1,4 +1 @@ -empty -testing .lz -empty -20. testsuite.at:246: 21. testsuite.at:247: testing compress: lzop ... +20. testsuite.at:246: skipped (testsuite.at:246) + + +18. testsuite.at:243: ok +21. testsuite.at:247: testing compress: lzop ... ./testsuite.at:247: cat /dev/null | lzop - > /dev/null 2>&1 || exit 77 @@ -3228,18 +3266,13 @@ tar xf k.tar.lzo test -f empty - skipped (testsuite.at:246) ---- - 2024-04-21 14:12:42.857758398 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/21/stdout 2024-04-21 14:12:42.852414803 +0000 +--- - 2024-04-21 14:21:19.102817319 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/21/stdout 2024-04-21 14:21:19.095779860 +0000 @@ -1,4 +1 @@ -empty -testing .lzo -empty -21. testsuite.at:247: - skipped (testsuite.at:247) -19. testsuite.at:244: ok - 22. testsuite.at:248: testing compress: zstd ... ./testsuite.at:248: @@ -3270,8 +3303,8 @@ tar xf k.tar.zst test -f empty ---- - 2024-04-21 14:12:42.893864689 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/22/stdout 2024-04-21 14:12:42.888411404 +0000 +21. testsuite.at:247: --- - 2024-04-21 14:21:19.111522076 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/22/stdout 2024-04-21 14:21:19.103779563 +0000 @@ -1,6 +1 @@ -empty -testing .zst @@ -3279,6 +3312,12 @@ -testing .tzst -empty +22. testsuite.at:248: skipped (testsuite.at:247) + skipped (testsuite.at:248) + + + +19. testsuite.at:244: ok 23. positional01.at:21: testing Exclude ... ./positional01.at:24: @@ -3295,8 +3334,19 @@ echo $? tar -tf a.tar | sort +25. positional03.at:21: testing Several options ... +./positional03.at:24: + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir t +cd t +mkdir dir +> dir/A.a +> dir/B.a +> dir/A.b +tar -vcf ../a.tar --exclude '*.b' . -C dir --exclude '*.c' | sort -22. testsuite.at:248: skipped (testsuite.at:248) 24. positional02.at:21: testing Directory ... ./positional02.at:24: @@ -3311,23 +3361,38 @@ tar -tf a.tar | sort tar -cf a.tar . -C dir +25. positional03.at:21: ok +24. positional02.at:21: ok -25. positional03.at:21: testing Several options ... -./positional03.at:24: +23. positional01.at:21: ok -test -z "`sort < /dev/null 2>&1`" || exit 77 +27. T-mult.at:21: testing multiple file lists ... +./T-mult.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * -mkdir t -cd t -mkdir dir -> dir/A.a -> dir/B.a -> dir/A.b -tar -vcf ../a.tar --exclude '*.b' . -C dir --exclude '*.c' | sort +>file1 +>file2 +>file3 +>file4 +cat >F1 <<'_ATEOF' +file1 +file2 +_ATEOF -24. positional02.at:21: 23. positional01.at:21: ok - ok +cat >F2 <<'_ATEOF' +file3 +file4 +_ATEOF +tar cf archive -T F1 -T F2 +tar tf archive +) 26. add-file.at:21: testing The --add-file option ... ./add-file.at:33: @@ -3360,9 +3425,9 @@ echo 3: tar -cvf arc.tar -T input ) -25. positional03.at:21: ok -27. T-mult.at:21: testing multiple file lists ... -./T-mult.at:24: + +29. T-rec.at:21: testing recursive file lists ... +./T-rec.at:24: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -3373,22 +3438,20 @@ >file1 >file2 ->file3 ->file4 cat >F1 <<'_ATEOF' file1 -file2 +-T F2 _ATEOF cat >F2 <<'_ATEOF' -file3 -file4 +file2 +-T F1 _ATEOF -tar cf archive -T F1 -T F2 +tar cf archive -T F1 +echo $? tar tf archive ) - 28. T-nest.at:21: testing nested file lists ... ./T-nest.at:24: mkdir ustar @@ -3417,6 +3480,7 @@ tar cf archive -T F1 tar tf archive ) +27. T-mult.at:21: ok ./add-file.at:33: mkdir oldgnu (cd oldgnu @@ -3447,66 +3511,9 @@ echo 3: tar -cvf arc.tar -T input ) -27. T-mult.at:21: ok -28. T-nest.at:21: ok - - -29. T-rec.at:21: testing recursive file lists ... -./T-rec.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - ->file1 ->file2 -cat >F1 <<'_ATEOF' -file1 --T F2 -_ATEOF - -cat >F2 <<'_ATEOF' -file2 --T F1 -_ATEOF - -tar cf archive -T F1 -echo $? -tar tf archive -) -./add-file.at:33: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -genfile --file -File -genfile --file foo -genfile --file bar - -echo 1: -tar -cvf arc.tar --add-file foo --add-file -File - -echo 2: -tar -cvf arc.tar foo --add-file -File bar - - -cat >input <<'_ATEOF' -foo ---add-file=-File -bar -_ATEOF - -echo 3: -tar -cvf arc.tar -T input -) +28. T-nest.at:21: ok +29. T-rec.at:21: ok 30. T-recurse.at:27: testing files-from & recurse: toggle ... ./T-recurse.at:30: mkdir v7 @@ -3546,13 +3553,13 @@ tar cf "$a" --no-recursion -T F2A --recursion -T F2B tar tf "$a" ) -29. T-rec.at:21: ok + ./add-file.at:33: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -3577,6 +3584,34 @@ echo 3: tar -cvf arc.tar -T input ) +31. T-recurse.at:66: testing toggle --recursion (not) from -T ... +./T-recurse.at:69: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +mkdir directory1 directory2 +touch directory1/file directory2/file + +cat >F1 <<'_ATEOF' +--no-recursion +directory1/ +_ATEOF + + +cat >F2 <<'_ATEOF' +directory2/ +_ATEOF + + +tar cf archive -T F1 --recursion -T F2 +tar tf archive + +) ./T-recurse.at:30: mkdir oldgnu (cd oldgnu @@ -3616,40 +3651,12 @@ tar tf "$a" ) -31. T-recurse.at:66: testing toggle --recursion (not) from -T ... -./T-recurse.at:69: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -mkdir directory1 directory2 -touch directory1/file directory2/file - -cat >F1 <<'_ATEOF' ---no-recursion -directory1/ -_ATEOF - - -cat >F2 <<'_ATEOF' -directory2/ -_ATEOF - - -tar cf archive -T F1 --recursion -T F2 -tar tf archive - -) ./add-file.at:33: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -3701,6 +3708,32 @@ tar tf archive ) +32. T-cd.at:21: testing -C in file lists ... +./T-cd.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +>file1 +mkdir dir +>dir/file2 +>dir/file3 +cat >F1 <<'_ATEOF' +file1 +-C dir +. +_ATEOF + +tar cf archive -T F1 +tar tf archive | sort +) ./T-recurse.at:30: mkdir ustar (cd ustar @@ -3739,7 +3772,37 @@ tar cf "$a" --no-recursion -T F2A --recursion -T F2B tar tf "$a" ) -26. add-file.at:21: ok +./add-file.at:33: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +genfile --file -File +genfile --file foo +genfile --file bar + +echo 1: +tar -cvf arc.tar --add-file foo --add-file -File + +echo 2: +tar -cvf arc.tar foo --add-file -File bar + + +cat >input <<'_ATEOF' +foo +--add-file=-File +bar +_ATEOF + + +echo 3: +tar -cvf arc.tar -T input +) +32. T-cd.at:21: ok ./T-recurse.at:69: mkdir ustar (cd ustar @@ -3768,6 +3831,24 @@ ) +26. add-file.at:21: 33. T-empty.at:26: testing empty entries ... +./T-empty.at:36: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +genfile --file jeden +genfile --file dwa +genfile --file trzy + +tar cfvT archive ../file-list +) + ok ./T-recurse.at:30: mkdir posix (cd posix @@ -3806,32 +3887,6 @@ tar cf "$a" --no-recursion -T F2A --recursion -T F2B tar tf "$a" ) -32. T-cd.at:21: testing -C in file lists ... -./T-cd.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - ->file1 -mkdir dir ->dir/file2 ->dir/file3 -cat >F1 <<'_ATEOF' -file1 --C dir -. -_ATEOF - -tar cf archive -T F1 -tar tf archive | sort -) ./T-recurse.at:69: mkdir posix (cd posix @@ -3859,43 +3914,32 @@ tar tf archive ) -./T-recurse.at:30: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu + +33. T-empty.at:26: ok +34. T-null.at:21: testing 0-separated file without -0 ... +./T-null.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * -mkdir directory1 directory2 -touch directory1/file directory2/file - -cat >F1 <<'_ATEOF' ---no-recursion -directory1/ ---recursion -directory2/ -_ATEOF - - -cat >F2A <<'_ATEOF' -directory1/ -_ATEOF +test -z "`sort < /dev/null 2>&1`" || exit 77 -cat >F2B <<'_ATEOF' -directory2/ -_ATEOF +echo jeden > temp +echo dwa >> temp +echo trzy >> temp +cat temp | tr '\n' '\0' > file-list -a=archive -tar cf "$a" --files-from F1 -tar tf "$a" +genfile -f jeden +genfile -f dwa +genfile -f trzy -a=archive2 -tar cf "$a" --no-recursion -T F2A --recursion -T F2B -tar tf "$a" +tar cfTv archive file-list ) ./T-recurse.at:69: mkdir gnu @@ -3924,54 +3968,43 @@ tar tf archive ) -32. T-cd.at:21: ok - -30. T-recurse.at:27: ok -33. T-empty.at:26: testing empty entries ... -31. T-recurse.at:66: ok -./T-empty.at:36: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./T-recurse.at:30: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * +mkdir directory1 directory2 +touch directory1/file directory2/file -genfile --file jeden -genfile --file dwa -genfile --file trzy - -tar cfvT archive ../file-list -) - -33. T-empty.at:26: ok +cat >F1 <<'_ATEOF' +--no-recursion +directory1/ +--recursion +directory2/ +_ATEOF -34. T-null.at:21: testing 0-separated file without -0 ... -./T-null.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * +cat >F2A <<'_ATEOF' +directory1/ +_ATEOF -test -z "`sort < /dev/null 2>&1`" || exit 77 +cat >F2B <<'_ATEOF' +directory2/ +_ATEOF -echo jeden > temp -echo dwa >> temp -echo trzy >> temp -cat temp | tr '\n' '\0' > file-list -genfile -f jeden -genfile -f dwa -genfile -f trzy +a=archive +tar cf "$a" --files-from F1 +tar tf "$a" -tar cfTv archive file-list +a=archive2 +tar cf "$a" --no-recursion -T F2A --recursion -T F2B +tar tf "$a" ) 35. T-null2.at:17: testing --null enables verbatim reading ... @@ -3999,6 +4032,12 @@ cat file-list | tr '\n' '\0' | tar -c -f archive -v --null -T - ) +31. T-recurse.at:66: ok +34. T-null.at:21: ok +30. T-recurse.at:27: ok + +35. T-null2.at:17: ok + 36. T-zfile.at:26: testing empty file ... ./T-zfile.at:29: mkdir ustar @@ -4024,10 +4063,7 @@ tar cf archive -T valid -T empty tar tf archive ) -35. T-null2.at:17: ok -34. T-null.at:21: ok -36. T-zfile.at:26: ok 37. T-nonl.at:27: testing entries with missing newlines ... ./T-nonl.at:30: @@ -4076,7 +4112,6 @@ echo dir > list tar xfTv archive list | sort ) - 39. T-dir01.at:28: testing trailing slash in --files-from ... ./T-dir01.at:30: mkdir v7 @@ -4098,7 +4133,7 @@ echo dir/ > list tar xfTv archive list | sort ) -37. T-nonl.at:27: ok +36. T-zfile.at:26: ok ./T-dir00.at:30: mkdir oldgnu (cd oldgnu @@ -4119,6 +4154,8 @@ echo dir > list tar xfTv archive list | sort ) +37. T-nonl.at:27: ok + ./T-dir01.at:30: mkdir oldgnu (cd oldgnu @@ -4160,6 +4197,22 @@ echo "Testing the archive" tar -tf archive ) +41. verbose.at:26: testing tar cvf - ... +./verbose.at:29: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +genfile --file file --length 10240 +echo Creating the archive +tar cvf - file > archive +echo Testing the archive +tar tf archive +) ./T-dir00.at:30: mkdir ustar (cd ustar @@ -4180,6 +4233,25 @@ echo dir > list tar xfTv archive list | sort ) +./indexfile.at:29: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +mkdir directory +genfile --file=directory/a --length=1035 + +echo "Creating the archive" +tar -c -v -f - --index-file=idx directory > archive + +echo "Testing the archive" +tar -tf archive +) ./T-dir01.at:30: mkdir ustar (cd ustar @@ -4200,7 +4272,7 @@ echo dir/ > list tar xfTv archive list | sort ) -./indexfile.at:29: +./verbose.at:29: mkdir oldgnu (cd oldgnu TEST_TAR_FORMAT=oldgnu @@ -4209,15 +4281,11 @@ export TAR_OPTIONS rm -rf * - -mkdir directory -genfile --file=directory/a --length=1035 - -echo "Creating the archive" -tar -c -v -f - --index-file=idx directory > archive - -echo "Testing the archive" -tar -tf archive +genfile --file file --length 10240 +echo Creating the archive +tar cvf - file > archive +echo Testing the archive +tar tf archive ) ./indexfile.at:29: mkdir ustar @@ -4258,25 +4326,20 @@ echo dir > list tar xfTv archive list | sort ) -./T-dir01.at:30: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./verbose.at:29: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir dir -genfile -f dir/file1 -genfile -f dir/file2 -tar cf archive dir -rm -rf dir -echo dir/ > list -tar xfTv archive list | sort +genfile --file file --length 10240 +echo Creating the archive +tar cvf - file > archive +echo Testing the archive +tar tf archive ) ./indexfile.at:29: mkdir posix @@ -4297,6 +4360,26 @@ echo "Testing the archive" tar -tf archive ) +./T-dir01.at:30: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir dir +genfile -f dir/file1 +genfile -f dir/file2 +tar cf archive dir +rm -rf dir +echo dir/ > list +tar xfTv archive list | sort +) ./T-dir00.at:30: mkdir gnu (cd gnu @@ -4317,6 +4400,21 @@ echo dir > list tar xfTv archive list | sort ) +./verbose.at:29: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +genfile --file file --length 10240 +echo Creating the archive +tar cvf - file > archive +echo Testing the archive +tar tf archive +) ./indexfile.at:29: mkdir gnu (cd gnu @@ -4357,17 +4455,12 @@ tar xfTv archive list | sort ) 40. indexfile.at:26: ok -38. T-dir00.at:28: ok - -39. T-dir01.at:28: ok - -41. verbose.at:26: testing tar cvf - ... ./verbose.at:29: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -4377,8 +4470,9 @@ echo Testing the archive tar tf archive ) +38. T-dir00.at:28: ok -42. gzip.at:23: testing gzip ... +39. T-dir01.at:28: 42. gzip.at:23: testing gzip ... ./gzip.at:28: cat /dev/null | gzip - > /dev/null 2>&1 || exit 77 @@ -4388,22 +4482,9 @@ sed -n '/^tar:/p' err >&2 exit $RC -42. gzip.at:23: ok -./verbose.at:29: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * + ok -genfile --file file --length 10240 -echo Creating the archive -tar cvf - file > archive -echo Testing the archive -tar tf archive -) +41. verbose.at:26: ok 43. recurse.at:21: testing recurse ... ./recurse.at:24: mkdir v7 @@ -4420,21 +4501,8 @@ tar tf archive ) -./verbose.at:29: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * +42. gzip.at:23: ok -genfile --file file --length 10240 -echo Creating the archive -tar cvf - file > archive -echo Testing the archive -tar tf archive -) ./recurse.at:24: mkdir oldgnu (cd oldgnu @@ -4470,27 +4538,28 @@ --no-recursion directory1 \ --recursion directory2 || exit 1 ) -./recurs02.at:33: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu + +45. shortrec.at:25: testing short records ... +./shortrec.at:28: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * -mkdir directory1 directory2 -touch directory1/file directory2/file -tar --create --file archive \ - --no-recursion directory1 \ - --recursion directory2 || exit 1 -tar tf archive -tar cf archive directory1 directory2 -tar tf archive \ - --no-recursion directory1 \ - --recursion directory2 || exit 1 +mkdir directory +(cd directory && touch a b c d e f g h i j k l m n o p q r) +tar -c -b 1 -f - directory | tar -t -f - > /dev/null +tar -c -b 1 -f archive directory +tar -t -f archive > /dev/null +tar -t -f - < archive > /dev/null + +rm -r directory ) -./verbose.at:29: +46. numeric.at:18: testing --numeric-owner basic tests ... +./numeric.at:29: mkdir posix (cd posix TEST_TAR_FORMAT=posix @@ -4499,11 +4568,37 @@ export TAR_OPTIONS rm -rf * -genfile --file file --length 10240 -echo Creating the archive -tar cvf - file > archive -echo Testing the archive -tar tf archive +MYUID=$(id -u) || exit 77 +MYGID=$(id -g) || exit 77 +MYUSR=$(id -un) || exit 77 +MYGRP=$(id -gn) || exit 77 + +mkdir dir +# Ensure correct group id on BSDs. +chown :$MYGID dir >/dev/null 2>/dev/null +genfile --file dir/file + + + +decho --create +tar --create -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' +tar --create -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' + + +decho --list +tar --list -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' +tar --list -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' + + +decho --diff +tar --diff -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' +tar --diff -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' + + +decho --extract +tar --extract -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' +tar --extract -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' + ) ./recurse.at:24: mkdir ustar @@ -4520,11 +4615,11 @@ tar tf archive ) ./recurs02.at:33: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -4539,20 +4634,23 @@ --no-recursion directory1 \ --recursion directory2 || exit 1 ) -./verbose.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +./shortrec.at:28: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * -genfile --file file --length 10240 -echo Creating the archive -tar cvf - file > archive -echo Testing the archive -tar tf archive +mkdir directory +(cd directory && touch a b c d e f g h i j k l m n o p q r) +tar -c -b 1 -f - directory | tar -t -f - > /dev/null +tar -c -b 1 -f archive directory +tar -t -f archive > /dev/null +tar -t -f - < archive > /dev/null + +rm -r directory ) ./recurse.at:24: mkdir posix @@ -4568,27 +4666,12 @@ tar --create --file archive --no-recursion directory || exit 1 tar tf archive ) -./recurse.at:24: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -mkdir directory -touch directory/file -tar --create --file archive --no-recursion directory || exit 1 -tar tf archive -) -41. verbose.at:26: ok ./recurs02.at:33: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -4603,15 +4686,26 @@ --no-recursion directory1 \ --recursion directory2 || exit 1 ) +./recurse.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * -43. recurse.at:21: ok -45. shortrec.at:25: testing short records ... +mkdir directory +touch directory/file +tar --create --file archive --no-recursion directory || exit 1 +tar tf archive +) ./shortrec.at:28: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -4625,11 +4719,11 @@ rm -r directory ) ./recurs02.at:33: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -4644,14 +4738,12 @@ --no-recursion directory1 \ --recursion directory2 || exit 1 ) - -46. numeric.at:18: testing --numeric-owner basic tests ... ./numeric.at:29: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -4688,11 +4780,11 @@ ) ./shortrec.at:28: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -4705,26 +4797,8 @@ rm -r directory ) -44. recurs02.at:30: ok - -./shortrec.at:28: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -mkdir directory -(cd directory && touch a b c d e f g h i j k l m n o p q r) -tar -c -b 1 -f - directory | tar -t -f - > /dev/null -tar -c -b 1 -f archive directory -tar -t -f archive > /dev/null -tar -t -f - < archive > /dev/null +43. recurse.at:21: ok -rm -r directory -) 47. same-order01.at:26: testing working -C with --same-order ... ./same-order01.at:29: mkdir v7 @@ -4748,7 +4822,7 @@ ls directory|sort ) -./numeric.at:29: +./recurs02.at:33: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -4757,77 +4831,16 @@ export TAR_OPTIONS rm -rf * -MYUID=$(id -u) || exit 77 -MYGID=$(id -g) || exit 77 -MYUSR=$(id -un) || exit 77 -MYGRP=$(id -gn) || exit 77 - -mkdir dir -# Ensure correct group id on BSDs. -chown :$MYGID dir >/dev/null 2>/dev/null -genfile --file dir/file - - - -decho --create -tar --create -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' -tar --create -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' - - -decho --list -tar --list -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' -tar --list -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' - - -decho --diff -tar --diff -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' -tar --diff -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' - - -decho --extract -tar --extract -vvf a dir --numeric-owner | awk '=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' -tar --extract -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' - -) -./shortrec.at:28: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir directory -(cd directory && touch a b c d e f g h i j k l m n o p q r) -tar -c -b 1 -f - directory | tar -t -f - > /dev/null -tar -c -b 1 -f archive directory -tar -t -f archive > /dev/null -tar -t -f - < archive > /dev/null - -rm -r directory -) -./same-order01.at:29: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -genfile -l 1024 -f file1 -genfile -l 1024 -f file2 -tar cf archive file1 file2 - -mkdir directory -tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1 - -ls directory|sort +mkdir directory1 directory2 +touch directory1/file directory2/file +tar --create --file archive \ + --no-recursion directory1 \ + --recursion directory2 || exit 1 +tar tf archive +tar cf archive directory1 directory2 +tar tf archive \ + --no-recursion directory1 \ + --recursion directory2 || exit 1 ) ./shortrec.at:28: mkdir gnu @@ -4847,12 +4860,13 @@ rm -r directory ) +44. recurs02.at:30: ok ./same-order01.at:29: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -4869,7 +4883,6 @@ ls directory|sort ) -45. shortrec.at:25: ok ./numeric.at:29: mkdir ustar (cd ustar @@ -4911,13 +4924,40 @@ tar --extract -vvf a dir | awk '=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' ) +45. shortrec.at:25: ok + +48. same-order02.at:25: testing multiple -C options ... +./same-order02.at:28: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +genfile -l 1024 -f file1 +genfile -l 1024 -f file2 +tar cf archive file1 file2 +mkdir en +mkdir to + +HERE=`pwd` +tar -xf archive --same-order --warning=no-timestamp \ + -C $HERE/en file1 \ + -C $HERE/to file2 || exit 1 + +ls en +echo separator +ls to +) ./same-order01.at:29: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -4934,8 +4974,9 @@ ls directory|sort ) -48. same-order02.at:25: testing multiple -C options ... -./same-order02.at:28: + +49. append.at:21: testing append ... +./append.at:24: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -4943,6 +4984,19 @@ TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * +touch file1 + touch file2 + tar cf archive file1 + tar rf archive file2 + tar tf archive) +./same-order02.at:28: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * genfile -l 1024 -f file1 genfile -l 1024 -f file2 @@ -4961,11 +5015,11 @@ ls to ) ./same-order01.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -4982,7 +5036,7 @@ ls directory|sort ) -./same-order02.at:28: +./append.at:24: mkdir oldgnu (cd oldgnu TEST_TAR_FORMAT=oldgnu @@ -4990,6 +5044,19 @@ TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * +touch file1 + touch file2 + tar cf archive file1 + tar rf archive file2 + tar tf archive) +./same-order02.at:28: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * genfile -l 1024 -f file1 genfile -l 1024 -f file2 @@ -5049,11 +5116,11 @@ ) ./same-order02.at:28: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -5073,48 +5140,41 @@ echo separator ls to ) -47. same-order01.at:26: ok - -49. append.at:21: testing append ... -./append.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * -touch file1 - touch file2 - tar cf archive file1 - tar rf archive file2 - tar tf archive) -./same-order02.at:28: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./same-order01.at:29: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + genfile -l 1024 -f file1 genfile -l 1024 -f file2 tar cf archive file1 file2 -mkdir en -mkdir to - -HERE=`pwd` -tar -xf archive --same-order --warning=no-timestamp \ - -C $HERE/en file1 \ - -C $HERE/to file2 || exit 1 +mkdir directory +tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1 -ls en -echo separator -ls to +ls directory|sort ) -46. numeric.at:18: ok +./append.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * +touch file1 + touch file2 + tar cf archive file1 + tar rf archive file2 + tar tf archive) ./same-order02.at:28: mkdir gnu (cd gnu @@ -5140,12 +5200,13 @@ echo separator ls to ) +47. same-order01.at:26: ok ./append.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * touch file1 @@ -5154,6 +5215,7 @@ tar rf archive file2 tar tf archive) +48. same-order02.at:25: ok 50. append01.at:29: testing appending files with long names ... ./append01.at:34: mkdir oldgnu @@ -5170,20 +5232,7 @@ tar rf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 tar tf archive ) -./append.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * -touch file1 - touch file2 - tar cf archive file1 - tar rf archive file2 - tar tf archive) -48. same-order02.at:25: ok +46. numeric.at:18: ok ./append01.at:34: mkdir ustar (cd ustar @@ -5199,13 +5248,12 @@ tar rf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 tar tf archive ) - ./append.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * touch file1 @@ -5213,6 +5261,8 @@ tar cf archive file1 tar rf archive file2 tar tf archive) + + 51. append02.at:54: testing append vs. create ... ./append02.at:57: mkdir v7 @@ -5246,6 +5296,25 @@ echo Comparing archives cmp archive.1 archive.2 ) +52. append03.at:21: testing append with name transformation ... +./append03.at:26: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +genfile --file file.1 +genfile --file file.2 + +tar -c -f archive --transform 's/file/plik/' file.* +echo Appending +tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 +echo Testing +tar tf archive +) ./append01.at:34: mkdir posix (cd posix @@ -5261,7 +5330,26 @@ tar rf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 tar tf archive ) -./append.at:24: +49. append.at:21: ok +./append03.at:26: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +genfile --file file.1 +genfile --file file.2 + +tar -c -f archive --transform 's/file/plik/' file.* +echo Appending +tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 +echo Testing +tar tf archive +) +./append01.at:34: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -5269,11 +5357,13 @@ TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -touch file1 - touch file2 - tar cf archive file1 - tar rf archive file2 - tar tf archive) + +mkdir This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX +touch This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file1 This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 +tar cf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file1 +tar rf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 +tar tf archive +) ./append02.at:57: mkdir oldgnu (cd oldgnu @@ -5306,22 +5396,53 @@ echo Comparing archives cmp archive.1 archive.2 ) -./append01.at:34: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu + +53. append04.at:29: testing append with verify ... +./append04.at:32: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * -mkdir This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX -touch This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file1 This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 -tar cf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file1 -tar rf archive This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_appending_long_file_names_that_run_into_a_limit_of_the_ustar_tarX/file2 +# Create two empty files: +touch file1 file2 + +# Create an archive: +tar cpfW archive.tar file1 file2 + +# Verify created archive by listing its content: +tar -tf archive.tar +echo == +# Create another empty file: +touch file3 + +# Append it to the already created archive: +tar rpfW archive.tar file3 + +# Verify content of the new archive: +tar -tf archive.tar +) +./append03.at:26: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + +genfile --file file.1 +genfile --file file.2 + +tar -c -f archive --transform 's/file/plik/' file.* +echo Appending +tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 +echo Testing tar tf archive ) -49. append.at:21: ok ./append02.at:57: mkdir ustar (cd ustar @@ -5354,26 +5475,33 @@ echo Comparing archives cmp archive.1 archive.2 ) - 50. append01.at:29: ok -52. append03.at:21: testing append with name transformation ... -./append03.at:26: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./append04.at:32: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * -genfile --file file.1 -genfile --file file.2 +# Create two empty files: +touch file1 file2 -tar -c -f archive --transform 's/file/plik/' file.* -echo Appending -tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 -echo Testing -tar tf archive +# Create an archive: +tar cpfW archive.tar file1 file2 + +# Verify created archive by listing its content: +tar -tf archive.tar +echo == +# Create another empty file: +touch file3 + +# Append it to the already created archive: +tar rpfW archive.tar file3 + +# Verify content of the new archive: +tar -tf archive.tar ) ./append02.at:57: @@ -5408,8 +5536,8 @@ echo Comparing archives cmp archive.1 archive.2 ) -53. append04.at:29: testing append with verify ... -./append04.at:32: +54. append05.at:32: testing append after changed blocking ... +./append05.at:35: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -5418,30 +5546,33 @@ export TAR_OPTIONS rm -rf * -# Create two empty files: -touch file1 file2 +for f in a b c d e f g h i +do + echo $f > $f +done -# Create an archive: -tar cpfW archive.tar file1 file2 +decho 'creating archive' +tar -cf archive -b1 a b c -# Verify created archive by listing its content: -tar -tf archive.tar +tar tf archive + +decho 'adding d e f' +tar -vrf archive -b3 d e f echo == -# Create another empty file: -touch file3 +tar tf archive -# Append it to the already created archive: -tar rpfW archive.tar file3 +decho 'adding g h i' +tar -vrf archive -b5 g h i -# Verify content of the new archive: -tar -tf archive.tar +decho 'resulting archive' +tar tf archive ) ./append03.at:26: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -5486,7 +5617,7 @@ echo Comparing archives cmp archive.1 archive.2 ) -./append03.at:26: +./append04.at:32: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -5495,24 +5626,6 @@ export TAR_OPTIONS rm -rf * -genfile --file file.1 -genfile --file file.2 - -tar -c -f archive --transform 's/file/plik/' file.* -echo Appending -tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 -echo Testing -tar tf archive -) -./append04.at:32: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - # Create two empty files: touch file1 file2 @@ -5531,52 +5644,35 @@ # Verify content of the new archive: tar -tf archive.tar ) -./append03.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./append05.at:35: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * -genfile --file file.1 -genfile --file file.2 - -tar -c -f archive --transform 's/file/plik/' file.* -echo Appending -tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 -echo Testing -tar tf archive -) -51. append02.at:54: ok - -./append04.at:32: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * +for f in a b c d e f g h i +do + echo $f > $f +done -# Create two empty files: -touch file1 file2 +decho 'creating archive' +tar -cf archive -b1 a b c -# Create an archive: -tar cpfW archive.tar file1 file2 +tar tf archive -# Verify created archive by listing its content: -tar -tf archive.tar +decho 'adding d e f' +tar -vrf archive -b3 d e f echo == -# Create another empty file: -touch file3 +tar tf archive -# Append it to the already created archive: -tar rpfW archive.tar file3 +decho 'adding g h i' +tar -vrf archive -b5 g h i -# Verify content of the new archive: -tar -tf archive.tar +decho 'resulting archive' +tar tf archive ) ./append03.at:26: mkdir gnu @@ -5596,13 +5692,12 @@ echo Testing tar tf archive ) -54. append05.at:32: testing append after changed blocking ... ./append05.at:35: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -5627,7 +5722,6 @@ decho 'resulting archive' tar tf archive ) -52. append03.at:21: ok ./append04.at:32: mkdir posix (cd posix @@ -5655,12 +5749,14 @@ # Verify content of the new archive: tar -tf archive.tar ) +51. append02.at:54: ok +52. append03.at:21: ok ./append05.at:35: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -5686,36 +5782,6 @@ tar tf archive ) -55. xform-h.at:30: testing transforming hard links on create ... -./xform-h.at:39: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -mkdir basedir -echo "hello" > basedir/test -ln basedir/test basedir/test_link - - -echo "Default transform scope" -tar cf archive --transform="s,^basedir/,," basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - - -echo "Transforming hard links" -tar cf archive --transform="s,^basedir/,,h" basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - - -echo "Not transforming hard links" -tar cf archive --transform="s,^basedir/,,H" basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - -) ./append04.at:32: mkdir gnu (cd gnu @@ -5743,42 +5809,14 @@ # Verify content of the new archive: tar -tf archive.tar ) -./append05.at:35: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -for f in a b c d e f g h i -do - echo $f > $f -done - -decho 'creating archive' -tar -cf archive -b1 a b c -tar tf archive - -decho 'adding d e f' -tar -vrf archive -b3 d e f -echo == -tar tf archive - -decho 'adding g h i' -tar -vrf archive -b5 g h i - -decho 'resulting archive' -tar tf archive -) +55. xform-h.at:30: testing transforming hard links on create ... ./xform-h.at:39: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -5802,38 +5840,6 @@ tar tvf archive | sed -n 's/.*test_link link to //p' ) -53. append04.at:29: ok -./append05.at:35: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -for f in a b c d e f g h i -do - echo $f > $f -done - -decho 'creating archive' -tar -cf archive -b1 a b c - -tar tf archive - -decho 'adding d e f' -tar -vrf archive -b3 d e f -echo == -tar tf archive - -decho 'adding g h i' -tar -vrf archive -b5 g h i - -decho 'resulting archive' -tar tf archive -) - 56. xform01.at:26: testing transformations and GNU volume labels ... ./xform01.at:29: mkdir gnu @@ -5878,12 +5884,14 @@ decho 'resulting archive' tar tf archive ) +56. xform01.at:26: 53. append04.at:29: ok + ok ./xform-h.at:39: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -5907,37 +5915,7 @@ tar tvf archive | sed -n 's/.*test_link link to //p' ) -56. xform01.at:26: ok -./xform-h.at:39: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir basedir -echo "hello" > basedir/test -ln basedir/test basedir/test_link - - -echo "Default transform scope" -tar cf archive --transform="s,^basedir/,," basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - -echo "Transforming hard links" -tar cf archive --transform="s,^basedir/,,h" basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - - -echo "Not transforming hard links" -tar cf archive --transform="s,^basedir/,,H" basedir/test basedir/test_link -tar tvf archive | sed -n 's/.*test_link link to //p' - -) -54. append05.at:32: ok 57. xform02.at:21: testing transforming escaped delimiters on create ... ./xform02.at:24: @@ -5954,7 +5932,21 @@ --transform='s/file/other\/name/' \ --show-transformed-name ) +54. append05.at:32: ok +./xform02.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * +genfile --file file +tar cvf /dev/null file \ + --transform='s/file/other\/name/' \ + --show-transformed-name +) 58. xform03.at:21: testing transforming hard link targets ... ./xform03.at:24: mkdir v7 @@ -5974,12 +5966,27 @@ tar -C t -xf a.tar find t -type f ) + +./xform02.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + +genfile --file file +tar cvf /dev/null file \ + --transform='s/file/other\/name/' \ + --show-transformed-name +) ./xform-h.at:39: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -6003,27 +6010,56 @@ tar tvf archive | sed -n 's/.*test_link link to //p' ) -./xform02.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +59. exclude.at:23: testing exclude ... +./exclude.at:26: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * -genfile --file file -tar cvf /dev/null file \ - --transform='s/file/other\/name/' \ - --show-transformed-name + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +mkdir dir +echo blues > dir/blues +echo jazz > dir/jazz +mkdir dir/folk +echo tagfile > dir/folk/tagfile +echo sanjuan > dir/folk/sanjuan +mkdir dir/rock +echo "Signature: 8a477f597d28d172789f06886806bc55" > dir/rock/CACHEDIR.TAG +echo "test" > dir/rock/file + +for option in exclude-caches exclude-caches-under exclude-caches-all +do + echo OPTION $option + tar -cf archive.tar --$option -v dir 2>err | sort + cat err + echo ARCHIVE + tar tf archive.tar | sort +done + +for option in exclude-tag exclude-tag-under exclude-tag-all +do + echo OPTION $option + tar -cf archive.tar --${option}=tagfile -v dir 2>err | sort + cat err + echo ARCHIVE + tar tf archive.tar | sort +done ) stderr: +./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr ./xform02.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -6032,7 +6068,6 @@ --transform='s/file/other\/name/' \ --show-transformed-name ) -./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr ./xform03.at:24: mkdir oldgnu (cd oldgnu @@ -6051,22 +6086,6 @@ tar -C t -xf a.tar find t -type f ) -55. xform-h.at:30: ok -./xform02.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -genfile --file file -tar cvf /dev/null file \ - --transform='s/file/other\/name/' \ - --show-transformed-name -) - ./xform02.at:24: mkdir gnu (cd gnu @@ -6081,49 +6100,37 @@ --transform='s/file/other\/name/' \ --show-transformed-name ) -59. exclude.at:23: testing exclude ... -./exclude.at:26: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./xform-h.at:39: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * +mkdir basedir +echo "hello" > basedir/test +ln basedir/test basedir/test_link -test -z "`sort < /dev/null 2>&1`" || exit 77 +echo "Default transform scope" +tar cf archive --transform="s,^basedir/,," basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' -mkdir dir -echo blues > dir/blues -echo jazz > dir/jazz -mkdir dir/folk -echo tagfile > dir/folk/tagfile -echo sanjuan > dir/folk/sanjuan -mkdir dir/rock -echo "Signature: 8a477f597d28d172789f06886806bc55" > dir/rock/CACHEDIR.TAG -echo "test" > dir/rock/file -for option in exclude-caches exclude-caches-under exclude-caches-all -do - echo OPTION $option - tar -cf archive.tar --$option -v dir 2>err | sort - cat err - echo ARCHIVE - tar tf archive.tar | sort -done +echo "Transforming hard links" +tar cf archive --transform="s,^basedir/,,h" basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' + + +echo "Not transforming hard links" +tar cf archive --transform="s,^basedir/,,H" basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' -for option in exclude-tag exclude-tag-under exclude-tag-all -do - echo OPTION $option - tar -cf archive.tar --${option}=tagfile -v dir 2>err | sort - cat err - echo ARCHIVE - tar tf archive.tar | sort -done ) stderr: +57. xform02.at:21: ok ./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr ./xform03.at:24: mkdir ustar @@ -6143,9 +6150,8 @@ tar -C t -xf a.tar find t -type f ) -57. xform02.at:21: ok -stderr: +59. exclude.at:23: ok 60. exclude01.at:19: testing exclude wildcards ... ./exclude01.at:22: mkdir v7 @@ -6191,28 +6197,7 @@ rm -rf testdir ) -./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr -./xform03.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir d -mkdir d/a -genfile --file d/a/b -dir=$(pwd|sed s,^//*,,)/d -tar -cf a.tar --xform="s|^$dir/a|dir/c|" /$dir/a/b /$dir/a/b 2>err -mkdir t -tar -C t -xf a.tar -find t -type f -) -stderr: -./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr -./xform03.at:24: +./xform-h.at:39: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -6221,61 +6206,27 @@ export TAR_OPTIONS rm -rf * -mkdir d -mkdir d/a -genfile --file d/a/b -dir=$(pwd|sed s,^//*,,)/d -tar -cf a.tar --xform="s|^$dir/a|dir/c|" /$dir/a/b /$dir/a/b 2>err -mkdir t -tar -C t -xf a.tar -find t -type f -) -59. exclude.at:23: ok - -./exclude01.at:22: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 +mkdir basedir +echo "hello" > basedir/test +ln basedir/test basedir/test_link -rm -rf testdir -mkdir -p testdir/dir1 testdir/dir2 testdir/dir3 -touch testdir/dir1/file1 -touch testdir/dir1/\* -touch testdir/dir2/file2 -touch testdir/dir2/\* -touch testdir/dir3/file3 -touch testdir/dir3/\* +echo "Default transform scope" +tar cf archive --transform="s,^basedir/,," basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' -tar cf archive --exclude=testdir/dir1/\* \ - --no-wildcards \ - --exclude=testdir/dir2/\* \ - --wildcards \ - --exclude=testdir/dir3/\* \ - testdir -tar tf archive | sort -echo "NEXT" -tar cf archive testdir -tar t "testdir/dir1/*" -f archive | sort +echo "Transforming hard links" +tar cf archive --transform="s,^basedir/,,h" basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' -echo "NEXT" -tar cf archive testdir/dir1 -tar t --no-wildcards "testdir/dir1/*" -f archive | sort -echo "NEXT" -tar cf archive testdir -tar t --wildcards "testdir/dir1/*" -f archive | sort +echo "Not transforming hard links" +tar cf archive --transform="s,^basedir/,,H" basedir/test basedir/test_link +tar tvf archive | sed -n 's/.*test_link link to //p' -rm -rf testdir ) + 61. exclude02.at:19: testing exclude: anchoring ... ./exclude02.at:22: mkdir v7 @@ -6327,8 +6278,27 @@ ) stderr: ./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr -58. xform03.at:21: ok +./xform03.at:24: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +mkdir d +mkdir d/a +genfile --file d/a/b +dir=$(pwd|sed s,^//*,,)/d +tar -cf a.tar --xform="s|^$dir/a|dir/c|" /$dir/a/b /$dir/a/b 2>err +mkdir t +tar -C t -xf a.tar +find t -type f +) +55. xform-h.at:30: ok +stderr: 62. exclude03.at:19: testing exclude: wildcards match slash ... ./exclude03.at:22: mkdir v7 @@ -6374,12 +6344,79 @@ rm -rf testdir ) +./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr +./xform03.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +mkdir d +mkdir d/a +genfile --file d/a/b +dir=$(pwd|sed s,^//*,,)/d +tar -cf a.tar --xform="s|^$dir/a|dir/c|" /$dir/a/b /$dir/a/b 2>err +mkdir t +tar -C t -xf a.tar +find t -type f +) +./exclude02.at:22: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir +mkdir -p testdir +touch file1.txt +touch testdir/file1.txt +touch testdir/file2 + +tar cf archive --exclude="file1.txt" \ + testdir +tar tf archive | sort + +echo "SUB 1" +tar cf archive --no-anchored \ + --exclude="file1.txt" \ + testdir +tar tf archive | sort + +echo "SUB 2" +tar cf archive --anchored \ + --exclude="file1.txt" \ + testdir +tar tf archive | sort + +echo "SUB 3" +tar cf archive testdir file1.txt +tar t "file1.txt" -f archive | sort + +echo "SUB 4" +tar t --no-anchored "file1.txt" -f archive | sort + +echo "SUB 5" +tar t --anchored "file1.txt" -f archive | sort + +rm -rf testdir file1.txt + +) ./exclude01.at:22: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -6418,7 +6455,11 @@ rm -rf testdir ) -./exclude02.at:22: +stderr: +./xform03.at:24: sed "/tar: Removing leading \`\/*\/' from/d" stderr +58. xform03.at:21: ok + +./exclude03.at:22: mkdir oldgnu (cd oldgnu TEST_TAR_FORMAT=oldgnu @@ -6432,6 +6473,50 @@ rm -rf testdir +mkdir -p testdir/dir1 testdir/dir2 testdir/dir3 +touch testdir/\*f\*1 +touch testdir/dir1/file1 +touch testdir/dir1/\* +touch testdir/dir2/file2 +touch testdir/dir2/\* +touch testdir/dir3/file3 +touch testdir/dir3/\* + +tar cf archive --exclude='testdir*f*1' \ + --no-wildcards-match-slash \ + --exclude='testdir*f*2' \ + --wildcards-match-slash \ + --exclude='testdir*f*3' \ + testdir +tar tf archive | sort + +echo "NEXT" +tar cf archive testdir +tar t --wildcards 'testdir/*f*1' -f archive | sort + +echo "NEXT" +tar t --wildcards --no-wildcards-match-slash 'testdir/*f*1' -f archive | sort + +echo "NEXT" +tar t --wildcards --wildcards-match-slash 'testdir/*f*1' -f archive | sort + +rm -rf testdir + +) +./exclude02.at:22: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir mkdir -p testdir touch file1.txt touch testdir/file1.txt @@ -6466,12 +6551,13 @@ rm -rf testdir file1.txt ) -./exclude03.at:22: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +63. exclude04.at:19: testing exclude: case insensitive ... +./exclude04.at:22: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -6480,42 +6566,45 @@ rm -rf testdir -mkdir -p testdir/dir1 testdir/dir2 testdir/dir3 -touch testdir/\*f\*1 -touch testdir/dir1/file1 -touch testdir/dir1/\* -touch testdir/dir2/file2 -touch testdir/dir2/\* -touch testdir/dir3/file3 -touch testdir/dir3/\* +mkdir -p testdir/dir +touch testdir/file1 +touch testdir/file2 +touch testdir/file3 +touch testdir/file4 +touch testdir/dir/File1 +touch testdir/dir/File2 +touch testdir/dir/File3 +touch testdir/dir/File4 -tar cf archive --exclude='testdir*f*1' \ - --no-wildcards-match-slash \ - --exclude='testdir*f*2' \ - --wildcards-match-slash \ - --exclude='testdir*f*3' \ +tar cf archive --exclude=FILE2 \ + --exclude=file1 \ + --ignore-case \ + --exclude=file3 \ + --no-ignore-case \ + --exclude=FILE2 \ + --exclude=file4 \ testdir tar tf archive | sort -echo "NEXT" +echo "SUB 1" tar cf archive testdir -tar t --wildcards 'testdir/*f*1' -f archive | sort +tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort -echo "NEXT" -tar t --wildcards --no-wildcards-match-slash 'testdir/*f*1' -f archive | sort +echo "SUB 2" +tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort -echo "NEXT" -tar t --wildcards --wildcards-match-slash 'testdir/*f*1' -f archive | sort +echo "SUB 3" +tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort rm -rf testdir ) ./exclude01.at:22: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -6555,11 +6644,11 @@ rm -rf testdir ) ./exclude02.at:22: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -6602,6 +6691,53 @@ rm -rf testdir file1.txt ) +./exclude04.at:22: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir +mkdir -p testdir/dir +touch testdir/file1 +touch testdir/file2 +touch testdir/file3 +touch testdir/file4 +touch testdir/dir/File1 +touch testdir/dir/File2 +touch testdir/dir/File3 +touch testdir/dir/File4 + +tar cf archive --exclude=FILE2 \ + --exclude=file1 \ + --ignore-case \ + --exclude=file3 \ + --no-ignore-case \ + --exclude=FILE2 \ + --exclude=file4 \ + testdir +tar tf archive | sort + +echo "SUB 1" +tar cf archive testdir +tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort + +echo "SUB 2" +tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort + +echo "SUB 3" +tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort + +rm -rf testdir + +) ./exclude03.at:22: mkdir ustar (cd ustar @@ -6647,11 +6783,11 @@ ) ./exclude01.at:22: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -6690,54 +6826,6 @@ rm -rf testdir ) -./exclude02.at:22: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -rm -rf testdir -mkdir -p testdir -touch file1.txt -touch testdir/file1.txt -touch testdir/file2 - -tar cf archive --exclude="file1.txt" \ - testdir -tar tf archive | sort - -echo "SUB 1" -tar cf archive --no-anchored \ - --exclude="file1.txt" \ - testdir -tar tf archive | sort - -echo "SUB 2" -tar cf archive --anchored \ - --exclude="file1.txt" \ - testdir -tar tf archive | sort - -echo "SUB 3" -tar cf archive testdir file1.txt -tar t "file1.txt" -f archive | sort - -echo "SUB 4" -tar t --no-anchored "file1.txt" -f archive | sort - -echo "SUB 5" -tar t --anchored "file1.txt" -f archive | sort - -rm -rf testdir file1.txt - -) ./exclude03.at:22: mkdir posix (cd posix @@ -6782,8 +6870,53 @@ rm -rf testdir ) -60. exclude01.at:19: ok +./exclude04.at:22: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir +mkdir -p testdir/dir +touch testdir/file1 +touch testdir/file2 +touch testdir/file3 +touch testdir/file4 +touch testdir/dir/File1 +touch testdir/dir/File2 +touch testdir/dir/File3 +touch testdir/dir/File4 + +tar cf archive --exclude=FILE2 \ + --exclude=file1 \ + --ignore-case \ + --exclude=file3 \ + --no-ignore-case \ + --exclude=FILE2 \ + --exclude=file4 \ + testdir +tar tf archive | sort +echo "SUB 1" +tar cf archive testdir +tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort + +echo "SUB 2" +tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort + +echo "SUB 3" +tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort + +rm -rf testdir + +) ./exclude02.at:22: mkdir gnu (cd gnu @@ -6832,13 +6965,12 @@ rm -rf testdir file1.txt ) -63. exclude04.at:19: testing exclude: case insensitive ... -./exclude04.at:22: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./exclude01.at:22: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -6847,39 +6979,37 @@ rm -rf testdir -mkdir -p testdir/dir -touch testdir/file1 -touch testdir/file2 -touch testdir/file3 -touch testdir/file4 -touch testdir/dir/File1 -touch testdir/dir/File2 -touch testdir/dir/File3 -touch testdir/dir/File4 +mkdir -p testdir/dir1 testdir/dir2 testdir/dir3 +touch testdir/dir1/file1 +touch testdir/dir1/\* +touch testdir/dir2/file2 +touch testdir/dir2/\* +touch testdir/dir3/file3 +touch testdir/dir3/\* -tar cf archive --exclude=FILE2 \ - --exclude=file1 \ - --ignore-case \ - --exclude=file3 \ - --no-ignore-case \ - --exclude=FILE2 \ - --exclude=file4 \ +tar cf archive --exclude=testdir/dir1/\* \ + --no-wildcards \ + --exclude=testdir/dir2/\* \ + --wildcards \ + --exclude=testdir/dir3/\* \ testdir tar tf archive | sort -echo "SUB 1" +echo "NEXT" tar cf archive testdir -tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort +tar t "testdir/dir1/*" -f archive | sort -echo "SUB 2" -tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort +echo "NEXT" +tar cf archive testdir/dir1 +tar t --no-wildcards "testdir/dir1/*" -f archive | sort -echo "SUB 3" -tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort +echo "NEXT" +tar cf archive testdir +tar t --wildcards "testdir/dir1/*" -f archive | sort rm -rf testdir - ) +61. exclude02.at:19: ok ./exclude03.at:22: mkdir gnu (cd gnu @@ -6924,13 +7054,12 @@ rm -rf testdir ) -61. exclude02.at:19: ok ./exclude04.at:22: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -6972,8 +7101,8 @@ rm -rf testdir ) +60. exclude01.at:19: ok -62. exclude03.at:19: ok 64. exclude05.at:21: testing exclude: lots of excludes ... ./exclude05.at:24: mkdir v7 @@ -7031,12 +7160,14 @@ tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp find out -type f ) +62. exclude03.at:19: ok + ./exclude04.at:22: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -7078,8 +7209,6 @@ rm -rf testdir ) -65. exclude06.at:26: ok - 66. exclude07.at:19: testing exclude: --exclude-backups option ... ./exclude07.at:22: mkdir v7 @@ -7098,6 +7227,8 @@ tar -v -c -f archive --exclude-backups dir ) +65. exclude06.at:26: ok + ./exclude07.at:22: mkdir oldgnu (cd oldgnu @@ -7115,52 +7246,21 @@ tar -v -c -f archive --exclude-backups dir ) -./exclude04.at:22: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +67. exclude08.at:36: testing --exclude-tag option ... +./exclude08.at:39: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * test -z "`sort < /dev/null 2>&1`" || exit 77 - -rm -rf testdir -mkdir -p testdir/dir -touch testdir/file1 -touch testdir/file2 -touch testdir/file3 -touch testdir/file4 -touch testdir/dir/File1 -touch testdir/dir/File2 -touch testdir/dir/File3 -touch testdir/dir/File4 - -tar cf archive --exclude=FILE2 \ - --exclude=file1 \ - --ignore-case \ - --exclude=file3 \ - --no-ignore-case \ - --exclude=FILE2 \ - --exclude=file4 \ - testdir -tar tf archive | sort - -echo "SUB 1" -tar cf archive testdir -tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort - -echo "SUB 2" -tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort - -echo "SUB 3" -tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort - -rm -rf testdir - +mkexcltest etest +tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort ) ./exclude07.at:22: mkdir ustar @@ -7179,76 +7279,28 @@ tar -v -c -f archive --exclude-backups dir ) -./exclude07.at:22: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir dir -genfile --file dir/file -genfile --file dir/file~ -genfile --file "dir/.#file" -genfile --file "dir/#file#" - -tar -v -c -f archive --exclude-backups dir -) -./exclude04.at:22: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +63. exclude04.at:19: ok +./exclude08.at:39: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * test -z "`sort < /dev/null 2>&1`" || exit 77 - -rm -rf testdir -mkdir -p testdir/dir -touch testdir/file1 -touch testdir/file2 -touch testdir/file3 -touch testdir/file4 -touch testdir/dir/File1 -touch testdir/dir/File2 -touch testdir/dir/File3 -touch testdir/dir/File4 - -tar cf archive --exclude=FILE2 \ - --exclude=file1 \ - --ignore-case \ - --exclude=file3 \ - --no-ignore-case \ - --exclude=FILE2 \ - --exclude=file4 \ - testdir -tar tf archive | sort - -echo "SUB 1" -tar cf archive testdir -tar t --wildcards --wildcards-match-slash '*File2' -f archive | sort - -echo "SUB 2" -tar t --wildcards --wildcards-match-slash --ignore-case '*File2' -f archive | sort - -echo "SUB 3" -tar t --wildcards --wildcards-match-slash --no-ignore-case '*File2' -f archive | sort - -rm -rf testdir - +mkexcltest etest +tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort ) ./exclude07.at:22: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -7260,30 +7312,14 @@ tar -v -c -f archive --exclude-backups dir ) -66. exclude07.at:19: ok - -67. exclude08.at:36: testing --exclude-tag option ... -./exclude08.at:39: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkexcltest etest -tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort -) -./exclude08.at:39: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +68. exclude09.at:37: testing --exclude-tag option and --listed-incremental ... +./exclude09.at:40: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -7291,9 +7327,8 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 mkexcltest etest -tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort +tar -c -f etest.tar --exclude-tag=excludeme --listed=snar -v etest | sort ) -63. exclude04.at:19: ok ./exclude08.at:39: mkdir ustar (cd ustar @@ -7309,9 +7344,7 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort ) - -68. exclude09.at:37: testing --exclude-tag option and --listed-incremental ... -./exclude09.at:40: +./exclude07.at:22: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -7320,11 +7353,13 @@ export TAR_OPTIONS rm -rf * +mkdir dir +genfile --file dir/file +genfile --file dir/file~ +genfile --file "dir/.#file" +genfile --file "dir/#file#" -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkexcltest etest -tar -c -f etest.tar --exclude-tag=excludeme --listed=snar -v etest | sort +tar -v -c -f archive --exclude-backups dir ) ./exclude08.at:39: mkdir posix @@ -7342,13 +7377,16 @@ tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort ) 68. exclude09.at:37: ok +66. exclude07.at:19: ok -./exclude08.at:39: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu + +70. exclude11.at:36: testing --exclude-tag-under option ... +./exclude11.at:39: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -7356,7 +7394,7 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 mkexcltest etest -tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort +tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort ) 69. exclude10.at:38: testing --exclude-tag option in incremental pass ... ./exclude10.at:41: @@ -7382,28 +7420,7 @@ cp snar-0 snar-1 tar -c -f etest-1.tar --exclude-tag=excludeme --listed=snar-1 -v etest | sort ) -67. exclude08.at:36: ok - -69. exclude10.at:38: ok -70. exclude11.at:36: testing --exclude-tag-under option ... -./exclude11.at:39: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkexcltest etest -tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort -) - -71. exclude12.at:37: testing --exclude-tag-under and --listed-incremental ... -./exclude12.at:40: +./exclude08.at:39: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -7416,7 +7433,7 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 mkexcltest etest -tar -c -f etest.tar --exclude-tag-under=excludeme --listed=snar -v etest | sort +tar -c -f etest.tar --exclude-tag=excludeme -v etest | sort ) ./exclude11.at:39: mkdir oldgnu @@ -7433,8 +7450,9 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort ) -71. exclude12.at:37: ok +69. exclude10.at:38: ok +67. exclude08.at:36: ok ./exclude11.at:39: mkdir ustar (cd ustar @@ -7450,6 +7468,23 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort ) +71. exclude12.at:37: testing --exclude-tag-under and --listed-incremental ... +./exclude12.at:40: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkexcltest etest +tar -c -f etest.tar --exclude-tag-under=excludeme --listed=snar -v etest | sort +) + 72. exclude13.at:39: testing --exclude-tag-under option in incremental pass ... ./exclude13.at:42: mkdir gnu @@ -7489,14 +7524,15 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort ) -72. exclude13.at:39: ok +71. exclude12.at:37: ok -./exclude11.at:39: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +73. exclude14.at:36: testing --exclude-tag-all option ... +./exclude14.at:39: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -7504,15 +7540,14 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 mkexcltest etest -tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort +tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort ) -73. exclude14.at:36: testing --exclude-tag-all option ... -./exclude14.at:39: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./exclude11.at:39: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -7520,9 +7555,10 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 mkexcltest etest -tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort +tar -c -f etest.tar --exclude-tag-under=excludeme -v etest | sort ) -70. exclude11.at:36: ok +72. exclude13.at:39: ok + ./exclude14.at:39: mkdir oldgnu (cd oldgnu @@ -7538,7 +7574,6 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort ) - 74. exclude15.at:36: testing --exclude-tag-all and --listed-incremental ... ./exclude15.at:39: mkdir gnu @@ -7555,22 +7590,7 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-all=excludeme --listed=snar -v etest | sort ) -./exclude14.at:39: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkexcltest etest -tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort -) -74. exclude15.at:36: ok +70. exclude11.at:36: ok 75. exclude16.at:38: testing --exclude-tag-all option in incremental pass ... ./exclude16.at:41: @@ -7597,11 +7617,11 @@ tar -c -f etest-1.tar --exclude-tag-all=excludeme --listed=snar-1 -v etest | sort ) ./exclude14.at:39: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -7611,7 +7631,7 @@ mkexcltest etest tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort ) -75. exclude16.at:38: ok +74. exclude15.at:36: ok 76. exclude17.at:21: testing --exclude-vcs-ignores memory allocation ... ./exclude17.at:24: @@ -7629,11 +7649,11 @@ tar -cf - --exclude-vcs-ignores . | tar -tf - ) ./exclude14.at:39: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -7657,6 +7677,7 @@ echo '*.o' >.cvsignore tar -cf - --exclude-vcs-ignores . | tar -tf - ) +75. exclude16.at:38: ok ./exclude17.at:24: mkdir ustar (cd ustar @@ -7671,21 +7692,6 @@ echo '*.o' >.cvsignore tar -cf - --exclude-vcs-ignores . | tar -tf - ) -73. exclude14.at:36: ok -./exclude17.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir dir -cd dir -echo '*.o' >.cvsignore -tar -cf - --exclude-vcs-ignores . | tar -tf - -) 77. exclude18.at:30: testing --exclude-vcs extract list compare ... ./exclude18.at:33: @@ -7734,6 +7740,35 @@ tar -dvf gitrepo.tar --exclude-vcs gitrepo | sort ) +./exclude14.at:39: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkexcltest etest +tar -c -f etest.tar --exclude-tag-all=excludeme -v etest | sort +) +./exclude17.at:24: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +mkdir dir +cd dir +echo '*.o' >.cvsignore +tar -cf - --exclude-vcs-ignores . | tar -tf - +) ./exclude17.at:24: mkdir gnu (cd gnu @@ -7749,7 +7784,7 @@ tar -cf - --exclude-vcs-ignores . | tar -tf - ) 76. exclude17.at:21: ok - +73. exclude14.at:36: ok ./exclude18.at:33: mkdir oldgnu (cd oldgnu @@ -7796,6 +7831,8 @@ tar -dvf gitrepo.tar --exclude-vcs gitrepo | sort ) + + 78. delete01.at:23: testing deleting a member after a big one ... ./delete01.at:26: mkdir v7 @@ -7813,6 +7850,26 @@ tar tf archout tar f archive --delete file2 cmp archive archout) +79. delete02.at:23: testing deleting a member from stdin archive ... +./delete02.at:26: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +genfile -l 3073 -p zeros --file 1 +cp 1 2 +cp 2 3 +tar cf archive 1 2 3 +tar tf archive +cat archive | tar f - --delete 2 > archive2 +echo separator +tar tf archive2 +tar f - --delete 2 < archive > archive3 +cmp archive2 archive3) ./delete01.at:26: mkdir oldgnu (cd oldgnu @@ -7875,6 +7932,25 @@ tar -dvf gitrepo.tar --exclude-vcs gitrepo | sort ) +./delete02.at:26: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +genfile -l 3073 -p zeros --file 1 +cp 1 2 +cp 2 3 +tar cf archive 1 2 3 +tar tf archive +cat archive | tar f - --delete 2 > archive2 +echo separator +tar tf archive2 +tar f - --delete 2 < archive > archive3 +cmp archive2 archive3) ./delete01.at:26: mkdir ustar (cd ustar @@ -7891,6 +7967,25 @@ tar tf archout tar f archive --delete file2 cmp archive archout) +./delete02.at:26: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + +genfile -l 3073 -p zeros --file 1 +cp 1 2 +cp 2 3 +tar cf archive 1 2 3 +tar tf archive +cat archive | tar f - --delete 2 > archive2 +echo separator +tar tf archive2 +tar f - --delete 2 < archive > archive3 +cmp archive2 archive3) ./exclude18.at:33: mkdir posix (cd posix @@ -7953,6 +8048,25 @@ tar tf archout tar f archive --delete file2 cmp archive archout) +./delete02.at:26: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +genfile -l 3073 -p zeros --file 1 +cp 1 2 +cp 2 3 +tar cf archive 1 2 3 +tar tf archive +cat archive | tar f - --delete 2 > archive2 +echo separator +tar tf archive2 +tar f - --delete 2 < archive > archive3 +cmp archive2 archive3) ./delete01.at:26: mkdir gnu (cd gnu @@ -8016,14 +8130,12 @@ ) 78. delete01.at:23: ok - -79. delete02.at:23: testing deleting a member from stdin archive ... ./delete02.at:26: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -8037,27 +8149,7 @@ tar tf archive2 tar f - --delete 2 < archive > archive3 cmp archive2 archive3) -77. exclude18.at:30: ok - -./delete02.at:26: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * -genfile -l 3073 -p zeros --file 1 -cp 1 2 -cp 2 3 -tar cf archive 1 2 3 -tar tf archive -cat archive | tar f - --delete 2 > archive2 -echo separator -tar tf archive2 -tar f - --delete 2 < archive > archive3 -cmp archive2 archive3) 80. delete03.at:21: testing deleting members with long names ... ./delete03.at:26: mkdir gnu @@ -8078,102 +8170,9 @@ tar --delete -f archive ./${prefix}5 && tar -tf archive ) -./delete03.at:26: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -prefix=This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_file_names_that_run_into_a_limit_of_the_posix_tar_formatXX -rm -f $prefix* -for i in 1 2 3 4 5 6 7 8 9 -do touch $prefix$i -done -tar -cf archive ./$prefix* && - tar --delete -f archive ./${prefix}5 && - tar -tf archive -) -./delete02.at:26: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -genfile -l 3073 -p zeros --file 1 -cp 1 2 -cp 2 3 -tar cf archive 1 2 3 -tar tf archive -cat archive | tar f - --delete 2 > archive2 -echo separator -tar tf archive2 -tar f - --delete 2 < archive > archive3 -cmp archive2 archive3) -./delete02.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -genfile -l 3073 -p zeros --file 1 -cp 1 2 -cp 2 3 -tar cf archive 1 2 3 -tar tf archive -cat archive | tar f - --delete 2 > archive2 -echo separator -tar tf archive2 -tar f - --delete 2 < archive > archive3 -cmp archive2 archive3) -./delete03.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -prefix=This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_file_names_that_run_into_a_limit_of_the_posix_tar_formatXX -rm -f $prefix* -for i in 1 2 3 4 5 6 7 8 9 -do touch $prefix$i -done -tar -cf archive ./$prefix* && - tar --delete -f archive ./${prefix}5 && - tar -tf archive -) -80. delete03.at:21: ok -./delete02.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * +77. exclude18.at:30: ok +79. delete02.at:23: ok -genfile -l 3073 -p zeros --file 1 -cp 1 2 -cp 2 3 -tar cf archive 1 2 3 -tar tf archive -cat archive | tar f - --delete 2 > archive2 -echo separator -tar tf archive2 -tar f - --delete 2 < archive > archive3 -cmp archive2 archive3) 81. delete04.at:23: testing deleting a large last member ... ./delete04.at:26: @@ -8199,8 +8198,26 @@ tar f archive --delete file10 tar tf archive ) -79. delete02.at:23: ok -./delete04.at:26: +82. delete05.at:27: testing deleting non-existing member ... +./delete05.at:30: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +genfile -l 1024 -f en +genfile -l 1024 -f to + +tar cf archive en to +# Make sure we don't use bogus blocking factor. +# GNU tar up to and including 1.14.91 produced an empty archive this way: +tar --file archive --blocking-factor=20 --delete tre +tar tf archive +) +./delete03.at:26: mkdir oldgnu (cd oldgnu TEST_TAR_FORMAT=oldgnu @@ -8209,28 +8226,22 @@ export TAR_OPTIONS rm -rf * -genfile -l 3 -f file1 -genfile -l 5 -f file2 -genfile -l 3 -f file3 -genfile -l 6 -f file4 -genfile -l 24 -f file5 -genfile -l 13 -f file6 -genfile -l 1385 -f file7 -genfile -l 30 -f file8 -genfile -l 10 -f file9 -genfile -l 256000 -f file10 -tar cf archive file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 -tar f archive --delete file10 -tar tf archive -) -82. delete05.at:27: testing deleting non-existing member ... +prefix=This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_file_names_that_run_into_a_limit_of_the_posix_tar_formatXX +rm -f $prefix* +for i in 1 2 3 4 5 6 7 8 9 +do touch $prefix$i +done +tar -cf archive ./$prefix* && + tar --delete -f archive ./${prefix}5 && + tar -tf archive +) ./delete05.at:30: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -8244,11 +8255,11 @@ tar tf archive ) ./delete04.at:26: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -8266,23 +8277,24 @@ tar f archive --delete file10 tar tf archive ) -./delete05.at:30: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +./delete03.at:26: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * -genfile -l 1024 -f en -genfile -l 1024 -f to -tar cf archive en to -# Make sure we don't use bogus blocking factor. -# GNU tar up to and including 1.14.91 produced an empty archive this way: -tar --file archive --blocking-factor=20 --delete tre -tar tf archive +prefix=This_is_a_very_long_file_name_prefix_that_is_designed_to_cause_problems_with_file_names_that_run_into_a_limit_of_the_posix_tar_formatXX +rm -f $prefix* +for i in 1 2 3 4 5 6 7 8 9 +do touch $prefix$i +done +tar -cf archive ./$prefix* && + tar --delete -f archive ./${prefix}5 && + tar -tf archive ) ./delete05.at:30: mkdir ustar @@ -8302,29 +8314,6 @@ tar --file archive --blocking-factor=20 --delete tre tar tf archive ) -./delete04.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -genfile -l 3 -f file1 -genfile -l 5 -f file2 -genfile -l 3 -f file3 -genfile -l 6 -f file4 -genfile -l 24 -f file5 -genfile -l 13 -f file6 -genfile -l 1385 -f file7 -genfile -l 30 -f file8 -genfile -l 10 -f file9 -genfile -l 256000 -f file10 -tar cf archive file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 -tar f archive --delete file10 -tar tf archive -) ./delete05.at:30: mkdir posix (cd posix @@ -8344,11 +8333,11 @@ tar tf archive ) ./delete04.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -8366,6 +8355,7 @@ tar f archive --delete file10 tar tf archive ) +80. delete03.at:21: ok ./delete05.at:30: mkdir gnu (cd gnu @@ -8384,9 +8374,7 @@ tar --file archive --blocking-factor=20 --delete tre tar tf archive ) -82. delete05.at:27: ok -81. delete04.at:23: ok 83. delete06.at:25: testing EOF detection ... ./delete06.at:28: mkdir gnu @@ -8407,22 +8395,30 @@ dd if=archive.tar of=trunc.tar bs=$size count=1 2>/dev/null tar --delete 'b/' -f trunc.tar ) - -84. extrac01.at:23: testing extract over an existing directory ... -./extrac01.at:26: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./delete04.at:26: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * -mkdir directory -touch directory/file -tar cf archive directory || exit 1 -tar xf archive --warning=no-timestamp || exit 1 +genfile -l 3 -f file1 +genfile -l 5 -f file2 +genfile -l 3 -f file3 +genfile -l 6 -f file4 +genfile -l 24 -f file5 +genfile -l 13 -f file6 +genfile -l 1385 -f file7 +genfile -l 30 -f file8 +genfile -l 10 -f file9 +genfile -l 256000 -f file10 +tar cf archive file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 +tar f archive --delete file10 +tar tf archive ) +82. delete05.at:27: ok ./delete06.at:28: mkdir pax (cd pax @@ -8442,7 +8438,24 @@ dd if=archive.tar of=trunc.tar bs=$size count=1 2>/dev/null tar --delete 'b/' -f trunc.tar ) + +84. extrac01.at:23: testing extract over an existing directory ... +./extrac01.at:26: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +mkdir directory +touch directory/file +tar cf archive directory || exit 1 +tar xf archive --warning=no-timestamp || exit 1 +) 83. delete06.at:25: ok + ./extrac01.at:26: mkdir oldgnu (cd oldgnu @@ -8457,7 +8470,29 @@ tar cf archive directory || exit 1 tar xf archive --warning=no-timestamp || exit 1 ) +./delete04.at:26: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * +genfile -l 3 -f file1 +genfile -l 5 -f file2 +genfile -l 3 -f file3 +genfile -l 6 -f file4 +genfile -l 24 -f file5 +genfile -l 13 -f file6 +genfile -l 1385 -f file7 +genfile -l 30 -f file8 +genfile -l 10 -f file9 +genfile -l 256000 -f file10 +tar cf archive file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 +tar f archive --delete file10 +tar tf archive +) 85. extrac02.at:23: testing extracting symlinks over an existing file ... ./extrac02.at:28: mkdir v7 @@ -8519,20 +8554,7 @@ tar cf archive directory || exit 1 tar xf archive --warning=no-timestamp || exit 1 ) -./extrac01.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -mkdir directory -touch directory/file -tar cf archive directory || exit 1 -tar xf archive --warning=no-timestamp || exit 1 -) +81. delete04.at:23: ok ./extrac02.at:28: mkdir ustar (cd ustar @@ -8549,30 +8571,27 @@ touch link tar xf archive ) -84. extrac01.at:23: ./extrac02.at:28: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./extrac01.at:26: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -touch file -ln -s file link 2> /dev/null || ln file link -tar cf archive link -rm link -touch link -tar xf archive +mkdir directory +touch directory/file +tar cf archive directory || exit 1 +tar xf archive --warning=no-timestamp || exit 1 ) - ok ./extrac02.at:28: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -8597,7 +8616,7 @@ tar -cPvf archive directory/../directory echo separator tar -xPvf archive --warning=no-timestamp) -85. extrac02.at:23: ok +84. extrac01.at:23: ok ./extrac03.at:26: mkdir oldgnu (cd oldgnu @@ -8612,6 +8631,22 @@ echo separator tar -xPvf archive --warning=no-timestamp) +./extrac02.at:28: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +touch file +ln -s file link 2> /dev/null || ln file link +tar cf archive link +rm link +touch link +tar xf archive +) ./extrac03.at:26: mkdir ustar (cd ustar @@ -8651,6 +8686,7 @@ --exclude='d*/*1' \ --exclude='d*/s*/*2' | sort ) +85. extrac02.at:23: ok ./extrac03.at:26: mkdir posix (cd posix @@ -8664,19 +8700,7 @@ tar -cPvf archive directory/../directory echo separator tar -xPvf archive --warning=no-timestamp) -./extrac03.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * -mkdir directory -tar -cPvf archive directory/../directory -echo separator -tar -xPvf archive --warning=no-timestamp) ./extrac04.at:26: mkdir oldgnu (cd oldgnu @@ -8702,33 +8726,19 @@ --exclude='d*/*1' \ --exclude='d*/s*/*2' | sort ) -86. extrac03.at:23: ok - -./extrac04.at:26: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./extrac03.at:26: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -touch file1 mkdir directory -mkdir directory/subdirectory -touch directory/file1 -touch directory/file2 -touch directory/subdirectory/file1 -touch directory/subdirectory/file2 -tar -cf archive ./file1 directory -tar -tf archive \ - --exclude='./*1' \ - --exclude='d*/*1' \ - --exclude='d*/s*/*2' | sort -) +tar -cPvf archive directory/../directory +echo separator +tar -xPvf archive --warning=no-timestamp) 88. extrac05.at:30: testing extracting selected members from pax ... ./extrac05.at:38: mkdir posix @@ -8754,13 +8764,14 @@ cd .. ) -88. extrac05.at:30: ok +86. extrac03.at:23: ok + ./extrac04.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -8780,7 +8791,7 @@ --exclude='d*/*1' \ --exclude='d*/s*/*2' | sort ) - +88. extrac05.at:30: ok 89. extrac06.at:34: testing mode of extracted directories ... ./extrac06.at:37: mkdir v7 @@ -8819,12 +8830,49 @@ # After both restores, the directory mode should be 755 ) + +90. extrac07.at:27: testing extracting symlinks to a read-only dir ... +./extrac07.at:30: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +echo "test" > $$ +chmod 0 $$ +cat $$ > /dev/null 2>&1 +result=$? +rm -f $$ +test $result -eq 0 && exit 77 + + +echo Prepare the directory +mkdir dir +genfile -f foo +cd dir +ln -s ../foo . +cd .. +chmod a-w dir + +echo Create the archive +tar cf archive dir || exit 1 + +chmod +w dir + +echo Extract +mkdir out +tar -C out -xvf archive +) ./extrac04.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -8881,43 +8929,51 @@ # After both restores, the directory mode should be 755 ) -87. extrac04.at:23: ok +90. extrac07.at:27: ok -90. extrac07.at:27: testing extracting symlinks to a read-only dir ... -./extrac07.at:30: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./extrac04.at:26: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -echo "test" > $$ -chmod 0 $$ -cat $$ > /dev/null 2>&1 -result=$? -rm -f $$ -test $result -eq 0 && exit 77 +test -z "`sort < /dev/null 2>&1`" || exit 77 +touch file1 +mkdir directory +mkdir directory/subdirectory +touch directory/file1 +touch directory/file2 +touch directory/subdirectory/file1 +touch directory/subdirectory/file2 +tar -cf archive ./file1 directory +tar -tf archive \ + --exclude='./*1' \ + --exclude='d*/*1' \ + --exclude='d*/s*/*2' | sort +) +91. extrac08.at:33: testing restoring mode on existing directory ... +./extrac08.at:36: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * -echo Prepare the directory +umask 000 mkdir dir -genfile -f foo -cd dir -ln -s ../foo . -cd .. -chmod a-w dir - -echo Create the archive -tar cf archive dir || exit 1 - -chmod +w dir - -echo Extract -mkdir out -tar -C out -xvf archive +chmod 755 dir +echo bla > dir/file +tar cf test.tar dir +chmod 700 dir +tar xfv test.tar --warning=no-timestamp +genfile --stat=mode.777 dir ) ./extrac06.at:37: mkdir ustar @@ -8956,52 +9012,12 @@ # After both restores, the directory mode should be 755 ) -./extrac06.at:37: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -# Force umask -umask 022 - -# Make sure user's umask is honored, even if we are superuser -TAR_OPTIONS="$TAR_OPTIONS --no-same-permissions" - -# Create a directory -mkdir directory -chmod 777 directory -genfile --stat=mode:777 directory - -# Archive it -tar cf arc directory - -# Change its permissions ... -chmod 755 directory -genfile --stat=mode:777 directory - -# ... and attempt to restore it twice -tar xf arc directory --warning=no-timestamp -genfile --stat=mode:777 directory - -tar xf arc directory --warning=no-timestamp -genfile --stat=mode:777 directory - -# After both restores, the directory mode should be 755 -) -90. extrac07.at:27: ok - -91. extrac08.at:33: testing restoring mode on existing directory ... ./extrac08.at:36: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -9014,12 +9030,13 @@ tar xfv test.tar --warning=no-timestamp genfile --stat=mode.777 dir ) +87. extrac04.at:23: ok ./extrac06.at:37: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -9052,26 +9069,6 @@ # After both restores, the directory mode should be 755 ) ./extrac08.at:36: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - -umask 000 -mkdir dir -chmod 755 dir -echo bla > dir/file -tar cf test.tar dir -chmod 700 dir -tar xfv test.tar --warning=no-timestamp -genfile --stat=mode.777 dir -) -89. extrac06.at:34: ok - -./extrac08.at:36: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -9089,6 +9086,7 @@ tar xfv test.tar --warning=no-timestamp genfile --stat=mode.777 dir ) + 92. extrac09.at:34: testing extracting even when . and .. are unreadable ... ./extrac09.at:37: mkdir gnu @@ -9123,6 +9121,43 @@ cmp f extract/f || status=$? exit $status ) +./extrac06.at:37: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +# Force umask +umask 022 + +# Make sure user's umask is honored, even if we are superuser +TAR_OPTIONS="$TAR_OPTIONS --no-same-permissions" + +# Create a directory +mkdir directory +chmod 777 directory +genfile --stat=mode:777 directory + +# Archive it +tar cf arc directory + +# Change its permissions ... +chmod 755 directory +genfile --stat=mode:777 directory + +# ... and attempt to restore it twice +tar xf arc directory --warning=no-timestamp +genfile --stat=mode:777 directory + +tar xf arc directory --warning=no-timestamp +genfile --stat=mode:777 directory + +# After both restores, the directory mode should be 755 +) ./extrac08.at:36: mkdir posix (cd posix @@ -9141,7 +9176,7 @@ tar xfv test.tar --warning=no-timestamp genfile --stat=mode.777 dir ) -92. extrac09.at:34: ./extrac08.at:36: +./extrac08.at:36: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -9159,8 +9194,11 @@ tar xfv test.tar --warning=no-timestamp genfile --stat=mode.777 dir ) - ok +92. extrac09.at:34: ok +89. extrac06.at:34: ok + +91. extrac08.at:33: ok 93. extrac10.at:29: testing -C and delayed setting of metadata ... ./extrac10.at:32: mkdir gnu @@ -9180,9 +9218,6 @@ diff -r d x/d && diff e x/y/e ) -91. extrac08.at:33: ok - -93. extrac10.at:29: ok 94. extrac11.at:25: testing scarce file descriptors ... ./extrac11.at:28: mkdir gnu @@ -9252,6 +9287,7 @@ ) || { diff -r a dest3/a; exit 1; } ) +93. extrac10.at:29: ok 95. extrac12.at:25: testing extract dot permissions ... ./extrac12.at:28: mkdir gnu @@ -9272,10 +9308,9 @@ cmp src/file1 dst/file1 && cmp src/file2 dst/file2 ) + 94. extrac11.at:25: ok 95. extrac12.at:25: ok - - 96. extrac13.at:26: testing extract over symlinks ... ./extrac13.at:29: mkdir gnu @@ -9309,26 +9344,8 @@ diff src/file1 dst3/file1 && diff src/file1 dst3/target1 ) -97. extrac14.at:25: testing extract -C symlink ... -./extrac14.at:28: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * -mkdir dest -ln -s dest symlink -echo foo >foo -tar -cf archive.tar foo && -tar -xf archive.tar -C symlink --warning=no-timestamp && -cmp foo dest/foo -) -97. extrac14.at:25: ok -96. extrac13.at:26: ok 98. extrac15.at:25: testing extract parent mkdir failure ... ./extrac15.at:28: mkdir gnu @@ -9358,7 +9375,62 @@ else (exit 0) fi ) +97. extrac14.at:25: testing extract -C symlink ... +./extrac14.at:28: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +mkdir dest +ln -s dest symlink +echo foo >foo +tar -cf archive.tar foo && +tar -xf archive.tar -C symlink --warning=no-timestamp && +cmp foo dest/foo +) +97. extrac14.at:25: ok +./exclude05.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir exclfile +mkdir -p testdir +awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ + while read name + do + genfile --file $name + done +awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile + +tar cf archive --anchored --exclude-from=exclfile \ + testdir +tar tf archive | sort + +echo "NEXT" +tar cf archive --exclude-from=exclfile \ + testdir +tar tf archive | sort + +rm -rf testdir exclfile + +) +98. extrac15.at:25: ok +96. extrac13.at:26: + ok 99. extrac16.at:26: testing extract empty directory with -C ... ./extrac16.at:29: mkdir gnu @@ -9375,8 +9447,6 @@ tar -cf archive.tar -C src a && tar -xf archive.tar -C dest ) -98. extrac15.at:25: ok -99. extrac16.at:26: ok 100. extrac17.at:21: testing name matching/transformation ordering ... @@ -9398,6 +9468,7 @@ tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ dir/subdir1/ ) +99. extrac16.at:26: ok 101. extrac18.at:34: testing keep-old-files ... ./extrac18.at:37: mkdir v7 @@ -9423,6 +9494,7 @@ cat a ) + ./extrac17.at:34: mkdir oldgnu (cd oldgnu @@ -9441,12 +9513,13 @@ tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ dir/subdir1/ ) -./extrac18.at:37: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +102. extrac19.at:21: testing skip-old-files ... +./extrac19.at:24: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -9460,35 +9533,17 @@ rm b echo 'File a' > a -tar -x -k -f ../archive +tar -x --skip-old-files -f ../archive echo status=$? cat a ) -./extrac17.at:34: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -mkdir dir dir/subdir1 dir/subdir2 out -genfile --file dir/subdir1/file1 -genfile --file dir/subdir2/file2 - -tar cf dir.tar dir - -tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ - dir/subdir1/ -) ./extrac18.at:37: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -9508,29 +9563,11 @@ cat a ) ./extrac17.at:34: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir dir dir/subdir1 dir/subdir2 out -genfile --file dir/subdir1/file1 -genfile --file dir/subdir2/file2 - -tar cf dir.tar dir - -tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ - dir/subdir1/ -) -./extrac17.at:34: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -9543,12 +9580,12 @@ tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ dir/subdir1/ ) -./extrac18.at:37: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./extrac19.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -9562,18 +9599,17 @@ rm b echo 'File a' > a -tar -x -k -f ../archive +tar -x --skip-old-files -f ../archive echo status=$? cat a ) -100. extrac17.at:21: ok ./extrac18.at:37: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -9592,14 +9628,30 @@ cat a ) +./extrac17.at:34: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * -102. extrac19.at:21: testing skip-old-files ... +mkdir dir dir/subdir1 dir/subdir2 out +genfile --file dir/subdir1/file1 +genfile --file dir/subdir2/file2 + +tar cf dir.tar dir + +tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ + dir/subdir1/ +) ./extrac19.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -9618,14 +9670,12 @@ cat a ) -101. extrac18.at:34: ok - -./extrac19.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +./extrac18.at:37: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -9639,90 +9689,35 @@ rm b echo 'File a' > a -tar -x --skip-old-files -f ../archive +tar -x -k -f ../archive echo status=$? cat a ) -103. extrac20.at:21: testing keep-directory-symlink ... -./extrac20.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./extrac17.at:34: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * +mkdir dir dir/subdir1 dir/subdir2 out +genfile --file dir/subdir1/file1 +genfile --file dir/subdir2/file2 -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -for i in a b c -do - dir=in$i - mkdir -p $dir/root/dir $dir/root/dirsymlink - touch $dir/root/dirsymlink/file$i - test $i != a && touch $dir/root/dirsymlink/file.conflict - tar cf archive$i.tar -C $dir root -done - -prep() -{ - echo "== $1 ==" - echo "== $1 ==" >&2 - backup_dir=$1 - dir=out - mkdir -p $dir/root/dir - ln -s dir $dir/root/dirsymlink - test $round = normal && cd $dir >/dev/null -} - -clean() -{ - test $round = normal && cd .. >/dev/null - find $dir | sort - mv $dir $backup_dir -} - -# Expand to '-f ../$1' or '-f $1 -C $dir' depending on $round variable -file_spec() -{ - if test $round = normal - then - echo "-f ../$1" - else - echo "-f $1 -C $dir" - fi -} - -for round in normal dir -do - # Check that 'dirsymlink' replaces 'dir' - prep without_option_$round - tar -x `file_spec archivea.tar` || exit 1 - tar -x `file_spec archiveb.tar` || exit 1 - clean - - # Keep directory symlink must keep root/dirsymlink - prep with_option_$round - tar -x --keep-directory-symlink `file_spec archivea.tar` || exit 1 - tar -x --keep-directory-symlink `file_spec archiveb.tar` || exit 1 - clean +tar cf dir.tar dir - prep collision_$round - tar -x --keep-directory-symlink `file_spec archivea.tar` --keep-old-files || exit 1 - tar -x --keep-directory-symlink `file_spec archiveb.tar` --keep-old-files || exit 1 - tar -x --keep-directory-symlink `file_spec archivec.tar` --keep-old-files && exit 1 - clean -done +tar -x -v -f dir.tar -C out --strip-components=2 --warning=no-timestamp \ + dir/subdir1/ ) ./extrac19.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -9741,12 +9736,13 @@ cat a ) -./extrac19.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +100. extrac17.at:21: ok +./extrac18.at:37: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -9760,7 +9756,7 @@ rm b echo 'File a' > a -tar -x --skip-old-files -f ../archive +tar -x -k -f ../archive echo status=$? cat a @@ -9789,46 +9785,16 @@ cat a ) -102. extrac19.at:21: ok - -104. extrac21.at:31: testing delay-directory-restore ... -./extrac21.at:33: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - - -echo "test" > $$ -chmod 0 $$ -cat $$ > /dev/null 2>&1 -result=$? -rm -f $$ -test $result -eq 0 && exit 77 - - -mkdir a a/b a/c -genfile --file a/b/D -genfile --file a/c/A -cd a/b -ln -sf ../c/A -cd ../.. -chmod a-w a/b -tar --no-recurs -c -f A.tar a a/b a/b/D a/c a/b/A a/c/A -mkdir out -tar -C out -v -x -f A.tar --delay-directory-restore -) -104. extrac21.at:31: ok +101. extrac18.at:34: ok +102. extrac19.at:21: ok +103. extrac20.at:21: testing keep-directory-symlink ... ./extrac20.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -9895,6 +9861,8 @@ clean done ) + + 105. extrac22.at:19: testing delay-directory-restore on reversed ordering ... ./extrac22.at:29: mkdir v7 @@ -9943,54 +9911,8 @@ # Previous versions of tar would fail here with the following diagnostics: # tar: ./dir2/data2: Cannot unlink: Permission denied ) -./extrac22.at:29: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -echo "test" > $$ -chmod 0 $$ -cat $$ > /dev/null 2>&1 -result=$? -rm -f $$ -test $result -eq 0 && exit 77 - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir t -(cd t - genfile --length 100 --file data1 - mkdir dir1 - cp data1 dir1 - mkdir dir2 - cd dir2 - ln -s ../dir1/data1 data2 - cd .. - chmod -w dir2) - -cat >filelist <<'_ATEOF' -./dir2/data2 -./dir2 -./dir1/data1 -./dir1 -./data1 -_ATEOF - - -tar -C t -c -f a.tar --no-recursion -T filelist - -mkdir restore -tar -x -p --delay-directory-restore -C restore -f a.tar -# Previous versions of tar would fail here with the following diagnostics: -# tar: ./dir2/data2: Cannot unlink: Permission denied -) -./extrac22.at:29: +104. extrac21.at:31: testing delay-directory-restore ... +./extrac21.at:33: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -10008,41 +9930,24 @@ test $result -eq 0 && exit 77 -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir t -(cd t - genfile --length 100 --file data1 - mkdir dir1 - cp data1 dir1 - mkdir dir2 - cd dir2 - ln -s ../dir1/data1 data2 - cd .. - chmod -w dir2) - -cat >filelist <<'_ATEOF' -./dir2/data2 -./dir2 -./dir1/data1 -./dir1 -./data1 -_ATEOF - - -tar -C t -c -f a.tar --no-recursion -T filelist - -mkdir restore -tar -x -p --delay-directory-restore -C restore -f a.tar -# Previous versions of tar would fail here with the following diagnostics: -# tar: ./dir2/data2: Cannot unlink: Permission denied +mkdir a a/b a/c +genfile --file a/b/D +genfile --file a/c/A +cd a/b +ln -sf ../c/A +cd ../.. +chmod a-w a/b +tar --no-recurs -c -f A.tar a a/b a/b/D a/c a/b/A a/c/A +mkdir out +tar -C out -v -x -f A.tar --delay-directory-restore ) +104. extrac21.at:31: ok ./extrac22.at:29: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -10084,84 +9989,42 @@ # Previous versions of tar would fail here with the following diagnostics: # tar: ./dir2/data2: Cannot unlink: Permission denied ) -./extrac20.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar + +106. extrac23.at:18: testing --no-overwrite-dir ... +./extrac23.at:32: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * +# Test if the directory permissions are restored properly. +mkdir dir +chmod 755 dir +tar cf a.tar dir +chmod 777 dir +tar -xf a.tar --no-overwrite-dir +genfile --stat=mode.777 dir -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -for i in a b c -do - dir=in$i - mkdir -p $dir/root/dir $dir/root/dirsymlink - touch $dir/root/dirsymlink/file$i - test $i != a && touch $dir/root/dirsymlink/file.conflict - tar cf archive$i.tar -C $dir root -done - -prep() -{ - echo "== $1 ==" - echo "== $1 ==" >&2 - backup_dir=$1 - dir=out - mkdir -p $dir/root/dir - ln -s dir $dir/root/dirsymlink - test $round = normal && cd $dir >/dev/null -} - -clean() -{ - test $round = normal && cd .. >/dev/null - find $dir | sort - mv $dir $backup_dir -} - -# Expand to '-f ../$1' or '-f $1 -C $dir' depending on $round variable -file_spec() -{ - if test $round = normal - then - echo "-f ../$1" - else - echo "-f $1 -C $dir" - fi -} - -for round in normal dir -do - # Check that 'dirsymlink' replaces 'dir' - prep without_option_$round - tar -x `file_spec archivea.tar` || exit 1 - tar -x `file_spec archiveb.tar` || exit 1 - clean - - # Keep directory symlink must keep root/dirsymlink - prep with_option_$round - tar -x --keep-directory-symlink `file_spec archivea.tar` || exit 1 - tar -x --keep-directory-symlink `file_spec archiveb.tar` || exit 1 - clean - - prep collision_$round - tar -x --keep-directory-symlink `file_spec archivea.tar` --keep-old-files || exit 1 - tar -x --keep-directory-symlink `file_spec archiveb.tar` --keep-old-files || exit 1 - tar -x --keep-directory-symlink `file_spec archivec.tar` --keep-old-files && exit 1 - clean -done +# Test if temporary permissions are set correctly to allow the owner +# to write to the directory. +genfile --file dir/file +tar cf a.tar dir +rm dir/file +chmod 400 dir +tar -xf a.tar --no-overwrite-dir +genfile --stat=mode.777 dir +chmod 700 dir +find dir ) ./extrac22.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -10203,15 +10066,12 @@ # Previous versions of tar would fail here with the following diagnostics: # tar: ./dir2/data2: Cannot unlink: Permission denied ) -105. extrac22.at:19: ok - -106. extrac23.at:18: testing --no-overwrite-dir ... ./extrac23.at:32: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -10235,11 +10095,11 @@ find dir ) ./extrac23.at:32: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -10263,11 +10123,11 @@ find dir ) ./extrac20.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -10334,68 +10194,52 @@ clean done ) -./extrac23.at:32: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./extrac22.at:29: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * -# Test if the directory permissions are restored properly. -mkdir dir -chmod 755 dir -tar cf a.tar dir -chmod 777 dir -tar -xf a.tar --no-overwrite-dir -genfile --stat=mode.777 dir -# Test if temporary permissions are set correctly to allow the owner -# to write to the directory. -genfile --file dir/file -tar cf a.tar dir -rm dir/file -chmod 400 dir -tar -xf a.tar --no-overwrite-dir -genfile --stat=mode.777 dir -chmod 700 dir -find dir -) -./exclude05.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * +echo "test" > $$ +chmod 0 $$ +cat $$ > /dev/null 2>&1 +result=$? +rm -f $$ +test $result -eq 0 && exit 77 test -z "`sort < /dev/null 2>&1`" || exit 77 +mkdir t +(cd t + genfile --length 100 --file data1 + mkdir dir1 + cp data1 dir1 + mkdir dir2 + cd dir2 + ln -s ../dir1/data1 data2 + cd .. + chmod -w dir2) -rm -rf testdir exclfile -mkdir -p testdir -awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ - while read name - do - genfile --file $name - done - -awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile - -tar cf archive --anchored --exclude-from=exclfile \ - testdir -tar tf archive | sort +cat >filelist <<'_ATEOF' +./dir2/data2 +./dir2 +./dir1/data1 +./dir1 +./data1 +_ATEOF -echo "NEXT" -tar cf archive --exclude-from=exclfile \ - testdir -tar tf archive | sort -rm -rf testdir exclfile +tar -C t -c -f a.tar --no-recursion -T filelist +mkdir restore +tar -x -p --delay-directory-restore -C restore -f a.tar +# Previous versions of tar would fail here with the following diagnostics: +# tar: ./dir2/data2: Cannot unlink: Permission denied ) ./extrac23.at:32: mkdir posix @@ -10425,6 +10269,53 @@ chmod 700 dir find dir ) +./extrac22.at:29: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +echo "test" > $$ +chmod 0 $$ +cat $$ > /dev/null 2>&1 +result=$? +rm -f $$ +test $result -eq 0 && exit 77 + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir t +(cd t + genfile --length 100 --file data1 + mkdir dir1 + cp data1 dir1 + mkdir dir2 + cd dir2 + ln -s ../dir1/data1 data2 + cd .. + chmod -w dir2) + +cat >filelist <<'_ATEOF' +./dir2/data2 +./dir2 +./dir1/data1 +./dir1 +./data1 +_ATEOF + + +tar -C t -c -f a.tar --no-recursion -T filelist + +mkdir restore +tar -x -p --delay-directory-restore -C restore -f a.tar +# Previous versions of tar would fail here with the following diagnostics: +# tar: ./dir2/data2: Cannot unlink: Permission denied +) ./extrac23.at:32: mkdir gnu (cd gnu @@ -10453,8 +10344,10 @@ chmod 700 dir find dir ) +105. extrac22.at:19: ok 106. extrac23.at:18: ok + 107. extrac24.at:18: testing --to-stdout ... ./extrac24.at:29: mkdir v7 @@ -10472,6 +10365,24 @@ tar --extract --to-stdout --file a.tar test -d dir ) +108. extrac25.at:18: testing extract over parent dir that is dangling symlink ... +./extrac25.at:21: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +mkdir subdir +touch subdir/a.txt +tar -cf test.tar subdir/a.txt + +rm -rf subdir +ln -s does_not_exist subdir +tar -xvf test.tar +) ./extrac24.at:29: mkdir oldgnu (cd oldgnu @@ -10488,7 +10399,7 @@ tar --extract --to-stdout --file a.tar test -d dir ) -./extrac24.at:29: +./extrac20.at:24: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -10497,22 +10408,6 @@ export TAR_OPTIONS rm -rf * -mkdir dir/ -echo TEXT > dir/file -tar cf a.tar dir -rm -r dir -tar --extract --to-stdout --file a.tar -test -d dir -) -./extrac20.at:24: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - test -z "`sort < /dev/null 2>&1`" || exit 77 @@ -10577,11 +10472,11 @@ done ) ./extrac24.at:29: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -10592,12 +10487,29 @@ tar --extract --to-stdout --file a.tar test -d dir ) +./extrac25.at:21: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +mkdir subdir +touch subdir/a.txt +tar -cf test.tar subdir/a.txt + +rm -rf subdir +ln -s does_not_exist subdir +tar -xvf test.tar +) ./extrac24.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -10608,15 +10520,12 @@ tar --extract --to-stdout --file a.tar test -d dir ) -107. extrac24.at:18: ok - -108. extrac25.at:18: testing extract over parent dir that is dangling symlink ... ./extrac25.at:21: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -10628,29 +10537,28 @@ ln -s does_not_exist subdir tar -xvf test.tar ) -./extrac25.at:21: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +./extrac24.at:29: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -mkdir subdir -touch subdir/a.txt -tar -cf test.tar subdir/a.txt - -rm -rf subdir -ln -s does_not_exist subdir -tar -xvf test.tar +mkdir dir/ +echo TEXT > dir/file +tar cf a.tar dir +rm -r dir +tar --extract --to-stdout --file a.tar +test -d dir ) ./extrac25.at:21: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -10662,13 +10570,13 @@ ln -s does_not_exist subdir tar -xvf test.tar ) -103. extrac20.at:21: ok +107. extrac24.at:18: ok ./extrac25.at:21: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -10697,23 +10605,8 @@ tar cf test.tar dir1 dir2 tar xfv test.tar --backup --warning=no-timestamp ) -./extrac25.at:21: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -mkdir subdir -touch subdir/a.txt -tar -cf test.tar subdir/a.txt +108. extrac25.at:18: ok -rm -rf subdir -ln -s does_not_exist subdir -tar -xvf test.tar -) ./backup01.at:36: mkdir oldgnu (cd oldgnu @@ -10729,6 +10622,25 @@ tar cf test.tar dir1 dir2 tar xfv test.tar --backup --warning=no-timestamp ) +110. difflink.at:17: testing link mismatch ... +./difflink.at:19: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + +mkdir a +genfile -f a/x +ln -s x a/y +ln a/x a/z +tar cf a.tar a/x a/y a/z +rm a/z +ln -s x a/z +tar df a.tar +) ./backup01.at:36: mkdir ustar (cd ustar @@ -10744,7 +10656,6 @@ tar cf test.tar dir1 dir2 tar xfv test.tar --backup --warning=no-timestamp ) -108. extrac25.at:18: ok ./backup01.at:36: mkdir posix (cd posix @@ -10760,26 +10671,7 @@ tar cf test.tar dir1 dir2 tar xfv test.tar --backup --warning=no-timestamp ) - -110. difflink.at:17: testing link mismatch ... -./difflink.at:19: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -mkdir a -genfile -f a/x -ln -s x a/y -ln a/x a/z -tar cf a.tar a/x a/y a/z -rm a/z -ln -s x a/z -tar df a.tar -) +110. difflink.at:17: ok ./backup01.at:36: mkdir gnu (cd gnu @@ -10795,10 +10687,80 @@ tar cf test.tar dir1 dir2 tar xfv test.tar --backup --warning=no-timestamp ) -109. backup01.at:33: ok -110. difflink.at:17: ok +./extrac20.at:24: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +for i in a b c +do + dir=in$i + mkdir -p $dir/root/dir $dir/root/dirsymlink + touch $dir/root/dirsymlink/file$i + test $i != a && touch $dir/root/dirsymlink/file.conflict + tar cf archive$i.tar -C $dir root +done + +prep() +{ + echo "== $1 ==" + echo "== $1 ==" >&2 + backup_dir=$1 + dir=out + mkdir -p $dir/root/dir + ln -s dir $dir/root/dirsymlink + test $round = normal && cd $dir >/dev/null +} + +clean() +{ + test $round = normal && cd .. >/dev/null + find $dir | sort + mv $dir $backup_dir +} + +# Expand to '-f ../$1' or '-f $1 -C $dir' depending on $round variable +file_spec() +{ + if test $round = normal + then + echo "-f ../$1" + else + echo "-f $1 -C $dir" + fi +} + +for round in normal dir +do + # Check that 'dirsymlink' replaces 'dir' + prep without_option_$round + tar -x `file_spec archivea.tar` || exit 1 + tar -x `file_spec archiveb.tar` || exit 1 + clean + + # Keep directory symlink must keep root/dirsymlink + prep with_option_$round + tar -x --keep-directory-symlink `file_spec archivea.tar` || exit 1 + tar -x --keep-directory-symlink `file_spec archiveb.tar` || exit 1 + clean + prep collision_$round + tar -x --keep-directory-symlink `file_spec archivea.tar` --keep-old-files || exit 1 + tar -x --keep-directory-symlink `file_spec archiveb.tar` --keep-old-files || exit 1 + tar -x --keep-directory-symlink `file_spec archivec.tar` --keep-old-files && exit 1 + clean +done +) +109. backup01.at:33: ok 111. label01.at:21: testing single-volume label ... ./label01.at:24: mkdir gnu @@ -10814,6 +10776,21 @@ tar -cf archive --label=Test foo bar tar tf archive ) + +./label01.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +genfile --file foo +genfile --file bar +tar -cf archive --label=Test foo bar +tar tf archive +) 112. label02.at:21: testing multi-volume label ... ./label02.at:24: mkdir gnu @@ -10831,20 +10808,6 @@ tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar ) -./label01.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - -genfile --file foo -genfile --file bar -tar -cf archive --label=Test foo bar -tar tf archive -) ./label02.at:24: mkdir oldgnu (cd oldgnu @@ -10891,29 +10854,9 @@ tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar ) -112. label02.at:21: ok 111. label01.at:21: ok - -114. label04.at:27: testing label with non-create option ... -./label04.at:30: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -exec <&- -genfile --file file -decho "# Create volume" -tar -c -f archive --label='New volume' file -decho "# Update: wrong label" -tar -rf archive --label='My volume' file; echo $? -decho "# Update: right label" -tar -rf archive --label='New volume' file -) +112. label02.at:21: ok 113. label03.at:27: testing test-label option ... ./label03.at:30: mkdir gnu @@ -10947,12 +10890,14 @@ decho "# Test label: wildcards" tar --test-label --file=iamanarchive --wildcards '*label'; echo $? ) + +114. label04.at:27: testing label with non-create option ... ./label04.at:30: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -10966,11 +10911,11 @@ tar -rf archive --label='New volume' file ) ./label04.at:30: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -11015,7 +10960,96 @@ decho "# Test label: wildcards" tar --test-label --file=iamanarchive --wildcards '*label'; echo $? ) -114. label04.at:27: ok +./extrac20.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +for i in a b c +do + dir=in$i + mkdir -p $dir/root/dir $dir/root/dirsymlink + touch $dir/root/dirsymlink/file$i + test $i != a && touch $dir/root/dirsymlink/file.conflict + tar cf archive$i.tar -C $dir root +done + +prep() +{ + echo "== $1 ==" + echo "== $1 ==" >&2 + backup_dir=$1 + dir=out + mkdir -p $dir/root/dir + ln -s dir $dir/root/dirsymlink + test $round = normal && cd $dir >/dev/null +} + +clean() +{ + test $round = normal && cd .. >/dev/null + find $dir | sort + mv $dir $backup_dir +} + +# Expand to '-f ../$1' or '-f $1 -C $dir' depending on $round variable +file_spec() +{ + if test $round = normal + then + echo "-f ../$1" + else + echo "-f $1 -C $dir" + fi +} + +for round in normal dir +do + # Check that 'dirsymlink' replaces 'dir' + prep without_option_$round + tar -x `file_spec archivea.tar` || exit 1 + tar -x `file_spec archiveb.tar` || exit 1 + clean + + # Keep directory symlink must keep root/dirsymlink + prep with_option_$round + tar -x --keep-directory-symlink `file_spec archivea.tar` || exit 1 + tar -x --keep-directory-symlink `file_spec archiveb.tar` || exit 1 + clean + + prep collision_$round + tar -x --keep-directory-symlink `file_spec archivea.tar` --keep-old-files || exit 1 + tar -x --keep-directory-symlink `file_spec archiveb.tar` --keep-old-files || exit 1 + tar -x --keep-directory-symlink `file_spec archivec.tar` --keep-old-files && exit 1 + clean +done +) +./label04.at:30: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +exec <&- +genfile --file file +decho "# Create volume" +tar -c -f archive --label='New volume' file +decho "# Update: wrong label" +tar -rf archive --label='My volume' file; echo $? +decho "# Update: right label" +tar -rf archive --label='New volume' file +) ./label03.at:30: mkdir posix (cd posix @@ -11048,7 +11082,9 @@ decho "# Test label: wildcards" tar --test-label --file=iamanarchive --wildcards '*label'; echo $? ) +114. label04.at:27: ok +113. label03.at:27: ok 115. label05.at:24: testing label with non-create option ... ./label05.at:27: mkdir gnu @@ -11068,6 +11104,7 @@ decho "# Update: right label" tar -rf archive file ) + ./label05.at:27: mkdir oldgnu (cd oldgnu @@ -11086,26 +11123,6 @@ decho "# Update: right label" tar -rf archive file ) -113. label03.at:27: ok - -./label05.at:27: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -exec <&- -genfile --file file -decho "# Create volume" -tar -c -f archive file -decho "# Update: wrong label" -tar -rf archive --label='My volume' file; echo $? -decho "# Update: right label" -tar -rf archive file -) 116. incremental.at:23: testing incremental ... ./incremental.at:26: mkdir gnu @@ -11145,7 +11162,26 @@ echo y >structure/file tar cfv archive --listed=list structure ) +./label05.at:27: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +exec <&- +genfile --file file +decho "# Create volume" +tar -c -f archive file +decho "# Update: wrong label" +tar -rf archive --label='My volume' file; echo $? +decho "# Update: right label" +tar -rf archive file +) 115. label05.at:24: ok +103. extrac20.at:21: ok 117. incr01.at:27: testing restore broken symlinks from incremental ... ./incr01.at:30: @@ -11172,6 +11208,54 @@ echo separator tar xvfg archive.1 /dev/null --warning=no-timestamp ) + +118. incr02.at:32: testing restoring timestamps from incremental ... +./incr02.at:35: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +ckmtime || exit 77 +# Create directory structure +mkdir dir +mkdir dir/subdir1 +mkdir dir/subdir2 +genfile --length 10 --file dir/subdir1/file + +# Save mtime for later comparison +genfile --stat=mtime dir/subdir1 > ts + +# Create an archive. Using incremental mode makes sure the +# archive will have a directory-first member ordering, +# i.e.: +# dir/ +# dir/subdir1/ +# dir/subdir2/ +# dir/subdir1/foofile +# +# When restoring from this directory structure, 'dir/subdir2/' used to +# trigger apply_nonancestor_delayed_set_stat() which restored stats for +# 'subdir1' prior to restoring 'dir/subdir1/foofile'. Then, restoring the +# latter clobbered the directory timestamp. + +tar -cf archive -g db dir + +# Move away the directory +mv dir orig + +# Wait enough time for timestamps to differ in case of failure. +sleep 5 + +# Restore the directory +tar -xf archive dir + +# Check the timestamp +genfile --stat=mtime dir/subdir1 | diff ts - +) ./incr01.at:30: mkdir oldgnu (cd oldgnu @@ -11222,8 +11306,8 @@ ) 117. incr01.at:27: ok -118. incr02.at:32: testing restoring timestamps from incremental ... -./incr02.at:35: +119. listed01.at:26: testing --listed for individual files ... +./listed01.at:29: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -11233,41 +11317,66 @@ rm -rf * ckmtime || exit 77 -# Create directory structure -mkdir dir -mkdir dir/subdir1 -mkdir dir/subdir2 -genfile --length 10 --file dir/subdir1/file -# Save mtime for later comparison -genfile --stat=mtime dir/subdir1 > ts +mkdir directory +genfile --length 10240 --pattern zeros --file directory/file1 +# Let the things settle +sleep 1 -# Create an archive. Using incremental mode makes sure the -# archive will have a directory-first member ordering, -# i.e.: -# dir/ -# dir/subdir1/ -# dir/subdir2/ -# dir/subdir1/foofile -# -# When restoring from this directory structure, 'dir/subdir2/' used to -# trigger apply_nonancestor_delayed_set_stat() which restored stats for -# 'subdir1' prior to restoring 'dir/subdir1/foofile'. Then, restoring the -# latter clobbered the directory timestamp. +tar --create \ + --file=archive.1 \ + --listed-incremental=listing \ + directory/file* -tar -cf archive -g db dir +tar tf archive.1 || exit 1 -# Move away the directory -mv dir orig +sleep 2 -# Wait enough time for timestamps to differ in case of failure. -sleep 5 +genfile --length 10240 --pattern zeros --file directory/file2 -# Restore the directory -tar -xf archive dir +echo "separator" +cp listing listing.old +tar --create \ + --file=archive.2 \ + --listed-incremental=listing \ + directory/file* || exit 1 + +tar tf archive.2 || exit 1 +) +./exclude05.at:24: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir exclfile +mkdir -p testdir +awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ + while read name + do + genfile --file $name + done + +awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile + +tar cf archive --anchored --exclude-from=exclfile \ + testdir +tar tf archive | sort + +echo "NEXT" +tar cf archive --exclude-from=exclfile \ + testdir +tar tf archive | sort + +rm -rf testdir exclfile -# Check the timestamp -genfile --stat=mtime dir/subdir1 | diff ts - ) ./incremental.at:26: mkdir oldgnu @@ -11307,40 +11416,41 @@ echo y >structure/file tar cfv archive --listed=list structure ) -./exclude05.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./listed01.at:29: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * +ckmtime || exit 77 -test -z "`sort < /dev/null 2>&1`" || exit 77 - +mkdir directory +genfile --length 10240 --pattern zeros --file directory/file1 +# Let the things settle +sleep 1 -rm -rf testdir exclfile -mkdir -p testdir -awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ - while read name - do - genfile --file $name - done +tar --create \ + --file=archive.1 \ + --listed-incremental=listing \ + directory/file* -awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile +tar tf archive.1 || exit 1 -tar cf archive --anchored --exclude-from=exclfile \ - testdir -tar tf archive | sort +sleep 2 -echo "NEXT" -tar cf archive --exclude-from=exclfile \ - testdir -tar tf archive | sort +genfile --length 10240 --pattern zeros --file directory/file2 -rm -rf testdir exclfile +echo "separator" +cp listing listing.old +tar --create \ + --file=archive.2 \ + --listed-incremental=listing \ + directory/file* || exit 1 +tar tf archive.2 || exit 1 ) ./incr02.at:35: mkdir oldgnu @@ -11426,45 +11536,6 @@ echo y >structure/file tar cfv archive --listed=list structure ) -116. incremental.at:23: ok - -119. listed01.at:26: testing --listed for individual files ... -./listed01.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 - -mkdir directory -genfile --length 10240 --pattern zeros --file directory/file1 -# Let the things settle -sleep 1 - -tar --create \ - --file=archive.1 \ - --listed-incremental=listing \ - directory/file* - -tar tf archive.1 || exit 1 - -sleep 2 - -genfile --length 10240 --pattern zeros --file directory/file2 - -echo "separator" -cp listing listing.old -tar --create \ - --file=archive.2 \ - --listed-incremental=listing \ - directory/file* || exit 1 - -tar tf archive.2 || exit 1 -) ./exclude05.at:24: mkdir posix (cd posix @@ -11500,88 +11571,6 @@ rm -rf testdir exclfile ) -./incr02.at:35: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 -# Create directory structure -mkdir dir -mkdir dir/subdir1 -mkdir dir/subdir2 -genfile --length 10 --file dir/subdir1/file - -# Save mtime for later comparison -genfile --stat=mtime dir/subdir1 > ts - -# Create an archive. Using incremental mode makes sure the -# archive will have a directory-first member ordering, -# i.e.: -# dir/ -# dir/subdir1/ -# dir/subdir2/ -# dir/subdir1/foofile -# -# When restoring from this directory structure, 'dir/subdir2/' used to -# trigger apply_nonancestor_delayed_set_stat() which restored stats for -# 'subdir1' prior to restoring 'dir/subdir1/foofile'. Then, restoring the -# latter clobbered the directory timestamp. - -tar -cf archive -g db dir - -# Move away the directory -mv dir orig - -# Wait enough time for timestamps to differ in case of failure. -sleep 5 - -# Restore the directory -tar -xf archive dir - -# Check the timestamp -genfile --stat=mtime dir/subdir1 | diff ts - -) -./listed01.at:29: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 - -mkdir directory -genfile --length 10240 --pattern zeros --file directory/file1 -# Let the things settle -sleep 1 - -tar --create \ - --file=archive.1 \ - --listed-incremental=listing \ - directory/file* - -tar tf archive.1 || exit 1 - -sleep 2 - -genfile --length 10240 --pattern zeros --file directory/file2 - -echo "separator" -cp listing listing.old -tar --create \ - --file=archive.2 \ - --listed-incremental=listing \ - directory/file* || exit 1 - -tar tf archive.2 || exit 1 -) 119. listed01.at:26: ok 120. listed02.at:28: testing working --listed ... @@ -11654,42 +11643,7 @@ echo Final files: find tart -print | sort 2>/dev/null ) -./exclude05.at:24: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -rm -rf testdir exclfile -mkdir -p testdir -awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ - while read name - do - genfile --file $name - done - -awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile - -tar cf archive --anchored --exclude-from=exclfile \ - testdir -tar tf archive | sort - -echo "NEXT" -tar cf archive --exclude-from=exclfile \ - testdir -tar tf archive | sort - -rm -rf testdir exclfile - -) -118. incr02.at:32: ok +116. incremental.at:23: ok 121. listed03.at:24: testing incremental dump when the parent directory is unreadable ... ./listed03.at:27: @@ -11793,15 +11747,15 @@ umount tartest/subdir ) ---- - 2024-04-21 14:13:11.728888380 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/123/stderr 2024-04-21 14:13:11.721688440 +0000 +--- - 2024-04-21 14:21:39.860113427 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/123/stderr 2024-04-21 14:21:39.847009953 +0000 @@ -1,4 +1 @@ -tar: .: Directory is new -tar: ./subdir: Directory is new -tar: ./subdir: directory is on a different filesystem; not dumped ---- - 2024-04-21 14:13:11.732275920 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/123/stdout 2024-04-21 14:13:11.725688062 +0000 +--- - 2024-04-21 14:21:39.872510127 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/123/stdout 2024-04-21 14:21:39.855009656 +0000 @@ -1,10 +1 @@ -# Level 0 -./ @@ -11856,6 +11810,87 @@ tar -xf archive.2 -g db --warning=no-timestamp find directory | sort ) +./incr02.at:35: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +ckmtime || exit 77 +# Create directory structure +mkdir dir +mkdir dir/subdir1 +mkdir dir/subdir2 +genfile --length 10 --file dir/subdir1/file + +# Save mtime for later comparison +genfile --stat=mtime dir/subdir1 > ts + +# Create an archive. Using incremental mode makes sure the +# archive will have a directory-first member ordering, +# i.e.: +# dir/ +# dir/subdir1/ +# dir/subdir2/ +# dir/subdir1/foofile +# +# When restoring from this directory structure, 'dir/subdir2/' used to +# trigger apply_nonancestor_delayed_set_stat() which restored stats for +# 'subdir1' prior to restoring 'dir/subdir1/foofile'. Then, restoring the +# latter clobbered the directory timestamp. + +tar -cf archive -g db dir + +# Move away the directory +mv dir orig + +# Wait enough time for timestamps to differ in case of failure. +sleep 5 + +# Restore the directory +tar -xf archive dir + +# Check the timestamp +genfile --stat=mtime dir/subdir1 | diff ts - +) +./exclude05.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +rm -rf testdir exclfile +mkdir -p testdir +awk 'BEGIN {for (i=9; i < 100; ++i ) { print "testdir/file" i; }}' < /dev/null | \ + while read name + do + genfile --file $name + done + +awk 'BEGIN {for (i=1000000; i >= 12; --i ) { print "testdir/file" i }}' < /dev/null > exclfile + +tar cf archive --anchored --exclude-from=exclfile \ + testdir +tar tf archive | sort + +echo "NEXT" +tar cf archive --exclude-from=exclfile \ + testdir +tar tf archive | sort + +rm -rf testdir exclfile + +) ./incr03.at:31: mkdir oldgnu (cd oldgnu @@ -11964,31 +11999,6 @@ echo "Incremental dump" tar cvf a1.tar -g a.sna a ) -./incr04.at:34: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 - -install-sh -d a/b >/dev/null || exit 77 -awk 'BEGIN { - for (i=1;i<=142;i++) - printf("a/b/one_31_chars_long_file_name_%03d\n", i); - }' < /dev/null | genfile --files-from - - -sleep 1 - -echo "Initial dump" -tar cvf a0.tar -g a.sna a -mv a/b a/c -echo "Incremental dump" -tar cvf a1.tar -g a.sna a -) 64. exclude05.at:21: ok 126. incr05.at:21: testing incremental dumps with -C ... @@ -12014,6 +12024,31 @@ echo Level 1 tar -c -f archive.tar -g db -C dir -v --warning=no-new-dir . ) +./incr04.at:34: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +ckmtime || exit 77 + +install-sh -d a/b >/dev/null || exit 77 +awk 'BEGIN { + for (i=1;i<=142;i++) + printf("a/b/one_31_chars_long_file_name_%03d\n", i); + }' < /dev/null | genfile --files-from - + +sleep 1 + +echo "Initial dump" +tar cvf a0.tar -g a.sna a +mv a/b a/c +echo "Incremental dump" +tar cvf a1.tar -g a.sna a +) ./incr05.at:24: mkdir oldgnu (cd oldgnu @@ -12059,31 +12094,6 @@ tar -c -f archive.tar -g db -C dir -v --warning=no-new-dir . ) 126. incr05.at:21: ok -./incr04.at:34: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 - -install-sh -d a/b >/dev/null || exit 77 -awk 'BEGIN { - for (i=1;i<=142;i++) - printf("a/b/one_31_chars_long_file_name_%03d\n", i); - }' < /dev/null | genfile --files-from - - -sleep 1 - -echo "Initial dump" -tar cvf a0.tar -g a.sna a -mv a/b a/c -echo "Incremental dump" -tar cvf a1.tar -g a.sna a -) 127. incr06.at:21: testing incremental dumps of nested directories ... ./incr06.at:24: @@ -12179,7 +12189,7 @@ echo Level 1 sub . tar -c -f archive-1.2.tar -g db.2 -C dir -v --warning=no-new-dir sub . ) -127. incr06.at:21: ok +118. incr02.at:32: ok 128. incr07.at:18: testing incremental restores with -C ... ./incr07.at:40: @@ -12228,6 +12238,36 @@ test -d dirA && echo >&2 "toplevel dirA exists" exit 0 ) +127. incr06.at:21: ok + +129. incr08.at:38: testing filename normalization ... +./incr08.at:41: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +ckmtime || exit 77 + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir tartest +cd tartest +mkdir foo +mkdir foo/subdir +mkdir foo/subdir/dir1 +mkdir subdir +mkdir subdir/dir2 +decho A +find .|sort + +decho B +DIR=`pwd` +tar -cvf ../foo.tar --listed-incremental=../foo.snar -C foo . $DIR +) ./incr07.at:40: mkdir oldgnu (cd oldgnu @@ -12274,6 +12314,38 @@ test -d dirA && echo >&2 "toplevel dirA exists" exit 0 ) +stderr: +A +B +tar: .: Directory is new +tar: ./subdir: Directory is new +tar: ./subdir/dir1: Directory is new +tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest: Directory is new +tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir: Directory is new +tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/dir2: Directory is new +tar: Removing leading `/' from member names +stdout: +A +. +./foo +./foo/subdir +./foo/subdir/dir1 +./subdir +./subdir/dir2 +B +./ +./subdir/ +./subdir/dir1/ +/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/ +/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/ +/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/dir2/ +./incr08.at:41: +DIR=`pwd`/gnu/tartest +sed "s|$DIR|ABSPATH|" stdout + +./incr08.at:41: +DIR=`pwd`/gnu/tartest +sed "/tar: Removing leading \`\/*\/' from/d;s|$DIR|ABSPATH|" stderr ./incr07.at:40: mkdir posix (cd posix @@ -12320,68 +12392,6 @@ test -d dirA && echo >&2 "toplevel dirA exists" exit 0 ) -128. incr07.at:18: ok - -129. incr08.at:38: testing filename normalization ... -./incr08.at:41: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -ckmtime || exit 77 - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir tartest -cd tartest -mkdir foo -mkdir foo/subdir -mkdir foo/subdir/dir1 -mkdir subdir -mkdir subdir/dir2 -decho A -find .|sort - -decho B -DIR=`pwd` -tar -cvf ../foo.tar --listed-incremental=../foo.snar -C foo . $DIR -) -stderr: -A -B -tar: .: Directory is new -tar: ./subdir: Directory is new -tar: ./subdir/dir1: Directory is new -tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest: Directory is new -tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir: Directory is new -tar: /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/dir2: Directory is new -tar: Removing leading `/' from member names -stdout: -A -. -./foo -./foo/subdir -./foo/subdir/dir1 -./subdir -./subdir/dir2 -B -./ -./subdir/ -./subdir/dir1/ -/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/ -/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/ -/build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/129/gnu/tartest/subdir/dir2/ -./incr08.at:41: -DIR=`pwd`/gnu/tartest -sed "s|$DIR|ABSPATH|" stdout - -./incr08.at:41: -DIR=`pwd`/gnu/tartest -sed "/tar: Removing leading \`\/*\/' from/d;s|$DIR|ABSPATH|" stderr 129. incr08.at:38: ok 130. incr09.at:26: testing incremental with alternating -C ... @@ -12410,8 +12420,34 @@ decho B tar -cvf foo.tar --incremental -C foo . -C `pwd` toplevel_file -C bar . ) +128. incr07.at:18: ok + 130. incr09.at:26: ok +./incr04.at:34: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * +ckmtime || exit 77 + +install-sh -d a/b >/dev/null || exit 77 +awk 'BEGIN { + for (i=1;i<=142;i++) + printf("a/b/one_31_chars_long_file_name_%03d\n", i); + }' < /dev/null | genfile --files-from - + +sleep 1 + +echo "Initial dump" +tar cvf a0.tar -g a.sna a +mv a/b a/c +echo "Incremental dump" +tar cvf a1.tar -g a.sna a +) 131. incr10.at:18: testing concatenated incremental archives (deletes) ... ./incr10.at:28: mkdir gnu @@ -12437,7 +12473,6 @@ mkdir out tar -xvf full.tar -g /dev/null -C out ) -131. incr10.at:18: ok 132. incr11.at:25: testing concatenated incremental archives (renames) ... ./incr11.at:28: @@ -12469,7 +12504,7 @@ decho List find out | sort ) -132. incr11.at:25: ok +131. incr10.at:18: ok 133. filerem01.at:36: testing file removed as we read it ... ./filerem01.at:39: @@ -12509,9 +12544,10 @@ tar --blocking-factor=1 -c -f archive.tar \ --listed-incremental db -v dir >/dev/null ) +132. incr11.at:25: ok + stdout: 133. filerem01.at:36: ok - 134. filerem02.at:26: testing toplevel file removed ... ./filerem02.at:29: mkdir gnu @@ -12533,11 +12569,39 @@ tar --blocking-factor=1 -c -f archive.tar \ --listed-incremental db -v --warning=no-new-dir dir dir2 >/dev/null ) + stderr: tar: dir2: Cannot stat: No such file or directory tar: dir2: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors stdout: +135. dirrem01.at:38: testing directory removed before reading ... +./dirrem01.at:41: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +mkdir dir +mkdir dir/sub +genfile --file dir/file1 +genfile --file dir/sub/file2 + +case "$TEST_TAR_FORMAT" in +posix) CPT=5;; +gnu) CPT=3;; +*) exit 77 +esac + +genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \ + tar --blocking-factor=1 -c -f archive.tar \ + --listed-incremental db \ + --warning=no-file-changed \ + -v dir >/dev/null +) ./filerem02.at:29: mkdir posix (cd posix @@ -12558,20 +12622,13 @@ tar --blocking-factor=1 -c -f archive.tar \ --listed-incremental db -v --warning=no-new-dir dir dir2 >/dev/null ) -125. incr04.at:29: ok - -stderr: -tar: dir2: Cannot stat: No such file or directory -tar: dir2: Cannot open: No such file or directory -tar: Exiting with failure status due to previous errors stdout: -135. dirrem01.at:38: testing directory removed before reading ... ./dirrem01.at:41: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -12592,7 +12649,14 @@ --warning=no-file-changed \ -v dir >/dev/null ) +stderr: +tar: dir2: Cannot stat: No such file or directory +tar: dir2: Cannot open: No such file or directory +tar: Exiting with failure status due to previous errors +stdout: 134. filerem02.at:26: ok +stdout: +135. dirrem01.at:38: ok 136. dirrem02.at:31: testing explicitly named directory removed before reading ... ./dirrem02.at:34: @@ -12621,36 +12685,8 @@ --warning=no-file-changed \ -v dir dir/sub >/dev/null ) -stdout: -./dirrem01.at:41: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -mkdir dir -mkdir dir/sub -genfile --file dir/file1 -genfile --file dir/sub/file2 - -case "$TEST_TAR_FORMAT" in -posix) CPT=5;; -gnu) CPT=3;; -*) exit 77 -esac -genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \ - tar --blocking-factor=1 -c -f archive.tar \ - --listed-incremental db \ - --warning=no-file-changed \ - -v dir >/dev/null -) stdout: -stdout: -135. dirrem01.at:38: ok ./dirrem02.at:34: mkdir posix (cd posix @@ -12677,9 +12713,6 @@ --warning=no-file-changed \ -v dir dir/sub >/dev/null ) - -stdout: -136. dirrem02.at:31: ok 137. rename01.at:24: testing renamed dirs in incrementals ... ./rename01.at:27: mkdir gnu @@ -12721,52 +12754,9 @@ find foo | sort echo End directory listing 2 ) +stdout: +136. dirrem02.at:31: ok -138. rename02.at:24: testing move between hierarchies ... -./rename02.at:27: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir foo -genfile --file foo/file1 -genfile --file foo/file2 -mkdir foo/bar -genfile --file foo/bar/file.r -mkdir foo/bar/baz -genfile --file foo/bar/baz/file.z - -sleep 1 - -echo "Creating base archive" -tar -g incr -cf arch.1 -v foo - -mv foo/bar/baz foo - -echo "Creating incremental archive" -tar -g incr -cf arch.2 -v foo - -mv foo old - -tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr -sort tmperr >&2 - -echo "Begin directory listing 1" -find foo | sort -echo "End directory listing 1" - -tar xfgv arch.2 /dev/null --warning=no-timestamp -echo Begin directory listing 2 -find foo | sort -echo End directory listing 2 -) ./rename01.at:27: mkdir oldgnu (cd oldgnu @@ -12807,50 +12797,8 @@ find foo | sort echo End directory listing 2 ) -./rename01.at:27: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -mkdir foo -genfile --file foo/file1 -genfile --file foo/file2 -mkdir foo/bar -genfile --file foo/bar/file - -echo "Creating base archive" -tar -g incr -cf arch.1 -v foo - -mv foo/bar foo/baz - -echo "Creating incremental archive" -tar -g incr -cf arch.2 -v foo - -mv foo old - -tar xfg arch.1 /dev/null - -echo "Begin directory listing 1" -find foo | sort -echo "End directory listing 1" - -tar xfg arch.2 /dev/null -echo Begin directory listing 2 -find foo | sort -echo End directory listing 2 -) -137. rename01.at:24: ok - -139. rename03.at:23: testing cyclic renames ... -./rename03.at:26: +138. rename02.at:24: testing move between hierarchies ... +./rename02.at:27: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -12862,62 +12810,6 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir foo -genfile --file foo/file1 -genfile --file foo/file2 - -mkdir foo/a -genfile --file foo/a/filea - -mkdir foo/b -genfile --file foo/b/fileb - -mkdir foo/c -genfile --file foo/c/filec - -sleep 1 - -echo "First dump" -echo "First dump">&2 -tar -g incr -cf arch.1 -v foo 2>tmperr -sort tmperr >&2 - -# Shuffle directories: -(cd foo -mv a $$ -mv c a -mv b c -mv $$ b) - -echo "Second dump" -echo "Second dump" >&2 -tar -g incr -cf arch.2 -v foo 2>tmperr -sort tmperr >&2 - -tar xfg arch.1 /dev/null --warning=no-timestamp - -echo "Begin directory listing 1" -find foo | sort -echo "End directory listing 1" - -tar xfgv arch.2 /dev/null --warning=no-timestamp -echo Begin directory listing 2 -find foo | sort -echo End directory listing 2 -) -./rename02.at:27: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - mkdir foo genfile --file foo/file1 genfile --file foo/file2 @@ -12950,63 +12842,7 @@ find foo | sort echo End directory listing 2 ) -./rename03.at:26: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -mkdir foo -genfile --file foo/file1 -genfile --file foo/file2 - -mkdir foo/a -genfile --file foo/a/filea - -mkdir foo/b -genfile --file foo/b/fileb - -mkdir foo/c -genfile --file foo/c/filec - -sleep 1 - -echo "First dump" -echo "First dump">&2 -tar -g incr -cf arch.1 -v foo 2>tmperr -sort tmperr >&2 - -# Shuffle directories: -(cd foo -mv a $$ -mv c a -mv b c -mv $$ b) - -echo "Second dump" -echo "Second dump" >&2 -tar -g incr -cf arch.2 -v foo 2>tmperr -sort tmperr >&2 - -tar xfg arch.1 /dev/null --warning=no-timestamp - -echo "Begin directory listing 1" -find foo | sort -echo "End directory listing 1" - -tar xfgv arch.2 /dev/null --warning=no-timestamp -echo Begin directory listing 2 -find foo | sort -echo End directory listing 2 -) -./rename02.at:27: +./rename01.at:27: mkdir posix (cd posix TEST_TAR_FORMAT=posix @@ -13018,44 +12854,43 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 + mkdir foo genfile --file foo/file1 genfile --file foo/file2 mkdir foo/bar -genfile --file foo/bar/file.r -mkdir foo/bar/baz -genfile --file foo/bar/baz/file.z - -sleep 1 +genfile --file foo/bar/file echo "Creating base archive" tar -g incr -cf arch.1 -v foo -mv foo/bar/baz foo +mv foo/bar foo/baz echo "Creating incremental archive" tar -g incr -cf arch.2 -v foo mv foo old -tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr -sort tmperr >&2 +tar xfg arch.1 /dev/null echo "Begin directory listing 1" find foo | sort echo "End directory listing 1" -tar xfgv arch.2 /dev/null --warning=no-timestamp +tar xfg arch.2 /dev/null echo Begin directory listing 2 find foo | sort echo End directory listing 2 ) +137. rename01.at:24: ok + +139. rename03.at:23: testing cyclic renames ... ./rename03.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -13106,7 +12941,7 @@ find foo | sort echo End directory listing 2 ) -138. rename02.at:24: ok +125. incr04.at:29: ok 140. rename04.at:27: testing renamed directory containing subdirectories ... ./rename04.at:30: @@ -13147,7 +12982,6 @@ tar -xf archive.2 -g db.2 find dir | sort ) -139. rename03.at:23: ok ./rename04.at:30: mkdir oldgnu (cd oldgnu @@ -13186,6 +13020,45 @@ tar -xf archive.2 -g db.2 find dir | sort ) +./rename04.at:30: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +decho Creating directory structure +mkdir directory +mkdir directory/subdir +genfile --file=directory/file + +decho Creating initial archive +tar -cf archive.1 -g db.1 directory + +decho Renaming +mv directory dir + +decho Creating incremental archive +cp db.1 db.2 +tar -cf archive.2 -g db.2 dir + +mv dir orig + +decho First restore +tar -xf archive.1 -g db.1 +find directory | sort + +decho Second restore +tar -xf archive.2 -g db.2 +find dir | sort +) +140. rename04.at:27: ok 141. rename05.at:24: testing renamed subdirectories ... ./rename05.at:27: @@ -13227,12 +13100,12 @@ tar -xf archive.2 -g db.2 --warning=no-timestamp find dir | sort ) -./rename04.at:30: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./rename05.at:27: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -13249,6 +13122,7 @@ tar -cf archive.1 -g db.1 directory decho Renaming +mv directory/subdir directory/subdir.0 mv directory dir decho Creating incremental archive @@ -13258,19 +13132,19 @@ mv dir orig decho First restore -tar -xf archive.1 -g db.1 +tar -xf archive.1 -g db.1 --warning=no-timestamp find directory | sort decho Second restore -tar -xf archive.2 -g db.2 +tar -xf archive.2 -g db.2 --warning=no-timestamp find dir | sort ) ./rename05.at:27: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -13304,7 +13178,7 @@ tar -xf archive.2 -g db.2 --warning=no-timestamp find dir | sort ) -140. rename04.at:27: ok +141. rename05.at:24: ok 142. rename06.at:19: testing chained renames ... ./rename06.at:29: @@ -13347,44 +13221,49 @@ decho Resulting directory find test1 | sort ) -./rename05.at:27: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./rename02.at:27: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * test -z "`sort < /dev/null 2>&1`" || exit 77 +mkdir foo +genfile --file foo/file1 +genfile --file foo/file2 +mkdir foo/bar +genfile --file foo/bar/file.r +mkdir foo/bar/baz +genfile --file foo/bar/baz/file.z -decho Creating directory structure -mkdir directory -mkdir directory/subdir -genfile --file=directory/file +sleep 1 -decho Creating initial archive -tar -cf archive.1 -g db.1 directory +echo "Creating base archive" +tar -g incr -cf arch.1 -v foo -decho Renaming -mv directory/subdir directory/subdir.0 -mv directory dir +mv foo/bar/baz foo -decho Creating incremental archive -cp db.1 db.2 -tar -cf archive.2 -g db.2 dir +echo "Creating incremental archive" +tar -g incr -cf arch.2 -v foo -mv dir orig +mv foo old -decho First restore -tar -xf archive.1 -g db.1 --warning=no-timestamp -find directory | sort +tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr +sort tmperr >&2 -decho Second restore -tar -xf archive.2 -g db.2 --warning=no-timestamp -find dir | sort +echo "Begin directory listing 1" +find foo | sort +echo "End directory listing 1" + +tar xfgv arch.2 /dev/null --warning=no-timestamp +echo Begin directory listing 2 +find foo | sort +echo End directory listing 2 ) ./rename06.at:29: mkdir oldgnu @@ -13426,7 +13305,47 @@ decho Resulting directory find test1 | sort ) -141. rename05.at:24: ok +./rename06.at:29: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +decho Creating directory structure +mkdir test test/d1 test/d2 +genfile --file test/d1/file1 +genfile --file test/d2/file2 + +decho First dump +tar -c -g 0.snar -C test -f backup0.tar . + +decho Altering directory structure +genfile --file test/d2/file3 +mv test/d1 test/d3 +mv test/d2 test/d1 + +decho Second dump +cp 0.snar 1.snar +tar -vc -g 1.snar -C test -f backup1.tar . + +mkdir test1 + +decho First extract +tar -C test1 -x -g /dev/null -f backup0.tar + +decho Second extract +tar -C test1 -x -g /dev/null -f backup1.tar + +decho Resulting directory +find test1 | sort +) +142. rename06.at:19: ok 143. chtype.at:27: testing changed file types in incrementals ... ./chtype.at:30: @@ -13469,7 +13388,63 @@ tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp find directory | sort ) -./rename06.at:29: +./rename03.at:26: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +mkdir foo +genfile --file foo/file1 +genfile --file foo/file2 + +mkdir foo/a +genfile --file foo/a/filea + +mkdir foo/b +genfile --file foo/b/fileb + +mkdir foo/c +genfile --file foo/c/filec + +sleep 1 + +echo "First dump" +echo "First dump">&2 +tar -g incr -cf arch.1 -v foo 2>tmperr +sort tmperr >&2 + +# Shuffle directories: +(cd foo +mv a $$ +mv c a +mv b c +mv $$ b) + +echo "Second dump" +echo "Second dump" >&2 +tar -g incr -cf arch.2 -v foo 2>tmperr +sort tmperr >&2 + +tar xfg arch.1 /dev/null --warning=no-timestamp + +echo "Begin directory listing 1" +find foo | sort +echo "End directory listing 1" + +tar xfgv arch.2 /dev/null --warning=no-timestamp +echo Begin directory listing 2 +find foo | sort +echo End directory listing 2 +) +./rename02.at:27: mkdir posix (cd posix TEST_TAR_FORMAT=posix @@ -13481,35 +13456,204 @@ test -z "`sort < /dev/null 2>&1`" || exit 77 -decho Creating directory structure -mkdir test test/d1 test/d2 -genfile --file test/d1/file1 -genfile --file test/d2/file2 +mkdir foo +genfile --file foo/file1 +genfile --file foo/file2 +mkdir foo/bar +genfile --file foo/bar/file.r +mkdir foo/bar/baz +genfile --file foo/bar/baz/file.z -decho First dump -tar -c -g 0.snar -C test -f backup0.tar . +sleep 1 -decho Altering directory structure -genfile --file test/d2/file3 -mv test/d1 test/d3 -mv test/d2 test/d1 +echo "Creating base archive" +tar -g incr -cf arch.1 -v foo -decho Second dump -cp 0.snar 1.snar -tar -vc -g 1.snar -C test -f backup1.tar . +mv foo/bar/baz foo -mkdir test1 +echo "Creating incremental archive" +tar -g incr -cf arch.2 -v foo -decho First extract -tar -C test1 -x -g /dev/null -f backup0.tar +mv foo old -decho Second extract -tar -C test1 -x -g /dev/null -f backup1.tar +tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr +sort tmperr >&2 -decho Resulting directory -find test1 | sort +echo "Begin directory listing 1" +find foo | sort +echo "End directory listing 1" + +tar xfgv arch.2 /dev/null --warning=no-timestamp +echo Begin directory listing 2 +find foo | sort +echo End directory listing 2 ) -142. rename06.at:19: ok +./rename03.at:26: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +mkdir foo +genfile --file foo/file1 +genfile --file foo/file2 + +mkdir foo/a +genfile --file foo/a/filea + +mkdir foo/b +genfile --file foo/b/fileb + +mkdir foo/c +genfile --file foo/c/filec + +sleep 1 + +echo "First dump" +echo "First dump">&2 +tar -g incr -cf arch.1 -v foo 2>tmperr +sort tmperr >&2 + +# Shuffle directories: +(cd foo +mv a $$ +mv c a +mv b c +mv $$ b) + +echo "Second dump" +echo "Second dump" >&2 +tar -g incr -cf arch.2 -v foo 2>tmperr +sort tmperr >&2 + +tar xfg arch.1 /dev/null --warning=no-timestamp + +echo "Begin directory listing 1" +find foo | sort +echo "End directory listing 1" + +tar xfgv arch.2 /dev/null --warning=no-timestamp +echo Begin directory listing 2 +find foo | sort +echo End directory listing 2 +) +./listed02.at:31: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +ckmtime || exit 77 + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +echo Create directories + +mkdir tart +sleep 1 +mkdir tart/c0 +sleep 1 +mkdir tart/c1 +sleep 1 + +for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2 +do + echo File $file > $file + sleep 1 +done + +sleep 1 +echo Creating main archive +echo >&2 "Creating main archive" +tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1 + +# The above prints two lines to stderr announcing the new directories c0 and c1. +# Ensure that they appear in this script's stderr in sorted order. +sort err 1>&2; rm -f err + +sleep 1 +echo Modifying filesystem +rm tart/a1 + +mv tart/b1 tart/b2 +mv tart/c1 tart/c2 +touch tart/c2/ca3 + +echo Directory contents +find tart -print | sort 2>/dev/null + +sleep 1 +echo Creating incremental archive +echo >&2 "Creating incremental archive" +cp -p tart.incr1 tart.incr2 +tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1 + +sleep 1 + +rm -rf tart/* +echo Extracting main archive +echo >&2 "Extracting main archive" +tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1 +echo Extracting incremental archive +# This command should produce three messages about deletion +# of the existing files, that may appear in any order. Piping +# to sort makes sure we don't depend on any particular ordering. +tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null + +echo Final files: +find tart -print | sort 2>/dev/null +) +./chtype.at:30: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +install-sh -d directory/b/c >/dev/null && genfile --file directory/b/c/x || exit 77 +mkdir directory/a +genfile --file directory/a/a + +echo First backup +tar --create --file=archive.1 --listed-incremental=db.1 directory + +sleep 2 + +# Remove directory b and create a file with this name. +# Previous versions were not able to restore over this file. +rm -r directory/b +genfile --file directory/b +genfile --file directory/a/b + +echo Second backup +tar --create --file=archive.2 --listed-incremental=db.2 directory + +# Delete a +rm -r directory + +echo Restore archive.1 +tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp +echo Restore archive.2 +tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp +find directory | sort +) +138. rename02.at:24: ok 144. ignfail.at:23: testing ignfail ... ./ignfail.at:26: @@ -13614,6 +13758,8 @@ chmod 700 directory test $status = 0 ) +139. rename03.at:23: ok + ./ignfail.at:26: mkdir ustar (cd ustar @@ -13665,63 +13811,36 @@ chmod 700 directory test $status = 0 ) -./ignfail.at:26: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +145. link01.at:33: testing link count gt 2 ... +./link01.at:36: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * -# The test is meaningless for super-user. - -echo "test" > $$ -chmod 0 $$ -cat $$ > /dev/null 2>&1 -result=$? -rm -f $$ -test $result -eq 0 && exit 77 - - -touch file mkdir directory -touch directory/file +mkdir directory/test1 +mkdir directory/test2 -echo 1>&2 ----- -chmod 000 file -tar cf archive file -status=$? -chmod 600 file -test $status = 2 || exit 1 +echo TEST > directory/test1/test.txt +ln directory/test1/test.txt directory/test2/test.txt || exit 77 -echo 1>&2 ----- -chmod 000 file -tar cf archive --ignore-failed-read file || exit 1 -status=$? -chmod 600 file -test $status = 0 || exit 1 +tar cf archive directory/test1/test.txt directory/test1/test.txt -echo 1>&2 ----- -chmod 000 directory -tar cf archive directory -status=$? -chmod 700 directory -test $status = 2 || exit 1 +rm -r directory +tar xf archive --warning=no-timestamp -echo 1>&2 ----- -chmod 000 directory -tar cf archive --ignore-failed-read directory || exit 1 -status=$? -chmod 700 directory -test $status = 0 +ls directory/test1 ) ./ignfail.at:26: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -13767,15 +13886,12 @@ chmod 700 directory test $status = 0 ) -144. ignfail.at:23: ok - -145. link01.at:33: testing link count gt 2 ... ./link01.at:36: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -13794,11 +13910,11 @@ ls directory/test1 ) ./link01.at:36: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -13816,28 +13932,56 @@ ls directory/test1 ) -./link01.at:36: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./ignfail.at:26: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * +# The test is meaningless for super-user. + +echo "test" > $$ +chmod 0 $$ +cat $$ > /dev/null 2>&1 +result=$? +rm -f $$ +test $result -eq 0 && exit 77 + + +touch file mkdir directory -mkdir directory/test1 -mkdir directory/test2 +touch directory/file -echo TEST > directory/test1/test.txt -ln directory/test1/test.txt directory/test2/test.txt || exit 77 +echo 1>&2 ----- +chmod 000 file +tar cf archive file +status=$? +chmod 600 file +test $status = 2 || exit 1 -tar cf archive directory/test1/test.txt directory/test1/test.txt +echo 1>&2 ----- +chmod 000 file +tar cf archive --ignore-failed-read file || exit 1 +status=$? +chmod 600 file +test $status = 0 || exit 1 -rm -r directory -tar xf archive --warning=no-timestamp +echo 1>&2 ----- +chmod 000 directory +tar cf archive directory +status=$? +chmod 700 directory +test $status = 2 || exit 1 -ls directory/test1 +echo 1>&2 ----- +chmod 000 directory +tar cf archive --ignore-failed-read directory || exit 1 +status=$? +chmod 700 directory +test $status = 0 ) ./link01.at:36: mkdir posix @@ -13862,6 +14006,7 @@ ls directory/test1 ) +144. ignfail.at:23: ok ./link01.at:36: mkdir gnu (cd gnu @@ -13885,7 +14030,6 @@ ls directory/test1 ) -145. link01.at:33: ok 146. link02.at:32: testing preserve hard links with --remove-files ... ./link02.at:35: @@ -13904,6 +14048,8 @@ tar -c -f archive --remove-files file1 file2 file3 file4 tar tfv archive | sed -n 's/.*file[2-4] link to //p' ) +145. link01.at:33: ok + ./link02.at:35: mkdir oldgnu (cd oldgnu @@ -13920,44 +14066,41 @@ tar -c -f archive --remove-files file1 file2 file3 file4 tar tfv archive | sed -n 's/.*file[2-4] link to //p' ) -./link02.at:35: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +147. link03.at:24: testing working -l with --remove-files ... +./link03.at:34: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * + genfile -l 64 -f file1 ln file1 file2 ln file2 file3 ln file3 file4 -tar -c -f archive --remove-files file1 file2 file3 file4 -tar tfv archive | sed -n 's/.*file[2-4] link to //p' -) -./link02.at:35: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * + +echo archive.1 +tar -c -f archive.1 -l --remove-files file1 file2 file3 file4 genfile -l 64 -f file1 ln file1 file2 ln file2 file3 ln file3 file4 -tar -c -f archive --remove-files file1 file2 file3 file4 -tar tfv archive | sed -n 's/.*file[2-4] link to //p' + +echo archive.2 +tar -c -f archive.2 -l --remove-files file1 file2 file3 +echo testing archive.2 +tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' ) ./link02.at:35: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -13968,15 +14111,12 @@ tar -c -f archive --remove-files file1 file2 file3 file4 tar tfv archive | sed -n 's/.*file[2-4] link to //p' ) -146. link02.at:32: ok - -147. link03.at:24: testing working -l with --remove-files ... ./link03.at:34: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -13999,33 +14139,37 @@ echo testing archive.2 tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' ) -./link03.at:34: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +./link02.at:35: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * - genfile -l 64 -f file1 ln file1 file2 ln file2 file3 ln file3 file4 - -echo archive.1 -tar -c -f archive.1 -l --remove-files file1 file2 file3 file4 +tar -c -f archive --remove-files file1 file2 file3 file4 +tar tfv archive | sed -n 's/.*file[2-4] link to //p' +) +./link02.at:35: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * genfile -l 64 -f file1 ln file1 file2 ln file2 file3 ln file3 file4 - -echo archive.2 -tar -c -f archive.2 -l --remove-files file1 file2 file3 -echo testing archive.2 -tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' +tar -c -f archive --remove-files file1 file2 file3 file4 +tar tfv archive | sed -n 's/.*file[2-4] link to //p' ) ./link03.at:34: mkdir ustar @@ -14055,6 +14199,8 @@ echo testing archive.2 tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' ) +146. link02.at:32: ok + ./link03.at:34: mkdir posix (cd posix @@ -14083,36 +14229,6 @@ echo testing archive.2 tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' ) -./link03.at:34: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - - -genfile -l 64 -f file1 -ln file1 file2 -ln file2 file3 -ln file3 file4 - -echo archive.1 -tar -c -f archive.1 -l --remove-files file1 file2 file3 file4 - -genfile -l 64 -f file1 -ln file1 file2 -ln file2 file3 -ln file3 file4 - -echo archive.2 -tar -c -f archive.2 -l --remove-files file1 file2 file3 -echo testing archive.2 -tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' -) -147. link03.at:24: ok - 148. link04.at:29: testing link count is 1 but multiple occurrences ... ./link04.at:32: mkdir v7 @@ -14145,74 +14261,33 @@ s,symlink,FOO,g ' | sort ) -./listed02.at:31: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +./link03.at:34: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -ckmtime || exit 77 - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -echo Create directories - -mkdir tart -sleep 1 -mkdir tart/c0 -sleep 1 -mkdir tart/c1 -sleep 1 - -for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2 -do - echo File $file > $file - sleep 1 -done - -sleep 1 -echo Creating main archive -echo >&2 "Creating main archive" -tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1 - -# The above prints two lines to stderr announcing the new directories c0 and c1. -# Ensure that they appear in this script's stderr in sorted order. -sort err 1>&2; rm -f err - -sleep 1 -echo Modifying filesystem -rm tart/a1 - -mv tart/b1 tart/b2 -mv tart/c1 tart/c2 -touch tart/c2/ca3 - -echo Directory contents -find tart -print | sort 2>/dev/null -sleep 1 -echo Creating incremental archive -echo >&2 "Creating incremental archive" -cp -p tart.incr1 tart.incr2 -tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1 +genfile -l 64 -f file1 +ln file1 file2 +ln file2 file3 +ln file3 file4 -sleep 1 +echo archive.1 +tar -c -f archive.1 -l --remove-files file1 file2 file3 file4 -rm -rf tart/* -echo Extracting main archive -echo >&2 "Extracting main archive" -tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1 -echo Extracting incremental archive -# This command should produce three messages about deletion -# of the existing files, that may appear in any order. Piping -# to sort makes sure we don't depend on any particular ordering. -tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null +genfile -l 64 -f file1 +ln file1 file2 +ln file2 file3 +ln file3 file4 -echo Final files: -find tart -print | sort 2>/dev/null +echo archive.2 +tar -c -f archive.2 -l --remove-files file1 file2 file3 +echo testing archive.2 +tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p' ) ./link04.at:32: mkdir oldgnu @@ -14245,6 +14320,7 @@ s,symlink,FOO,g ' | sort ) +147. link03.at:24: ok ./link04.at:32: mkdir ustar (cd ustar @@ -14276,6 +14352,24 @@ s,symlink,FOO,g ' | sort ) + +149. longv7.at:24: testing long names in V7 archives ... +./longv7.at:30: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + +mkdir this_is_a_very_long_name_for_a_directory_which_causes_problems +touch this_is_a_very_long_name_for_a_directory_which_causes_problems/this_is_a_very_long_file_name_which_raises_issues.c + +tar cf archive this_is_a_very_long_name_for_a_directory_which_causes_problems +echo separator +tar tf archive +) ./link04.at:32: mkdir posix (cd posix @@ -14307,6 +14401,7 @@ s,symlink,FOO,g ' | sort ) +149. longv7.at:24: ok ./link04.at:32: mkdir gnu (cd gnu @@ -14338,26 +14433,6 @@ s,symlink,FOO,g ' | sort ) -148. link04.at:29: ok - -149. longv7.at:24: testing long names in V7 archives ... -./longv7.at:30: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -mkdir this_is_a_very_long_name_for_a_directory_which_causes_problems -touch this_is_a_very_long_name_for_a_directory_which_causes_problems/this_is_a_very_long_file_name_which_raises_issues.c - -tar cf archive this_is_a_very_long_name_for_a_directory_which_causes_problems -echo separator -tar tf archive -) -149. longv7.at:24: ok 150. long01.at:28: testing long file names divisible by block size ... ./long01.at:36: @@ -14375,6 +14450,8 @@ tar cf archive 0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde endfile tar tf archive) +148. link04.at:29: ok + ./long01.at:36: mkdir oldgnu (cd oldgnu @@ -14390,48 +14467,6 @@ tar cf archive 0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde/0123456789abcde endfile tar tf archive) -./chtype.at:30: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -install-sh -d directory/b/c >/dev/null && genfile --file directory/b/c/x || exit 77 -mkdir directory/a -genfile --file directory/a/a - -echo First backup -tar --create --file=archive.1 --listed-incremental=db.1 directory - -sleep 2 - -# Remove directory b and create a file with this name. -# Previous versions were not able to restore over this file. -rm -r directory/b -genfile --file directory/b -genfile --file directory/a/b - -echo Second backup -tar --create --file=archive.2 --listed-incremental=db.2 directory - -# Delete a -rm -r directory - -echo Restore archive.1 -tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp -echo Restore archive.2 -tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp -find directory | sort -) -150. long01.at:28: ok - 151. lustar01.at:21: testing ustar: unsplittable file name ... ./lustar01.at:27: mkdir ustar @@ -14461,7 +14496,7 @@ install-sh -d this_is_a_very_long_name_for_a_file_designed_to_test_generation_of_ustar_archives_by_gnu_tar_semicolon_it_will_not_fit_the_name_field_and_cannot_be_split_be >/dev/null && genfile --file this_is_a_very_long_name_for_a_file_designed_to_test_generation_of_ustar_archives_by_gnu_tar_semicolon_it_will_not_fit_the_name_field_and_cannot_be_split_be/tween_name_and_prefix || exit 77 tar cf archive this_is_a_very_long_name_for_a_file_designed_to_test_generation_of_ustar_archives_by_gnu_tar_semicolon_it_will_not_fit_the_name_field_and_cannot_be_split_be ) -152. lustar02.at:21: ok +150. long01.at:28: ok 153. lustar03.at:21: testing ustar: splitting long names ... ./lustar03.at:29: @@ -14479,7 +14514,7 @@ tar cf archive this_is_a_very_long_name_for_a_file_designed_to_test_generation/of_ustar_archives_by_gnu_tar_semicolon_it_will_not_fit_the_name_field_and_cannot_be_split_be echo "List archive" tar tf archive) -153. lustar03.at:21: ok +152. lustar02.at:21: ok 154. old.at:23: testing old archives ... ./old.at:27: @@ -14487,8 +14522,34 @@ tar cfvo archive directory || exit 1 tar tf archive +153. lustar03.at:21: ok 154. old.at:23: ok + +156. time02.at:20: testing time: clamping mtime ... +./time02.at:23: +mkdir pax +(cd pax +TEST_TAR_FORMAT=pax +export TEST_TAR_FORMAT +TAR_OPTIONS="-H pax" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +export TZ=UTC0 +mkdir dir + +touch -d 2015-12-01T00:00:00 dir/a >/dev/null 2>&1 || exit 77 +touch -d 2016-01-01T00:00:00 dir/b >/dev/null 2>&1 || exit 77 +touch -d 2016-02-01T00:00:00 dir/c >/dev/null 2>&1 || exit 77 +touch -d 2038-01-01T00:00:00 dir/d >/dev/null 2>&1 || exit 77 + +tar -c --mtime 2016-01-15T00:00:00 --clamp-mtime -f archive.tar dir +tar -d -f archive.tar dir|sort +) 155. time01.at:20: testing time: tricky time stamps ... ./time01.at:23: mkdir pax @@ -14541,32 +14602,6 @@ tar -c -f archive.tar dir tar -d -f archive.tar dir ) -155. time01.at:20: ok - -156. time02.at:20: testing time: clamping mtime ... -./time02.at:23: -mkdir pax -(cd pax -TEST_TAR_FORMAT=pax -export TEST_TAR_FORMAT -TAR_OPTIONS="-H pax" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -export TZ=UTC0 -mkdir dir - -touch -d 2015-12-01T00:00:00 dir/a >/dev/null 2>&1 || exit 77 -touch -d 2016-01-01T00:00:00 dir/b >/dev/null 2>&1 || exit 77 -touch -d 2016-02-01T00:00:00 dir/c >/dev/null 2>&1 || exit 77 -touch -d 2038-01-01T00:00:00 dir/d >/dev/null 2>&1 || exit 77 - -tar -c --mtime 2016-01-15T00:00:00 --clamp-mtime -f archive.tar dir -tar -d -f archive.tar dir|sort -) 156. time02.at:20: ok 157. multiv01.at:23: testing multivolume dumps from pipes ... @@ -14685,46 +14720,6 @@ cmp file2 extract-dir-pipe/file2 ) 157. multiv01.at:23: ok -./chtype.at:30: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - - -install-sh -d directory/b/c >/dev/null && genfile --file directory/b/c/x || exit 77 -mkdir directory/a -genfile --file directory/a/a - -echo First backup -tar --create --file=archive.1 --listed-incremental=db.1 directory - -sleep 2 - -# Remove directory b and create a file with this name. -# Previous versions were not able to restore over this file. -rm -r directory/b -genfile --file directory/b -genfile --file directory/a/b - -echo Second backup -tar --create --file=archive.2 --listed-incremental=db.2 directory - -# Delete a -rm -r directory - -echo Restore archive.1 -tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp -echo Restore archive.2 -tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp -find directory | sort -) 158. multiv02.at:28: testing skipping a straddling member ... ./multiv02.at:31: @@ -14899,7 +14894,47 @@ echo separator tar -MRt -f arc.1 -f arc.2) -143. chtype.at:27: ok +./chtype.at:30: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + + +install-sh -d directory/b/c >/dev/null && genfile --file directory/b/c/x || exit 77 +mkdir directory/a +genfile --file directory/a/a + +echo First backup +tar --create --file=archive.1 --listed-incremental=db.1 directory + +sleep 2 + +# Remove directory b and create a file with this name. +# Previous versions were not able to restore over this file. +rm -r directory/b +genfile --file directory/b +genfile --file directory/a/b + +echo Second backup +tar --create --file=archive.2 --listed-incremental=db.2 directory + +# Delete a +rm -r directory + +echo Restore archive.1 +tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp +echo Restore archive.2 +tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp +find directory | sort +) +155. time01.at:20: ok 161. multiv05.at:26: testing Restoring after an out of sync volume ... ./multiv05.at:30: @@ -14992,8 +15027,8 @@ cd $TEST_DATA_DIR tar -t -M -fxsplit-1.tar -fxsplit-2.tar ---- - 2024-04-21 14:13:29.732049302 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/163/stdout 2024-04-21 14:13:29.723988344 +0000 +--- - 2024-04-21 14:21:53.055288426 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/163/stdout 2024-04-21 14:21:53.050520083 +0000 @@ -1,4 +1 @@ -Archive volumes split at an extended header Volume 1 -foo @@ -15230,9 +15265,9 @@ ) stdout: separator --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 begin --rw-r--r-- pbuilder1/pbuilder1 3102720 2024-04-21 14:13 sparsefile --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 end +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 begin +-rw-r--r-- pbuilder2/pbuilder2 3102720 2024-04-21 14:21 sparsefile +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 end separator sparsefile 3102720 ./sparse01.at:24: @@ -15259,9 +15294,9 @@ ) stdout: separator --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 begin --rw-r--r-- pbuilder1/pbuilder1 3102720 2024-04-21 14:13 sparsefile --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 end +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 begin +-rw-r--r-- pbuilder2/pbuilder2 3102720 2024-04-21 14:21 sparsefile +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 end separator sparsefile 3102720 ./sparse01.at:24: @@ -15288,9 +15323,9 @@ ) stdout: separator --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 begin --rw-r--r-- pbuilder1/pbuilder1 3102720 2024-04-21 14:13 sparsefile --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 end +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 begin +-rw-r--r-- pbuilder2/pbuilder2 3102720 2024-04-21 14:21 sparsefile +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 end separator sparsefile 3102720 169. sparse01.at:21: ok @@ -15370,33 +15405,7 @@ genfile --stat=name,size sparsefile cmp sparsefile directory/sparsefile ) -./multiv04.at:39: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -mkdir directory -awk 'BEGIN { for (i = 0; i < 1024; i++) printf("directory/%014x\n", i); }' &1`" || exit 77 + +mkdir a +genfile --file a/b + +tar cf arc a + +echo "separator" + +sleep 2 +touch a/b + +tar ufv arc a +echo "separator" +tar tf arc | sort || exit 1 +) ./update01.at:32: mkdir ustar (cd ustar @@ -17071,6 +17135,32 @@ echo "separator" tar tf arc | sort || exit 1 ) +./update02.at:29: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir a +genfile --file a/b + +tar cf arc a + +echo "separator" + +sleep 2 +touch a/b + +tar ufv arc a +echo "separator" +tar tf arc | sort || exit 1 +) ./update01.at:32: mkdir posix (cd posix @@ -17097,12 +17187,12 @@ echo "separator" tar tf arc | sort || exit 1 ) -./update01.at:32: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +./update02.at:29: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -17117,21 +17207,18 @@ echo "separator" sleep 2 -genfile --file a/c +touch a/b tar ufv arc a echo "separator" tar tf arc | sort || exit 1 ) -184. update01.at:29: ok - -185. update02.at:26: testing update changed files ... -./update02.at:29: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./update01.at:32: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -17146,18 +17233,18 @@ echo "separator" sleep 2 -touch a/b +genfile --file a/c tar ufv arc a echo "separator" tar tf arc | sort || exit 1 ) ./update02.at:29: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -17178,20 +17265,14 @@ echo "separator" tar tf arc | sort || exit 1 ) -stdout: -separator --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 begin --rw-r--r-- pbuilder1/pbuilder1 8589935104 2024-04-21 14:13 sparsefile --rw-r--r-- pbuilder1/pbuilder1 1000 2024-04-21 14:13 end -separator -sparsefile 8589935104 -171. sparse03.at:21: ok +184. update01.at:29: ok + ./update02.at:29: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -17212,7 +17293,6 @@ echo "separator" tar tf arc | sort || exit 1 ) - 186. update03.at:20: testing update with chdir ... ./update03.at:27: mkdir v7 @@ -17348,31 +17428,20 @@ tar ufv archive --wildcards './file.*' './foo.*' echo $? ) -./update02.at:29: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +185. update02.at:26: ok + +188. verify.at:25: testing verify ... +./verify.at:28: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir a -genfile --file a/b - -tar cf arc a - -echo "separator" - -sleep 2 -touch a/b - -tar ufv arc a -echo "separator" -tar tf arc | sort || exit 1 +touch foo +tar -cvf archive.tar --verify foo ) ./update04.at:23: mkdir oldgnu @@ -17400,6 +17469,18 @@ tar ufv archive --wildcards './file.*' './foo.*' echo $? ) +./verify.at:28: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + +touch foo +tar -cvf archive.tar --verify foo +) ./update04.at:23: mkdir ustar (cd ustar @@ -17426,31 +17507,29 @@ tar ufv archive --wildcards './file.*' './foo.*' echo $? ) -./update02.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +./verify.at:28: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * +touch foo +tar -cvf archive.tar --verify foo +) +./verify.at:28: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir a -genfile --file a/b - -tar cf arc a - -echo "separator" - -sleep 2 -touch a/b - -tar ufv arc a -echo "separator" -tar tf arc | sort || exit 1 +touch foo +tar -cvf archive.tar --verify foo ) ./update04.at:23: mkdir posix @@ -17478,6 +17557,26 @@ tar ufv archive --wildcards './file.*' './foo.*' echo $? ) +./verify.at:28: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +touch foo +tar -cvf archive.tar --verify foo +) +stdout: +separator +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 begin +-rw-r--r-- pbuilder2/pbuilder2 8589935104 2024-04-21 14:21 sparsefile +-rw-r--r-- pbuilder2/pbuilder2 1000 2024-04-21 14:21 end +separator +sparsefile 8589935104 +171. sparse03.at:21: ok ./update04.at:23: mkdir gnu (cd gnu @@ -17504,22 +17603,7 @@ tar ufv archive --wildcards './file.*' './foo.*' echo $? ) -185. update02.at:26: ok - -188. verify.at:25: testing verify ... -./verify.at:28: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -touch foo -tar -cvf archive.tar --verify foo -) -187. update04.at:20: ok +188. verify.at:25: ok 189. volume.at:23: testing volume ... ./volume.at:26: @@ -17599,8 +17683,9 @@ tar xf $TEST_DATA_DIR/abc.tar find abc|sort ) ---- - 2024-04-21 14:14:25.485952272 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/190/stdout 2024-04-21 14:14:25.482722657 +0000 +187. update04.at:20: ok +--- - 2024-04-21 14:22:33.834960339 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/190/stdout 2024-04-21 14:22:33.809007901 +0000 @@ -1,10 +1 @@ -Short Listing -abc/not-a-file.gif @@ -17614,6 +17699,21 @@ 190. volsize.at:29: skipped (volsize.at:32) + +192. shortfile.at:26: testing short input files ... +./shortfile.at:29: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +genfile --length 511 --file foo || exit 5 +tar tf foo +) +192. shortfile.at:26: ok 191. comprec.at:21: testing compressed format recognition ... ./comprec.at:25: mkdir v7 @@ -17635,17 +17735,19 @@ tar xfv archive --warning=no-timestamp cmp orig file1 ) -./verify.at:28: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu + +193. shortupd.at:31: testing updating short archives ... +./shortupd.at:34: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * touch foo -tar -cvf archive.tar --verify foo +tar uf archive foo ) ./comprec.at:25: mkdir oldgnu @@ -17667,47 +17769,19 @@ tar xfv archive --warning=no-timestamp cmp orig file1 ) -./comprec.at:25: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - - -cat /dev/null | gzip - > /dev/null 2>&1 || exit 77 - -genfile --length 10240 --file file1 -echo "separator" -tar cfz archive file1 -echo "separator" -mv file1 orig -tar xfv archive --warning=no-timestamp -cmp orig file1 -) -./comprec.at:25: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +./shortupd.at:34: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * - -cat /dev/null | gzip - > /dev/null 2>&1 || exit 77 - -genfile --length 10240 --file file1 -echo "separator" -tar cfz archive file1 -echo "separator" -mv file1 orig -tar xfv archive --warning=no-timestamp -cmp orig file1 +touch foo +tar uf archive foo ) -./verify.at:28: +./shortupd.at:34: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -17717,14 +17791,14 @@ rm -rf * touch foo -tar -cvf archive.tar --verify foo +tar uf archive foo ) ./comprec.at:25: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -17739,60 +17813,6 @@ tar xfv archive --warning=no-timestamp cmp orig file1 ) -191. comprec.at:21: ok - -192. shortfile.at:26: testing short input files ... -./shortfile.at:29: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -genfile --length 511 --file foo || exit 5 -tar tf foo -) -192. shortfile.at:26: ok - -193. shortupd.at:31: testing updating short archives ... -./shortupd.at:34: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - -touch foo -tar uf archive foo -) -./shortupd.at:34: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - -touch foo -tar uf archive foo -) -./shortupd.at:34: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar -export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" -export TAR_OPTIONS -rm -rf * - -touch foo -tar uf archive foo -) ./shortupd.at:34: mkdir posix (cd posix @@ -17805,7 +17825,7 @@ touch foo tar uf archive foo ) -./verify.at:28: +./comprec.at:25: mkdir posix (cd posix TEST_TAR_FORMAT=posix @@ -17814,22 +17834,17 @@ export TAR_OPTIONS rm -rf * -touch foo -tar -cvf archive.tar --verify foo -) -./shortupd.at:34: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * -touch foo -tar uf archive foo +cat /dev/null | gzip - > /dev/null 2>&1 || exit 77 + +genfile --length 10240 --file file1 +echo "separator" +tar cfz archive file1 +echo "separator" +mv file1 orig +tar xfv archive --warning=no-timestamp +cmp orig file1 ) -193. shortupd.at:31: ok 194. truncate.at:29: testing truncate ... ./truncate.at:32: @@ -17849,6 +17864,18 @@ echo separator genfile --file foo --seek 195k --length 5k --pattern=zeros tar dvf bar|sed '/foo: Mod time differs/d') +./shortupd.at:34: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +touch foo +tar uf archive foo +) ./truncate.at:32: mkdir oldgnu (cd oldgnu @@ -17866,7 +17893,7 @@ echo separator genfile --file foo --seek 195k --length 5k --pattern=zeros tar dvf bar|sed '/foo: Mod time differs/d') -./verify.at:28: +./comprec.at:25: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -17875,9 +17902,20 @@ export TAR_OPTIONS rm -rf * -touch foo -tar -cvf archive.tar --verify foo + +cat /dev/null | gzip - > /dev/null 2>&1 || exit 77 + +genfile --length 10240 --file file1 +echo "separator" +tar cfz archive file1 +echo "separator" +mv file1 orig +tar xfv archive --warning=no-timestamp +cmp orig file1 ) +193. shortupd.at:31: ok + +191. comprec.at:21: ok ./truncate.at:32: mkdir ustar (cd ustar @@ -17895,43 +17933,6 @@ echo separator genfile --file foo --seek 195k --length 5k --pattern=zeros tar dvf bar|sed '/foo: Mod time differs/d') -./truncate.at:32: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -genfile --file foo --length 200k -genfile --file baz -genfile --run --checkpoint 10 --length 195k --truncate foo -- \ - tar -vcf bar foo baz -echo Exit status: $? -echo separator -genfile --file foo --seek 195k --length 5k --pattern=zeros -tar dvf bar|sed '/foo: Mod time differs/d') -./truncate.at:32: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -genfile --file foo --length 200k -genfile --file baz -genfile --run --checkpoint 10 --length 195k --truncate foo -- \ - tar -vcf bar foo baz -echo Exit status: $? -echo separator -genfile --file foo --seek 195k --length 5k --pattern=zeros -tar dvf bar|sed '/foo: Mod time differs/d') -188. verify.at:25: ok - -194. truncate.at:29: ok 196. sigpipe.at:21: testing sigpipe handling ... ./sigpipe.at:30: @@ -17981,6 +17982,23 @@ sed -n '$p' err exit $rc ) +./truncate.at:32: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +genfile --file foo --length 200k +genfile --file baz +genfile --run --checkpoint 10 --length 195k --truncate foo -- \ + tar -vcf bar foo baz +echo Exit status: $? +echo separator +genfile --file foo --seek 195k --length 5k --pattern=zeros +tar dvf bar|sed '/foo: Mod time differs/d') ./comperr.at:28: mkdir oldgnu (cd oldgnu @@ -17995,6 +18013,23 @@ sed -n '$p' err exit $rc ) +./truncate.at:32: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * + +genfile --file foo --length 200k +genfile --file baz +genfile --run --checkpoint 10 --length 195k --truncate foo -- \ + tar -vcf bar foo baz +echo Exit status: $? +echo separator +genfile --file foo --seek 195k --length 5k --pattern=zeros +tar dvf bar|sed '/foo: Mod time differs/d') ./comperr.at:28: mkdir ustar (cd ustar @@ -18009,6 +18044,7 @@ sed -n '$p' err exit $rc ) +194. truncate.at:29: ok ./comperr.at:28: mkdir posix (cd posix @@ -18037,7 +18073,6 @@ sed -n '$p' err exit $rc ) -197. comperr.at:18: ok 198. remfiles01.at:28: testing remove-files with compression ... ./remfiles01.at:32: @@ -18085,7 +18120,7 @@ find . | sort exit $EC -198. remfiles01.at:28: ok +197. comperr.at:18: ok 199. remfiles02.at:28: testing remove-files with compression: grand-child ... ./remfiles02.at:32: @@ -18109,18 +18144,11 @@ find . | sort exit $EC +198. remfiles01.at:28: ok 199. remfiles02.at:28: ok -200. remfiles03.at:28: testing remove-files with symbolic links ... -./remfiles03.at:31: -mkdir a -mkdir a/b -ln -s b a/c || exit 77 -tar --remove-files -cf a.tar a -genfile --stat a - -200. remfiles03.at:28: ok +200. remfiles03.at:28: testing remove-files with symbolic links ... 201. remfiles04a.at:25: testing remove-files with -C:rel in -c/non-incr. mode ... ./remfiles04a.at:28: mkdir gnu @@ -18141,6 +18169,13 @@ echo A find . | sort ) +./remfiles03.at:31: +mkdir a +mkdir a/b +ln -s b a/c || exit 77 +tar --remove-files -cf a.tar a +genfile --stat a + 201. remfiles04a.at:25: ok 202. remfiles04b.at:33: testing remove-files with -C:rel in -c/incr. mode ... @@ -18163,6 +18198,8 @@ echo A find . | sort ) +200. remfiles03.at:28: ok + 202. remfiles04b.at:33: ok 203. remfiles04c.at:33: testing remove-files with -C:rel in -r mode ... @@ -18188,8 +18225,6 @@ echo B find . | sort ) -203. remfiles04c.at:33: ok - 204. remfiles05a.at:34: testing remove-files with -C:rel,rel in -c/non-incr. mode ... ./remfiles05a.at:37: mkdir gnu @@ -18214,9 +18249,11 @@ find . | sort ) 204. remfiles05a.at:34: ok +203. remfiles04c.at:33: ok -205. remfiles05b.at:25: testing remove-files with -C:rel,rel in -c/incr. mode ... -./remfiles05b.at:28: + +206. remfiles05c.at:25: testing remove-files with -C:rel,rel in -r mode ... +./remfiles05c.at:28: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -18233,15 +18270,16 @@ echo file > file echo foo/file > foo/file echo bar/file > bar/file +tar -cf foo.tar -C foo file -C ../bar file decho A -tar -cvf foo.tar --incremental --remove-files -C foo file -C ../bar file +find . | sort decho B +tar -rvf foo.tar --remove-files -C foo file -C ../bar file +decho C find . | sort ) -205. remfiles05b.at:25: ok - -206. remfiles05c.at:25: testing remove-files with -C:rel,rel in -r mode ... -./remfiles05c.at:28: +205. remfiles05b.at:25: testing remove-files with -C:rel,rel in -c/incr. mode ... +./remfiles05b.at:28: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -18258,16 +18296,15 @@ echo file > file echo foo/file > foo/file echo bar/file > bar/file -tar -cf foo.tar -C foo file -C ../bar file decho A -find . | sort +tar -cvf foo.tar --incremental --remove-files -C foo file -C ../bar file decho B -tar -rvf foo.tar --remove-files -C foo file -C ../bar file -decho C find . | sort ) +205. remfiles05b.at:25: ok 206. remfiles05c.at:25: ok + 207. remfiles06a.at:25: testing remove-files with -C:rel,abs in -c/non-incr. mode ... ./remfiles06a.at:28: mkdir gnu @@ -18292,8 +18329,6 @@ decho B find . | sort ) -207. remfiles06a.at:25: ok - 208. remfiles06b.at:25: testing remove-files with -C:rel,abs in -c/incr. mode ... ./remfiles06b.at:28: mkdir gnu @@ -18318,10 +18353,12 @@ decho B find . | sort ) +207. remfiles06a.at:25: ok 208. remfiles06b.at:25: ok -209. remfiles06c.at:25: testing remove-files with -C:rel,abs in -r mode ... -./remfiles06c.at:28: + +210. remfiles07a.at:25: testing remove-files with -C:abs,rel in -c/non-incr. mode ... +./remfiles07a.at:28: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -18339,18 +18376,13 @@ echo foo/file > foo/file echo bar/file > bar/file DIR=`pwd` -tar -cf foo.tar -C foo file -C $DIR/bar file decho A -find . | sort +tar -cvf foo.tar --remove-files -C $DIR/foo file -C ../bar file decho B -tar -rvf foo.tar --remove-files -C foo file -C $DIR/bar file -decho C find . | sort ) -209. remfiles06c.at:25: ok - -210. remfiles07a.at:25: testing remove-files with -C:abs,rel in -c/non-incr. mode ... -./remfiles07a.at:28: +209. remfiles06c.at:25: testing remove-files with -C:rel,abs in -r mode ... +./remfiles06c.at:28: mkdir gnu (cd gnu TEST_TAR_FORMAT=gnu @@ -18368,13 +18400,18 @@ echo foo/file > foo/file echo bar/file > bar/file DIR=`pwd` +tar -cf foo.tar -C foo file -C $DIR/bar file decho A -tar -cvf foo.tar --remove-files -C $DIR/foo file -C ../bar file +find . | sort decho B +tar -rvf foo.tar --remove-files -C foo file -C $DIR/bar file +decho C find . | sort ) 210. remfiles07a.at:25: ok +209. remfiles06c.at:25: ok + 211. remfiles07b.at:25: testing remove-files with -C:abs,rel in -c/incr. mode ... ./remfiles07b.at:28: mkdir gnu @@ -18399,8 +18436,6 @@ decho B find . | sort ) -211. remfiles07b.at:25: ok - 212. remfiles07c.at:25: testing remove-files with -C:abs,rel in -r mode ... ./remfiles07c.at:28: mkdir gnu @@ -18428,6 +18463,8 @@ decho C find . | sort ) +211. remfiles07b.at:25: ok + 212. remfiles07c.at:25: ok 213. remfiles08a.at:28: testing remove-files deleting two subdirs in -c/non-incr. mode ... @@ -18449,8 +18486,6 @@ decho B find . ) -213. remfiles08a.at:28: ok - 214. remfiles08b.at:31: testing remove-files deleting two subdirs in -c/incr. mode ... ./remfiles08b.at:34: mkdir gnu @@ -18470,20 +18505,26 @@ decho B find . ) +213. remfiles08a.at:28: ok 214. remfiles08b.at:31: ok -./grow.at:27: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu + +216. remfiles09a.at:25: testing remove-files on full directory in -c/non-incr. mode ... +./remfiles09a.at:28: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * -genfile --file foo --length 50000k -genfile --file baz -genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz +mkdir foo +echo foo/file > foo/file +decho A +tar -cvf foo.tar --remove-files foo +decho B +find . ) 215. remfiles08c.at:28: testing remove-files deleting two subdirs in -r mode ... ./remfiles08c.at:31: @@ -18510,27 +18551,22 @@ decho C find . ) -215. remfiles08c.at:28: ok - -216. remfiles09a.at:25: testing remove-files on full directory in -c/non-incr. mode ... -./remfiles09a.at:28: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +216. remfiles09a.at:25: ok +./grow.at:27: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * -mkdir foo -echo foo/file > foo/file -decho A -tar -cvf foo.tar --remove-files foo -decho B -find . +genfile --file foo --length 50000k +genfile --file baz +genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz ) -216. remfiles09a.at:25: ok +215. remfiles08c.at:28: ok 217. remfiles09b.at:29: testing remove-files on full directory in -c/incr. mode ... ./remfiles09b.at:32: mkdir gnu @@ -18548,8 +18584,8 @@ decho B find . ) -217. remfiles09b.at:29: ok +217. remfiles09b.at:29: ok 218. remfiles09c.at:25: testing remove-files on full directory in -r mode ... ./remfiles09c.at:28: mkdir gnu @@ -18573,7 +18609,6 @@ decho C find . | sort ) -218. remfiles09c.at:25: ok 219. remfiles10.at:20: testing remove-files ... ./remfiles10.at:23: @@ -18594,6 +18629,8 @@ find foo exit $tar_status ) +218. remfiles09c.at:25: ok + stderr: A tar: .: Cannot rmdir: Invalid argument @@ -18650,14 +18687,6 @@ getfattr -h -d dir | grep -v -e '^#' -e ^$ getfattr -h -d dir/file | grep -v -e '^#' -e ^$ ) ---- - 2024-04-21 14:14:37.681850956 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/220/stdout 2024-04-21 14:14:37.677571021 +0000 -@@ -1,3 +1 @@ --user.test="OurDirValue" --user.test="OurFileValue" - -220. xattr01.at:25: skipped (xattr01.at:28) - 221. xattr02.at:25: testing xattrs: change directory with -C option ... ./xattr02.at:28: mkdir v7 @@ -18713,17 +18742,25 @@ getfattr -h -d file2 | grep -v -e '^#' -e ^$ getfattr -h -d subsubdir | grep -v -e '^#' -e ^$ ) ---- - 2024-04-21 14:14:38.250296075 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/221/stdout 2024-04-21 14:14:38.245517386 +0000 +--- - 2024-04-21 14:22:39.800648208 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/221/stdout 2024-04-21 14:22:39.788786048 +0000 @@ -1,4 +1 @@ -user.test="OurFile1Value" -user.test="OurFile2Value" -user.test="OurDirValue" -221. xattr02.at:25: skipped (xattr02.at:28) +--- - 2024-04-21 14:22:39.802932683 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/220/stdout 2024-04-21 14:22:39.796785751 +0000 +@@ -1,3 +1 @@ +-user.test="OurDirValue" +-user.test="OurFileValue" + +221. xattr02.at:25: 220. xattr01.at:25: skipped (xattr02.at:28) + skipped (xattr01.at:28) -222. xattr03.at:25: testing xattrs: trusted.* attributes ... -./xattr03.at:28: + +223. xattr04.at:26: testing xattrs: s/open/openat/ regression ... +./xattr04.at:29: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -18733,14 +18770,6 @@ rm -rf * -echo "test" > $$ -chmod 0 $$ -cat $$ > /dev/null 2>&1 -result=$? -rm -f $$ -test $result -eq 0 || exit 77 - - file=$(TMPDIR=. mktemp fiXXXXXX) @@ -18766,36 +18795,21 @@ mkdir dir -mkdir dir/subdir -mkdir dir/subdir/subsubdir -genfile --file dir/file1 -genfile --file dir/subdir/file2 - -setfattr -n trusted.test -v OurFile1Value dir/file1 -setfattr -n trusted.test -v OurFile2Value dir/subdir/file2 -setfattr -n trusted.test -v OurDirValue dir/subdir/subsubdir - -tar --xattrs -cf archive.tar -C dir file1 -C subdir file2 subsubdir +mkdir output +genfile --file dir/file -rm -rf dir +setfattr -n user.test -v value dir/file -tar --xattrs --xattrs-include=trusted* -xf archive.tar +# archive whole directory including binary xattrs +tar --xattrs -cf archive.tar -C dir . -getfattr -mtrusted. -d file1 | grep -v -e '^#' -e ^$ -getfattr -mtrusted. -d file2 | grep -v -e '^#' -e ^$ -getfattr -mtrusted. -d subsubdir | grep -v -e '^#' -e ^$ +tar --xattrs -xf archive.tar -C output +ret=$? +getfattr -h -d output/file | grep -v -e '^#' -e ^$ +exit $ret ) ---- - 2024-04-21 14:14:38.480607845 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/222/stdout 2024-04-21 14:14:38.473495857 +0000 -@@ -1,4 +1 @@ --trusted.test="OurFile1Value" --trusted.test="OurFile2Value" --trusted.test="OurDirValue" - -222. xattr03.at:25: skipped (xattr03.at:28) - -223. xattr04.at:26: testing xattrs: s/open/openat/ regression ... -./xattr04.at:29: +222. xattr03.at:25: testing xattrs: trusted.* attributes ... +./xattr03.at:28: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -18805,6 +18819,14 @@ rm -rf * +echo "test" > $$ +chmod 0 $$ +cat $$ > /dev/null 2>&1 +result=$? +rm -f $$ +test $result -eq 0 || exit 77 + + file=$(TMPDIR=. mktemp fiXXXXXX) @@ -18830,25 +18852,40 @@ mkdir dir -mkdir output -genfile --file dir/file +mkdir dir/subdir +mkdir dir/subdir/subsubdir +genfile --file dir/file1 +genfile --file dir/subdir/file2 -setfattr -n user.test -v value dir/file +setfattr -n trusted.test -v OurFile1Value dir/file1 +setfattr -n trusted.test -v OurFile2Value dir/subdir/file2 +setfattr -n trusted.test -v OurDirValue dir/subdir/subsubdir -# archive whole directory including binary xattrs -tar --xattrs -cf archive.tar -C dir . +tar --xattrs -cf archive.tar -C dir file1 -C subdir file2 subsubdir -tar --xattrs -xf archive.tar -C output -ret=$? -getfattr -h -d output/file | grep -v -e '^#' -e ^$ -exit $ret +rm -rf dir + +tar --xattrs --xattrs-include=trusted* -xf archive.tar + +getfattr -mtrusted. -d file1 | grep -v -e '^#' -e ^$ +getfattr -mtrusted. -d file2 | grep -v -e '^#' -e ^$ +getfattr -mtrusted. -d subsubdir | grep -v -e '^#' -e ^$ ) ---- - 2024-04-21 14:14:38.676117402 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/223/stdout 2024-04-21 14:14:38.669477349 +0000 +--- - 2024-04-21 14:22:39.936798277 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/223/stdout 2024-04-21 14:22:39.928780854 +0000 @@ -1,2 +1 @@ -user.test="value" -223. xattr04.at:26: skipped (xattr04.at:29) +--- - 2024-04-21 14:22:39.941461424 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/222/stdout 2024-04-21 14:22:39.936780557 +0000 +@@ -1,4 +1 @@ +-trusted.test="OurFile1Value" +-trusted.test="OurFile2Value" +-trusted.test="OurDirValue" + +223. xattr04.at:26: 222. xattr03.at:25: skipped (xattr03.at:28) + skipped (xattr04.at:29) + 224. xattr05.at:28: testing xattrs: keywords with '=' and '%' ... ./xattr05.at:31: @@ -18899,8 +18936,6 @@ getfattr -d output/file | grep -v '# ' > after diff before after ) -224. xattr05.at:28: skipped (xattr05.at:31) - 225. xattr06.at:27: testing xattrs: exclude xattrs on create ... ./xattr06.at:30: mkdir v7 @@ -18956,7 +18991,9 @@ # if they differ then the attribute is still present diff filtered full ) -225. xattr06.at:27: skipped (xattr06.at:30) +225. xattr06.at:27: 224. xattr05.at:28: skipped (xattr06.at:30) + skipped (xattr05.at:31) + 226. xattr07.at:26: testing xattrs: xattrs and --skip-old-files ... ./xattr07.at:29: @@ -19014,31 +19051,6 @@ getfattr -h -d dir/file | grep -v -e '^#' -e ^$ getfattr -h -d dir/file2 | grep -v -e '^#' -e ^$ ) ---- - 2024-04-21 14:14:39.577707799 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/226/stderr 2024-04-21 14:14:39.573391987 +0000 -@@ -1,7 +1 @@ --tar: dir: skipping existing file --tar: dir/file: skipping existing file --tar: dir/file2: skipping existing file --tar: dir/file: Cannot open: File exists --tar: dir/file2: Cannot open: File exists --tar: Exiting with failure status due to previous errors - ---- - 2024-04-21 14:14:39.580816885 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/226/stdout 2024-04-21 14:14:39.573391987 +0000 -@@ -1,10 +1 @@ --dir/ --dir/file --dir/file2 --dir/ --dir/file --dir/file2 --user.test="OurDirValue2" --user.test="OurFileValue2" --user.test="OurFileValue2" - -226. xattr07.at:26: skipped (xattr07.at:29) - 227. xattr08.at:26: testing xattrs: xattrs and read-only files ... ./xattr08.at:29: mkdir v7 @@ -19082,7 +19094,32 @@ tar --xattrs -C dir -cf archive.tar file tar --xattrs -C dir2 -xf archive.tar ) -227. xattr08.at:26: skipped (xattr08.at:29) +--- - 2024-04-21 14:22:40.719510637 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/226/stderr 2024-04-21 14:22:40.712751768 +0000 +@@ -1,7 +1 @@ +-tar: dir: skipping existing file +-tar: dir/file: skipping existing file +-tar: dir/file2: skipping existing file +-tar: dir/file: Cannot open: File exists +-tar: dir/file2: Cannot open: File exists +-tar: Exiting with failure status due to previous errors + +--- - 2024-04-21 14:22:40.725078191 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/226/stdout 2024-04-21 14:22:40.716751620 +0000 +@@ -1,10 +1 @@ +-dir/ +-dir/file +-dir/file2 +-dir/ +-dir/file +-dir/file2 +-user.test="OurDirValue2" +-user.test="OurFileValue2" +-user.test="OurFileValue2" + +226. xattr07.at:26: 227. xattr08.at:26: skipped (xattr07.at:29) + skipped (xattr08.at:29) + 228. acls01.at:25: testing acls: basic functionality ... ./acls01.at:28: @@ -19154,8 +19191,6 @@ diff before after test "$?" = 0 ) -228. acls01.at:25: skipped (acls01.at:28) - 229. acls02.at:25: testing acls: work with -C ... ./acls02.at:28: mkdir v7 @@ -19232,7 +19267,9 @@ diff before after test "$?" = 0 ) -229. acls02.at:25: skipped (acls02.at:28) +228. acls01.at:25: 229. acls02.at:25: skipped (acls01.at:28) + skipped (acls02.at:28) + 230. acls03.at:30: testing acls: default ACLs ... ./acls03.at:47: @@ -19452,8 +19489,6 @@ fi ) -230. acls03.at:30: skipped (acls03.at:47) - 231. selnx01.at:25: testing selinux: basic store/restore ... ./selnx01.at:28: mkdir v7 @@ -19563,17 +19598,19 @@ fi ) ---- - 2024-04-21 14:14:41.131755901 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/231/stdout 2024-04-21 14:14:41.125245436 +0000 +--- - 2024-04-21 14:22:40.986066548 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/231/stdout 2024-04-21 14:22:40.980741826 +0000 @@ -1,4 +1 @@ -security.selinux="system_u -security.selinux="unconfined_u -security.selinux="system_u -231. selnx01.at:25: skipped (selnx01.at:28) +231. selnx01.at:25: 230. acls03.at:30: skipped (selnx01.at:28) + skipped (acls03.at:47) -232. selacl01.at:25: testing acls/selinux: special files & fifos ... -./selacl01.at:28: + +233. capabs_raw01.at:25: testing capabilities: binary store/restore ... +./capabs_raw01.at:28: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -19591,6 +19628,7 @@ test $result -eq 0 || exit 77 + file=$(TMPDIR=. mktemp fiXXXXXX) setfattr -n user.test -v test $file &> /dev/null @@ -19605,91 +19643,113 @@ fi - - - file=$(TMPDIR=. mktemp fiXXXXXX) - - restorecon $file &> /dev/null - if test "$?" != 0; then - exit 77 - fi - - - chcon -h --user=unconfined_u $file &> /dev/null - if test "$?" != 0; then - exit 77 - fi - - rm -rf $file - file=$(TMPDIR=. mktemp fiXXXXXX) - err=$( tar --selinux -cf /dev/null $file 2>&1 >/dev/null | wc -l ) + setfattr -n user.test -v ahoj $file + # check whether tar fails to store xattrs + err=$( tar --xattrs -cf /dev/null $file 2>&1 >/dev/null | wc -l ) if test "$err" != "0"; then exit 77 fi - file=$(TMPDIR=. mktemp fiXXXXXX) - setfacl -m u:$UID:rwx $file &> /dev/null + setcap "= cap_chown=ei" $file &> /dev/null if test "$?" != 0; then exit 77 fi - getfacl $file &> /dev/null + getcap $file &> /dev/null if test "$?" != 0; then exit 77 fi rm -rf $file - file=$(TMPDIR=. mktemp fiXXXXXX) - setfacl -m u:$UID:rwx $file - err=$( tar --acls -cf /dev/null $file 2>&1 >/dev/null | wc -l ) - if test "$err" != "0"; then - exit 77 - fi - mkdir dir -mkfifo dir/fifo -MAJOR=$( stat /dev/urandom --printf="%t" ) -MINOR=$( stat /dev/urandom --printf="%T" ) -mknod dir/chartype c $MAJOR $MINOR - -# setup attributes -restorecon -R dir -chcon -h --user=system_u dir/fifo -chcon -h --user=system_u dir/chartype -setfacl -m u:$UID:--- dir/fifo -setfacl -m u:$UID:rwx dir/chartype - -getfacl dir/fifo >> before -getfattr -msecurity.selinux dir/chartype >> before +genfile --file dir/file -tar --xattrs --selinux --acls -cf archive.tar dir +setcap "= cap_chown=ei" dir/file -mv dir olddir +# archive whole directory including binary xattrs +tar --xattrs -cf archive.tar dir -tar --xattrs --selinux --acls -xf archive.tar +# clear the directory +rm -rf dir -getfacl dir/fifo >> after -getfattr -msecurity.selinux dir/chartype >> after +# restore _all_ xattrs (not just the user.* domain) +tar --xattrs --xattrs-include='*' -xf archive.tar -diff before after -echo separator +# Newer systems print = instead of + here +getcap dir/file | sed 's/+/=/' ) ---- - 2024-04-21 14:14:41.656513105 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/232/stdout 2024-04-21 14:14:41.649195956 +0000 +--- - 2024-04-21 14:22:41.562018980 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/233/stdout 2024-04-21 14:22:41.556720457 +0000 @@ -1,2 +1 @@ --separator +-dir/file = cap_chown=ei -232. selacl01.at:25: skipped (selacl01.at:28) +233. capabs_raw01.at:25: skipped (capabs_raw01.at:28) -233. capabs_raw01.at:25: testing capabilities: binary store/restore ... -./capabs_raw01.at:28: +234. onetop01.at:21: testing tar --one-top-level ... +./onetop01.at:24: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 +export TEST_TAR_FORMAT +TAR_OPTIONS="-H v7" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir a +genfile --file a/b +genfile --file c +tar cf a.tar a c +mkdir out +cd out +tar --one-top-level -x -f ../a.tar +find . | sort +) +./grow.at:27: +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar +export TEST_TAR_FORMAT +TAR_OPTIONS="-H ustar" +export TAR_OPTIONS +rm -rf * + +genfile --file foo --length 50000k +genfile --file baz +genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz +) +./onetop01.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H oldgnu" +export TAR_OPTIONS +rm -rf * + + +test -z "`sort < /dev/null 2>&1`" || exit 77 + +mkdir a +genfile --file a/b +genfile --file c +tar cf a.tar a c +mkdir out +cd out +tar --one-top-level -x -f ../a.tar +find . | sort +) +232. selacl01.at:25: testing acls/selinux: special files & fifos ... +./selacl01.at:28: mkdir v7 (cd v7 TEST_TAR_FORMAT=v7 @@ -19707,7 +19767,6 @@ test $result -eq 0 || exit 77 - file=$(TMPDIR=. mktemp fiXXXXXX) setfattr -n user.test -v test $file &> /dev/null @@ -19722,54 +19781,90 @@ fi + + file=$(TMPDIR=. mktemp fiXXXXXX) - setfattr -n user.test -v ahoj $file - # check whether tar fails to store xattrs - err=$( tar --xattrs -cf /dev/null $file 2>&1 >/dev/null | wc -l ) + + restorecon $file &> /dev/null + if test "$?" != 0; then + exit 77 + fi + + + chcon -h --user=unconfined_u $file &> /dev/null + if test "$?" != 0; then + exit 77 + fi + + rm -rf $file + + file=$(TMPDIR=. mktemp fiXXXXXX) + err=$( tar --selinux -cf /dev/null $file 2>&1 >/dev/null | wc -l ) if test "$err" != "0"; then exit 77 fi + file=$(TMPDIR=. mktemp fiXXXXXX) - setcap "= cap_chown=ei" $file &> /dev/null + setfacl -m u:$UID:rwx $file &> /dev/null if test "$?" != 0; then exit 77 fi - getcap $file &> /dev/null + getfacl $file &> /dev/null if test "$?" != 0; then exit 77 fi rm -rf $file + file=$(TMPDIR=. mktemp fiXXXXXX) + setfacl -m u:$UID:rwx $file + err=$( tar --acls -cf /dev/null $file 2>&1 >/dev/null | wc -l ) + if test "$err" != "0"; then + exit 77 + fi + mkdir dir -genfile --file dir/file +mkfifo dir/fifo +MAJOR=$( stat /dev/urandom --printf="%t" ) +MINOR=$( stat /dev/urandom --printf="%T" ) +mknod dir/chartype c $MAJOR $MINOR -setcap "= cap_chown=ei" dir/file +# setup attributes +restorecon -R dir +chcon -h --user=system_u dir/fifo +chcon -h --user=system_u dir/chartype +setfacl -m u:$UID:--- dir/fifo +setfacl -m u:$UID:rwx dir/chartype -# archive whole directory including binary xattrs -tar --xattrs -cf archive.tar dir +getfacl dir/fifo >> before +getfattr -msecurity.selinux dir/chartype >> before -# clear the directory -rm -rf dir +tar --xattrs --selinux --acls -cf archive.tar dir -# restore _all_ xattrs (not just the user.* domain) -tar --xattrs --xattrs-include='*' -xf archive.tar +mv dir olddir -# Newer systems print = instead of + here -getcap dir/file | sed 's/+/=/' +tar --xattrs --selinux --acls -xf archive.tar + +getfacl dir/fifo >> after +getfattr -msecurity.selinux dir/chartype >> after + +diff before after +echo separator ) ---- - 2024-04-21 14:14:41.743295909 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/233/stdout 2024-04-21 14:14:41.737187646 +0000 +--- - 2024-04-21 14:22:42.026082763 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/232/stdout 2024-04-21 14:22:42.020703243 +0000 @@ -1,2 +1 @@ --dir/file = cap_chown=ei +-separator -./grow.at:27: +232. selacl01.at:25: skipped (selacl01.at:28) + +./onetop01.at:24: mkdir ustar (cd ustar TEST_TAR_FORMAT=ustar @@ -19778,22 +19873,6 @@ export TAR_OPTIONS rm -rf * -genfile --file foo --length 50000k -genfile --file baz -genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz -) -233. capabs_raw01.at:25: skipped (capabs_raw01.at:28) - -234. onetop01.at:21: testing tar --one-top-level ... -./onetop01.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - test -z "`sort < /dev/null 2>&1`" || exit 77 @@ -19806,12 +19885,13 @@ tar --one-top-level -x -f ../a.tar find . | sort ) -./onetop01.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +235. onetop02.at:21: testing tar --one-top-level --show-transformed ... +./onetop02.at:24: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -19824,15 +19904,15 @@ tar cf a.tar a c mkdir out cd out -tar --one-top-level -x -f ../a.tar +tar --one-top-level --show-transformed -v -x -f ../a.tar find . | sort ) -./onetop01.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./onetop02.at:24: +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -19845,7 +19925,7 @@ tar cf a.tar a c mkdir out cd out -tar --one-top-level -x -f ../a.tar +tar --one-top-level --show-transformed -v -x -f ../a.tar find . | sort ) ./onetop01.at:24: @@ -19890,51 +19970,6 @@ tar --one-top-level -x -f ../a.tar find . | sort ) -234. onetop01.at:21: ok - -235. onetop02.at:21: testing tar --one-top-level --show-transformed ... -./onetop02.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 -export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir a -genfile --file a/b -genfile --file c -tar cf a.tar a c -mkdir out -cd out -tar --one-top-level --show-transformed -v -x -f ../a.tar -find . | sort -) -./onetop02.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" -export TAR_OPTIONS -rm -rf * - - -test -z "`sort < /dev/null 2>&1`" || exit 77 - -mkdir a -genfile --file a/b -genfile --file c -tar cf a.tar a c -mkdir out -cd out -tar --one-top-level --show-transformed -v -x -f ../a.tar -find . | sort -) ./onetop02.at:24: mkdir ustar (cd ustar @@ -19956,6 +19991,7 @@ tar --one-top-level --show-transformed -v -x -f ../a.tar find . | sort ) +234. onetop01.at:21: ok ./onetop02.at:24: mkdir posix (cd posix @@ -19977,12 +20013,14 @@ tar --one-top-level --show-transformed -v -x -f ../a.tar find . | sort ) -./onetop02.at:24: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu + +236. onetop03.at:21: testing tar --one-top-level --transform ... +./onetop03.at:24: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -19995,18 +20033,15 @@ tar cf a.tar a c mkdir out cd out -tar --one-top-level --show-transformed -v -x -f ../a.tar +tar --one-top-level --transform 's/c/d/' -x -f ../a.tar find . | sort ) -235. onetop02.at:21: ok - -236. onetop03.at:21: testing tar --one-top-level --transform ... -./onetop03.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +./onetop02.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -20019,7 +20054,7 @@ tar cf a.tar a c mkdir out cd out -tar --one-top-level --transform 's/c/d/' -x -f ../a.tar +tar --one-top-level --show-transformed -v -x -f ../a.tar find . | sort ) ./onetop03.at:24: @@ -20043,6 +20078,8 @@ tar --one-top-level --transform 's/c/d/' -x -f ../a.tar find . | sort ) +235. onetop02.at:21: ok + ./onetop03.at:24: mkdir ustar (cd ustar @@ -20064,12 +20101,13 @@ tar --one-top-level --transform 's/c/d/' -x -f ../a.tar find . | sort ) -./onetop03.at:24: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix +237. onetop04.at:21: testing tar --one-top-level --transform ... +./onetop04.at:24: +mkdir v7 +(cd v7 +TEST_TAR_FORMAT=v7 export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" +TAR_OPTIONS="-H v7" export TAR_OPTIONS rm -rf * @@ -20080,17 +20118,14 @@ genfile --file a/b genfile --file c tar cf a.tar a c -mkdir out -cd out -tar --one-top-level --transform 's/c/d/' -x -f ../a.tar -find . | sort +tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort ) ./onetop03.at:24: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" +TAR_OPTIONS="-H posix" export TAR_OPTIONS rm -rf * @@ -20106,15 +20141,12 @@ tar --one-top-level --transform 's/c/d/' -x -f ../a.tar find . | sort ) -236. onetop03.at:21: ok - -237. onetop04.at:21: testing tar --one-top-level --transform ... ./onetop04.at:24: -mkdir v7 -(cd v7 -TEST_TAR_FORMAT=v7 +mkdir oldgnu +(cd oldgnu +TEST_TAR_FORMAT=oldgnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H v7" +TAR_OPTIONS="-H oldgnu" export TAR_OPTIONS rm -rf * @@ -20128,11 +20160,11 @@ tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort ) ./onetop04.at:24: -mkdir oldgnu -(cd oldgnu -TEST_TAR_FORMAT=oldgnu +mkdir ustar +(cd ustar +TEST_TAR_FORMAT=ustar export TEST_TAR_FORMAT -TAR_OPTIONS="-H oldgnu" +TAR_OPTIONS="-H ustar" export TAR_OPTIONS rm -rf * @@ -20145,12 +20177,12 @@ tar cf a.tar a c tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort ) -./onetop04.at:24: -mkdir ustar -(cd ustar -TEST_TAR_FORMAT=ustar +./onetop03.at:24: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu export TEST_TAR_FORMAT -TAR_OPTIONS="-H ustar" +TAR_OPTIONS="-H gnu" export TAR_OPTIONS rm -rf * @@ -20161,7 +20193,10 @@ genfile --file a/b genfile --file c tar cf a.tar a c -tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort +mkdir out +cd out +tar --one-top-level --transform 's/c/d/' -x -f ../a.tar +find . | sort ) ./onetop04.at:24: mkdir posix @@ -20181,6 +20216,8 @@ tar cf a.tar a c tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort ) +236. onetop03.at:21: ok + ./onetop04.at:24: mkdir gnu (cd gnu @@ -20199,8 +20236,6 @@ tar cf a.tar a c tar -tf a.tar --one-top-level --transform 's/c/d/' --show-transformed | sort ) -237. onetop04.at:21: ok - 238. onetop05.at:21: testing tar --one-top-level restoring permissions ... ./onetop05.at:28: mkdir v7 @@ -20249,6 +20284,8 @@ echo "TOP: mode changed: $orig_mode != $mode" fi ) +237. onetop04.at:21: ok + ./onetop05.at:28: mkdir oldgnu (cd oldgnu @@ -20296,6 +20333,27 @@ echo "TOP: mode changed: $orig_mode != $mode" fi ) +239. gtarfail.at:21: testing gtarfail ... +./gtarfail.at:26: + +test -z "$STAR_TESTSCRIPTS" && exit 77 +tarball_prereq gtarfail.tar bf7612e401aaa679edbb07ae1183811b $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 + + +tar --utc -tvf $STAR_TESTSCRIPTS/gtarfail.tar + +--- - 2024-04-21 14:22:43.621250981 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/239/stdout 2024-04-21 14:22:43.616644032 +0000 +@@ -1,7 +1 @@ +--rw-r--r-- jes/glone 518 2001-05-25 14:41 vedpowered.gif +--rw-r--r-- jes/glone 6825 1997-04-29 00:19 cd.gif +--rw-r--r-- jes/glone 33354 1999-06-22 12:17 DSCN0049c.JPG +--rw-r--r-- jes/glone 86159 2001-06-05 18:16 Window1.jpg +--rw-r--r-- jes/glone 1310 2001-05-25 13:05 vipower.gif +--rw-rw-rw- jes/glone 148753 1998-09-15 13:08 billyboy.jpg + +239. gtarfail.at:21: skipped (gtarfail.at:26) + ./onetop05.at:28: mkdir ustar (cd ustar @@ -20343,6 +20401,29 @@ echo "TOP: mode changed: $orig_mode != $mode" fi ) +240. gtarfail2.at:21: testing gtarfail2 ... +./gtarfail2.at:26: + +test -z "$STAR_TESTSCRIPTS" && exit 77 +tarball_prereq gtarfail2.tar 6b607d1faec14b82f69525d9c5b66e53 $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 + +tar --utc -tvf $STAR_TESTSCRIPTS/gtarfail2.tar + +--- - 2024-04-21 14:22:43.801034991 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/240/stdout 2024-04-21 14:22:43.796637354 +0000 +@@ -1,11 +1 @@ +--rwxr-xr-x jes/glone 214 2001-09-21 14:08 .clean +-lrwxrwxrwx jes/cats 0 1998-05-07 12:39 RULES -> makefiles/RULES +-drwxr-sr-x jes/glone 0 2001-12-10 00:00 build/ +--rw-r--r-- jes/glone 312019 2001-12-10 00:00 build/smake-1.2.tar.gz +-drwxr-sr-x jes/glone 0 2001-11-09 18:20 build/psmake/ +--rwxr-xr-x jes/glone 259 2000-01-09 16:36 build/psmake/MAKE +--rwxr-xr-x jes/glone 4820 2001-02-25 22:45 build/psmake/MAKE.sh +--rw-r--r-- jes/glone 647 2001-02-25 23:50 build/psmake/Makefile +-lrwxrwxrwx jes/glone 0 2001-08-29 10:53 build/psmake/archconf.c -> ../archconf.c +-lrwxrwxrwx jes/glone 0 2001-08-29 10:54 build/psmake/astoi.c -> ../../lib/astoi.c + +240. gtarfail2.at:21: skipped (gtarfail2.at:26) ./onetop05.at:28: mkdir posix (cd posix @@ -20390,112 +20471,6 @@ echo "TOP: mode changed: $orig_mode != $mode" fi ) -./onetop05.at:28: -mkdir gnu -(cd gnu -TEST_TAR_FORMAT=gnu -export TEST_TAR_FORMAT -TAR_OPTIONS="-H gnu" -export TAR_OPTIONS -rm -rf * - -orig_mode=3702 -mkdir d -chmod $orig_mode d - -mode=$(genfile --stat=mode.7777 d) -test $mode = $orig_mode || exit 77 - -genfile --file d/file -tar -cf d.tar -C d . -rm -rf d - -(mkdir d1 -chmod 700 d1 -cd d1 -tar --one-top-level=top -xpf ../d.tar) -mode=$(genfile --stat=mode.777 d1) -if test 700 = $mode; then - echo "CWD: OK" -else - echo "CWD: mode changed: 700 != $mode" -fi - -mkdir d2 -chmod 700 d2 -tar -C d2 --one-top-level=top -xpf d.tar -mode=$(genfile --stat=mode.777 d2) -if test 700 = $mode; then - echo "DIR: OK" -else - echo "DIR: mode changed: 700 != $mode" -fi -mode=$(genfile --stat=mode.7777 d2/top) -if test $mode = $orig_mode; then - echo "TOP: OK" -else - echo "TOP: mode changed: $orig_mode != $mode" -fi -) -238. onetop05.at:21: ok - -./grow.at:27: -mkdir posix -(cd posix -TEST_TAR_FORMAT=posix -export TEST_TAR_FORMAT -TAR_OPTIONS="-H posix" -export TAR_OPTIONS -rm -rf * - -genfile --file foo --length 50000k -genfile --file baz -genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz -) -239. gtarfail.at:21: testing gtarfail ... -./gtarfail.at:26: - -test -z "$STAR_TESTSCRIPTS" && exit 77 -tarball_prereq gtarfail.tar bf7612e401aaa679edbb07ae1183811b $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 - - -tar --utc -tvf $STAR_TESTSCRIPTS/gtarfail.tar - ---- - 2024-04-21 14:14:45.292836105 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/239/stdout 2024-04-21 14:14:45.284852619 +0000 -@@ -1,7 +1 @@ ---rw-r--r-- jes/glone 518 2001-05-25 14:41 vedpowered.gif ---rw-r--r-- jes/glone 6825 1997-04-29 00:19 cd.gif ---rw-r--r-- jes/glone 33354 1999-06-22 12:17 DSCN0049c.JPG ---rw-r--r-- jes/glone 86159 2001-06-05 18:16 Window1.jpg ---rw-r--r-- jes/glone 1310 2001-05-25 13:05 vipower.gif ---rw-rw-rw- jes/glone 148753 1998-09-15 13:08 billyboy.jpg - -239. gtarfail.at:21: skipped (gtarfail.at:26) - -240. gtarfail2.at:21: testing gtarfail2 ... -./gtarfail2.at:26: - -test -z "$STAR_TESTSCRIPTS" && exit 77 -tarball_prereq gtarfail2.tar 6b607d1faec14b82f69525d9c5b66e53 $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 - -tar --utc -tvf $STAR_TESTSCRIPTS/gtarfail2.tar - ---- - 2024-04-21 14:14:45.416207934 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/240/stdout 2024-04-21 14:14:45.408840910 +0000 -@@ -1,11 +1 @@ ---rwxr-xr-x jes/glone 214 2001-09-21 14:08 .clean --lrwxrwxrwx jes/cats 0 1998-05-07 12:39 RULES -> makefiles/RULES --drwxr-sr-x jes/glone 0 2001-12-10 00:00 build/ ---rw-r--r-- jes/glone 312019 2001-12-10 00:00 build/smake-1.2.tar.gz --drwxr-sr-x jes/glone 0 2001-11-09 18:20 build/psmake/ ---rwxr-xr-x jes/glone 259 2000-01-09 16:36 build/psmake/MAKE ---rwxr-xr-x jes/glone 4820 2001-02-25 22:45 build/psmake/MAKE.sh ---rw-r--r-- jes/glone 647 2001-02-25 23:50 build/psmake/Makefile --lrwxrwxrwx jes/glone 0 2001-08-29 10:53 build/psmake/archconf.c -> ../archconf.c --lrwxrwxrwx jes/glone 0 2001-08-29 10:54 build/psmake/astoi.c -> ../../lib/astoi.c - -240. gtarfail2.at:21: skipped (gtarfail2.at:26) 241. multi-fail.at:21: testing multi-fail ... ./multi-fail.at:26: @@ -20511,8 +20486,8 @@ tar --utc -tvM -f $STAR_TESTSCRIPTS/gnu-multi-fail-volume1.gtar \ -f $STAR_TESTSCRIPTS/gnu-multi-fail-volume2.gtar <&- ---- - 2024-04-21 14:14:45.633445159 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/241/stdout 2024-04-21 14:14:45.624820514 +0000 +--- - 2024-04-21 14:22:44.000242841 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/241/stdout 2024-04-21 14:22:43.992630083 +0000 @@ -1,53 +1 @@ -drwxrwsr-x joerg/bs 0 2003-10-11 14:32 OBJ/i386-sunos5-gcc/ --rw-r--r-- joerg/bs 1 2003-10-11 14:32 OBJ/i386-sunos5-gcc/Dnull @@ -20567,29 +20542,56 @@ --rw-r--r-- joerg/bs 952 2003-10-10 18:07 OBJ/i386-sunos5-gcc/movearch.o --rw-r--r-- joerg/bs 2756 2003-10-07 17:53 OBJ/i386-sunos5-gcc/table.o -241. multi-fail.at:21: skipped (multi-fail.at:26) - -242. ustar-big-2g.at:21: testing ustar-big-2g ... -./ustar-big-2g.at:26: -test "${TARTEST_SKIP_LARGE_FILES:-0}" != 0 && exit 77 +./onetop05.at:28: +mkdir gnu +(cd gnu +TEST_TAR_FORMAT=gnu +export TEST_TAR_FORMAT +TAR_OPTIONS="-H gnu" +export TAR_OPTIONS +rm -rf * -cat /dev/null | bzip2 - > /dev/null 2>&1 || exit 77 +orig_mode=3702 +mkdir d +chmod $orig_mode d +mode=$(genfile --stat=mode.7777 d) +test $mode = $orig_mode || exit 77 -test -z "$STAR_TESTSCRIPTS" && exit 77 -tarball_prereq ustar-big-2g.tar.bz2 b63979733629c8fcdf40b60065422767 $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 +genfile --file d/file +tar -cf d.tar -C d . +rm -rf d +(mkdir d1 +chmod 700 d1 +cd d1 +tar --one-top-level=top -xpf ../d.tar) +mode=$(genfile --stat=mode.777 d1) +if test 700 = $mode; then + echo "CWD: OK" +else + echo "CWD: mode changed: 700 != $mode" +fi -tar --utc -tvjf $STAR_TESTSCRIPTS/ustar-big-2g.tar.bz2 +mkdir d2 +chmod 700 d2 +tar -C d2 --one-top-level=top -xpf d.tar +mode=$(genfile --stat=mode.777 d2) +if test 700 = $mode; then + echo "DIR: OK" +else + echo "DIR: mode changed: 700 != $mode" +fi +mode=$(genfile --stat=mode.7777 d2/top) +if test $mode = $orig_mode; then + echo "TOP: OK" +else + echo "TOP: mode changed: $orig_mode != $mode" +fi +) +241. multi-fail.at:21: skipped (multi-fail.at:26) -stderr: ---- - 2024-04-21 14:14:45.812103427 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/242/stdout 2024-04-21 14:14:45.804803517 +0000 -@@ -1,3 +1 @@ ---rw------- jes/glone 2147483647 2002-06-15 14:53 big ---rw-r--r-- jes/glone 0 2002-06-15 14:53 file - -242. ustar-big-2g.at:21: skipped (ustar-big-2g.at:26) +238. onetop05.at:21: ok 243. ustar-big-8g.at:21: testing ustar-big-8g ... ./ustar-big-8g.at:26: @@ -20604,14 +20606,48 @@ tar --utc -tvjf $STAR_TESTSCRIPTS/ustar-big-8g.tar.bz2 +242. ustar-big-2g.at:21: testing ustar-big-2g ... +./ustar-big-2g.at:26: +test "${TARTEST_SKIP_LARGE_FILES:-0}" != 0 && exit 77 + +cat /dev/null | bzip2 - > /dev/null 2>&1 || exit 77 + + +test -z "$STAR_TESTSCRIPTS" && exit 77 +tarball_prereq ustar-big-2g.tar.bz2 b63979733629c8fcdf40b60065422767 $STAR_TESTSCRIPTS $STAR_DATA_URL || exit 77 + + +tar --utc -tvjf $STAR_TESTSCRIPTS/ustar-big-2g.tar.bz2 + +./grow.at:27: +mkdir posix +(cd posix +TEST_TAR_FORMAT=posix +export TEST_TAR_FORMAT +TAR_OPTIONS="-H posix" +export TAR_OPTIONS +rm -rf * + +genfile --file foo --length 50000k +genfile --file baz +genfile --run=10 --checkpoint 10 --length 1024 --append foo -- tar -vcf bar foo baz +) +stderr: stderr: ---- - 2024-04-21 14:14:45.886533738 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/243/stdout 2024-04-21 14:14:45.880796340 +0000 +--- - 2024-04-21 14:22:44.515913629 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/243/stdout 2024-04-21 14:22:44.508610940 +0000 @@ -1,3 +1 @@ --rw------- jes/glone 8589934591 2002-06-15 15:08 8gb-1 --rw-r--r-- jes/glone 0 2002-06-15 14:53 file -243. ustar-big-8g.at:21: skipped (ustar-big-8g.at:26) +--- - 2024-04-21 14:22:44.518398017 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/242/stdout 2024-04-21 14:22:44.512610791 +0000 +@@ -1,3 +1 @@ +--rw------- jes/glone 2147483647 2002-06-15 14:53 big +--rw-r--r-- jes/glone 0 2002-06-15 14:53 file + +243. ustar-big-8g.at:21: 242. ustar-big-2g.at:21: skipped (ustar-big-2g.at:26) + skipped (ustar-big-8g.at:26) 244. pax-big-10g.at:21: testing pax-big-10g ... ./pax-big-10g.at:26: @@ -20627,8 +20663,8 @@ tar --utc -tvjf $STAR_TESTSCRIPTS/pax-big-10g.tar.bz2 stderr: ---- - 2024-04-21 14:14:46.008985415 +0000 -+++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/244/stdout 2024-04-21 14:14:46.000785009 +0000 +--- - 2024-04-21 14:22:44.684188506 +0000 ++++ /build/reproducible-path/tar-1.35+dfsg/tests/testsuite.dir/at-groups/244/stdout 2024-04-21 14:22:44.676604707 +0000 @@ -1,3 +1 @@ --rw------- jes/glone 10737418240 2002-06-15 21:18 10g --rw-r--r-- jes/glone 0 2002-06-15 14:53 file @@ -20665,7 +20701,7 @@ create-stamp debian/debhelper-build-stamp dh_prep dh_auto_install - make -j3 install DESTDIR=/build/reproducible-path/tar-1.35\+dfsg/debian/tmp AM_UPDATE_INFO_DIR=no + make -j4 install DESTDIR=/build/reproducible-path/tar-1.35\+dfsg/debian/tmp AM_UPDATE_INFO_DIR=no make[1]: Entering directory '/build/reproducible-path/tar-1.35+dfsg' Making install in doc make[2]: Entering directory '/build/reproducible-path/tar-1.35+dfsg/doc' @@ -20804,45 +20840,45 @@ dh_perl dh_link dh_strip_nondeterminism - Normalized debian/tar/usr/share/locale/es/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ja/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/zh_CN/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/vi/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/it/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/cs/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/sl/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/sv/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ro/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/tr/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/da/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/sk/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ru/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/fr/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/zh_TW/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/ga/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/pt_BR/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/nb/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/eo/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/sr/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/et/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ka/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/pt/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ms/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/hu/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ca/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/it/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/sk/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/gl/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/uk/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/cs/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/nl/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ca/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/el/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/fi/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ms/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/de/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ky/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ko/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/eo/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/bg/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/zh_CN/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/pt_BR/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/eu/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/pl/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/sr/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/hu/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/es/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ru/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/da/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/fr/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/uk/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ky/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/id/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/ka/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/nb/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/zh_TW/LC_MESSAGES/tar.mo Normalized debian/tar/usr/share/locale/hr/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/pt/LC_MESSAGES/tar.mo - Normalized debian/tar/usr/share/locale/et/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/vi/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ko/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/pl/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/bg/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/de/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ja/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/ro/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/fi/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/sv/LC_MESSAGES/tar.mo + Normalized debian/tar/usr/share/locale/tr/LC_MESSAGES/tar.mo dh_compress dh_fixperms dh_missing @@ -20855,9 +20891,9 @@ dh_gencontrol dh_md5sums dh_builddeb +dpkg-deb: building package 'tar' in '../tar_1.35+dfsg-3_armhf.deb'. dpkg-deb: building package 'tar-dbgsym' in '../tar-dbgsym_1.35+dfsg-3_armhf.deb'. dpkg-deb: building package 'tar-scripts' in '../tar-scripts_1.35+dfsg-3_all.deb'. -dpkg-deb: building package 'tar' in '../tar_1.35+dfsg-3_armhf.deb'. dpkg-genbuildinfo --build=binary -O../tar_1.35+dfsg-3_armhf.buildinfo dpkg-genchanges --build=binary -O../tar_1.35+dfsg-3_armhf.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -20865,12 +20901,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/15279/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/28485 and its subdirectories -I: Current time: Sun Apr 21 02:18:00 -12 2024 -I: pbuilder-time-stamp: 1713709080 +I: removing directory /srv/workspace/pbuilder/15279 and its subdirectories +I: Current time: Mon Apr 22 04:24:51 +14 2024 +I: pbuilder-time-stamp: 1713709491