threads / patch / 55755

patcht: use configured TAR instead of tar

Subject: [PATCH] t: use configured TAR instead of tar

## tl;dr

4 messages between May 22, 2021 and May 22, 2021. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Đoàn Trần Công Danh· May 22, 2021, 06:28 UTC · lore

Despite that tar is available everywhere, it's not required by POSIX. And, we're allow users to specify which tar they want to use in Makefile knobs, and we prefer GNU tar in autotools script.

In our testsuite, 7 out of 9 tar-required-tests use "$TAR", the other two use "tar".

Let's change the remaining two tests to "$TAR".
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
---
 I found this when trying to remove tar from a chroot that used to test Git,
 such chroot has bsdtar, so I tried to set "TAR = bsdtar" in config.mak
 t/t3513-revert-submodule.sh | 4 ++--
 t/t6041-bisect-submodule.sh | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
Show changes to 2 files +4 −4

t/t3513-revert-submodule.sh, t/t6041-bisect-submodule.sh

diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh
index 74cd96e582..8bfe3ed246 100755
--- a/t/t3513-revert-submodule.sh
+++ b/t/t3513-revert-submodule.sh
@@ -14,7 +14,7 @@ test_description='revert can handle submodules'
 git_revert () {
 	git status -su >expect &&
 	ls -1pR * >>expect &&
-	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
+	"$TAR" cf "$TRASH_DIRECTORY/tmp.tar" * &&
 	may_only_be_test_must_fail "$2" &&
 	$2 git checkout "$1" &&
 	if test -n "$2"
@@ -23,7 +23,7 @@ git_revert () {
 	fi &&
 	git revert HEAD &&
 	rm -rf * &&
-	tar xf "$TRASH_DIRECTORY/tmp.tar" &&
+	"$TAR" xf "$TRASH_DIRECTORY/tmp.tar" &&
 	git status -su >actual &&
 	ls -1pR * >>actual &&
 	test_cmp expect actual &&
diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh
index df1eff0fb8..82013fc903 100755
--- a/t/t6041-bisect-submodule.sh
+++ b/t/t6041-bisect-submodule.sh
@@ -8,7 +8,7 @@ test_description='bisect can handle submodules'
 git_bisect () {
 	git status -su >expect &&
 	ls -1pR * >>expect &&
-	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
+	"$TAR" cf "$TRASH_DIRECTORY/tmp.tar" * &&
 	GOOD=$(git rev-parse --verify HEAD) &&
 	may_only_be_test_must_fail "$2" &&
 	$2 git checkout "$1" &&
@@ -25,7 +25,7 @@ git_bisect () {
 	git bisect start &&
 	git bisect good $GOOD &&
 	rm -rf * &&
-	tar xf "$TRASH_DIRECTORY/tmp.tar" &&
+	"$TAR" xf "$TRASH_DIRECTORY/tmp.tar" &&
 	git status -su >actual &&
 	ls -1pR * >>actual &&
 	test_cmp expect actual &&
-- 
2.32.0.rc0.32.g107691cb07
Junio C Hamano· May 22, 2021, 06:46 UTC · re: Đoàn Trần Công Danh · lore

Re: [PATCH] t: use configured TAR instead of tar

Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:
> Despite that tar is available everywhere, it's not required by POSIX.
> And, we're allow users to specify which tar they want to use in Makefile
s/we're/we/;
> knobs, and we prefer GNU tar in autotools script.

The last part I didn't know about---it is sad if autotools require use of gtar (but since use of autoconf and autotools is not required to build Git, I do not deeply care ;-)).

> In our testsuite, 7 out of 9 tar-required-tests use "$TAR", the other
> two use "tar".
>
> Let's change the remaining two tests to "$TAR".
Nice.
brian m. carlson· May 22, 2021, 18:58 UTC · re: Junio C Hamano · lore

Re: [PATCH] t: use configured TAR instead of tar

On 2021-05-22 at 06:46:45, Junio C Hamano wrote:
Show 12 quoted lines
> Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:
> 
> > Despite that tar is available everywhere, it's not required by POSIX.
> > And, we're allow users to specify which tar they want to use in Makefile
> 
> s/we're/we/;
> 
> > knobs, and we prefer GNU tar in autotools script.
> 
> The last part I didn't know about---it is sad if autotools require
> use of gtar (but since use of autoconf and autotools is not required
> to build Git, I do not deeply care ;-)).

I don't believe we do require it. macOS ships bsdtar (that is, the one from libarchive) and to the best of my knowledge, everything works fine there.

I suspect the reason that gtar is preferred is because on some systems, the tar(1) command is relatively incapable and doesn't support things like POSIX tar archives or pax extensions.

-- 
brian m. carlson (he/him or they/them)
Houston, Texas, US
Đoàn Trần Công Danh· May 22, 2021, 07:10 UTC · re: Đoàn Trần Công Danh · lore

[PATCH v2] t: use configured TAR instead of tar

Despite that tar is available everywhere, it's not required by POSIX.

In our build system, users are allowed to specify which tar to be used in Makefile knobs. Furthermore, GNU tar (gtar) is prefered when autotools is being used.

In our testsuite, 7 out of 9 tar-required-tests use "$TAR", the other two use "tar".

Let's change the remaining two tests to "$TAR".
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
---
Show 5 quoted lines
>> knobs, and we prefer GNU tar in autotools script.
>
> The last part I didn't know about---it is sad if autotools require
> use of gtar (but since use of autoconf and autotools is not required
> to build Git, I do not deeply care ;-)).
I do not care, either. Just want to add more data points for this change.

I've made a grammar error with v1, and I think two "and" in a sentence is not good enough. Let's take this version instead.

Range-diff against v1:
1:  3a8ba467fc ! 1:  724a1a7a77 t: use configured TAR instead of tar
    @@ Commit message
         t: use configured TAR instead of tar
     
         Despite that tar is available everywhere, it's not required by POSIX.
    -    And, we're allow users to specify which tar they want to use in Makefile
    -    knobs, and we prefer GNU tar in autotools script.
    +
    +    In our build system, users are allowed to specify which tar to be used
    +    in Makefile knobs. Furthermore, GNU tar (gtar) is prefered when autotools
    +    is being used.
     
         In our testsuite, 7 out of 9 tar-required-tests use "$TAR", the other
         two use "tar".
 t/t3513-revert-submodule.sh | 4 ++--
 t/t6041-bisect-submodule.sh | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
Show changes to 2 files +4 −4

t/t3513-revert-submodule.sh, t/t6041-bisect-submodule.sh

diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh
index 74cd96e582..8bfe3ed246 100755
--- a/t/t3513-revert-submodule.sh
+++ b/t/t3513-revert-submodule.sh
@@ -14,7 +14,7 @@ test_description='revert can handle submodules'
 git_revert () {
 	git status -su >expect &&
 	ls -1pR * >>expect &&
-	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
+	"$TAR" cf "$TRASH_DIRECTORY/tmp.tar" * &&
 	may_only_be_test_must_fail "$2" &&
 	$2 git checkout "$1" &&
 	if test -n "$2"
@@ -23,7 +23,7 @@ git_revert () {
 	fi &&
 	git revert HEAD &&
 	rm -rf * &&
-	tar xf "$TRASH_DIRECTORY/tmp.tar" &&
+	"$TAR" xf "$TRASH_DIRECTORY/tmp.tar" &&
 	git status -su >actual &&
 	ls -1pR * >>actual &&
 	test_cmp expect actual &&
diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh
index df1eff0fb8..82013fc903 100755
--- a/t/t6041-bisect-submodule.sh
+++ b/t/t6041-bisect-submodule.sh
@@ -8,7 +8,7 @@ test_description='bisect can handle submodules'
 git_bisect () {
 	git status -su >expect &&
 	ls -1pR * >>expect &&
-	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
+	"$TAR" cf "$TRASH_DIRECTORY/tmp.tar" * &&
 	GOOD=$(git rev-parse --verify HEAD) &&
 	may_only_be_test_must_fail "$2" &&
 	$2 git checkout "$1" &&
@@ -25,7 +25,7 @@ git_bisect () {
 	git bisect start &&
 	git bisect good $GOOD &&
 	rm -rf * &&
-	tar xf "$TRASH_DIRECTORY/tmp.tar" &&
+	"$TAR" xf "$TRASH_DIRECTORY/tmp.tar" &&
 	git status -su >actual &&
 	ls -1pR * >>actual &&
 	test_cmp expect actual &&
-- 
2.32.0.rc0.32.g107691cb07

← back to recent threads