GNU tar 1.31's regression test 41, numeric.at, is broken on filesystems with BSD semantics (GID inherited from directory) if run in a directory whose GID does not match the primary GID of the executing user.
I already reported this problem for 1.29 and 1.30. A fix had been suggested for 1.29, but was never committed. https://lists.gnu.org/archive/html/bug-tar/2016-06/msg00001.html Testsuite.log from FreeBSD 12 attached. (User naddy:naddy, directory naddy:wheel.) -- Christian "naddy" Weisgerber na...@mips.inka.de
# -*- compilation -*- 41. numeric.at:18: testing --numeric-owner basic tests ... ./numeric.at:29: 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 MYUID=$(id -u) || exit 77 MYGID=$(id -g) || exit 77 MYUSR=$(id -un) || exit 77 MYGRP=$(id -gn) || exit 77 decho --create tar --create -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' tar --create -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' decho --list tar --list -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' tar --list -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' decho --diff tar --diff -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' tar --diff -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' decho --extract tar --extract -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print "OK"; next} {print}' tar --extract -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}' ) --- - 2019-01-11 16:33:18.634802000 +0100 +++ /usr/ports/archivers/gtar/work/tar-1.31/tests/testsuite.dir/at-groups/41/stdout 2019-01-11 16:33:18.633907000 +0100 @@ -1,21 +1,21 @@ --create -OK -OK -OK -OK +drwxr-xr-x 1000/0 0 2019-01-11 16:33 dir/ +-rw-r--r-- 1000/0 0 2019-01-11 16:33 dir/file +drwxr-xr-x naddy/wheel 0 2019-01-11 16:33 dir/ +-rw-r--r-- naddy/wheel 0 2019-01-11 16:33 dir/file --list -OK -OK -OK -OK +drwxr-xr-x 1000/0 0 2019-01-11 16:33 dir/ +-rw-r--r-- 1000/0 0 2019-01-11 16:33 dir/file +drwxr-xr-x naddy/wheel 0 2019-01-11 16:33 dir/ +-rw-r--r-- naddy/wheel 0 2019-01-11 16:33 dir/file --diff -OK -OK -OK -OK +drwxr-xr-x 1000/0 0 2019-01-11 16:33 dir/ +-rw-r--r-- 1000/0 0 2019-01-11 16:33 dir/file +drwxr-xr-x naddy/wheel 0 2019-01-11 16:33 dir/ +-rw-r--r-- naddy/wheel 0 2019-01-11 16:33 dir/file --extract -OK -OK -OK -OK +drwxr-xr-x 1000/0 0 2019-01-11 16:33 dir/ +-rw-r--r-- 1000/0 0 2019-01-11 16:33 dir/file +drwxr-xr-x naddy/wheel 0 2019-01-11 16:33 dir/ +-rw-r--r-- naddy/wheel 0 2019-01-11 16:33 dir/file 41. numeric.at:18: 41. --numeric-owner basic tests (numeric.at:18): FAILED (numeric.at:29)