Message ID | 20221208162051.29509-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | scripts/archive-source: Use more portable argument with tar command | expand |
On Thu, 8 Dec 2022 at 16:21, Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > > When using the archive-source.sh script on Darwin we get: > > tar: Option --concatenate is not supported > Usage: > List: tar -tf <archive-filename> > Extract: tar -xf <archive-filename> > Create: tar -cf <archive-filename> [filenames...] > Help: tar --help > > Replace the long argument added by commit 8fc76176f6 ("scripts: use > git-archive in archive-source") by their short form to keep this > script functional. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > scripts/archive-source.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh > index 23e042dacd..6a710a212e 100755 > --- a/scripts/archive-source.sh > +++ b/scripts/archive-source.sh > @@ -67,7 +67,7 @@ for sm in $submodules; do > esac > (cd $sm; git archive --format tar --prefix "$sm/" $(tree_ish)) > "$sub_file" > test $? -ne 0 && error "failed to archive submodule $sm ($smhash)" > - tar --concatenate --file "$tar_file" "$sub_file" > + tar -c -f "$tar_file" "$sub_file" '-c' is not the short-form option of '--concatenate': that would be '-A'. The problem is not long vs short options, but that BSD-style tar does not support the --concatenate functionality at all. > test $? -ne 0 && error "failed append submodule $sm to $tar_file" > done > exit 0 thanks -- PMM
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > When using the archive-source.sh script on Darwin we get: > > tar: Option --concatenate is not supported > Usage: > List: tar -tf <archive-filename> > Extract: tar -xf <archive-filename> > Create: tar -cf <archive-filename> [filenames...] > Help: tar --help > > Replace the long argument added by commit 8fc76176f6 ("scripts: use > git-archive in archive-source") by their short form to keep this > script functional. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > scripts/archive-source.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh > index 23e042dacd..6a710a212e 100755 > --- a/scripts/archive-source.sh > +++ b/scripts/archive-source.sh > @@ -67,7 +67,7 @@ for sm in $submodules; do > esac > (cd $sm; git archive --format tar --prefix "$sm/" $(tree_ish)) > "$sub_file" > test $? -ne 0 && error "failed to archive submodule $sm ($smhash)" > - tar --concatenate --file "$tar_file" "$sub_file" > + tar -c -f "$tar_file" "$sub_file" I'm not sure that is correct. The gnu shortform for --concatenate is -A, -c is specifically create so I suspect you end up re-creating the tarball rather than adding to it. > test $? -ne 0 && error "failed append submodule $sm to $tar_file" > done > exit 0
On Thu, Dec 08, 2022 at 05:20:51PM +0100, Philippe Mathieu-Daudé wrote: > When using the archive-source.sh script on Darwin we get: > > tar: Option --concatenate is not supported > Usage: > List: tar -tf <archive-filename> > Extract: tar -xf <archive-filename> > Create: tar -cf <archive-filename> [filenames...] > Help: tar --help > > Replace the long argument added by commit 8fc76176f6 ("scripts: use > git-archive in archive-source") by their short form to keep this > script functional. Or install a better tar implementation from brew ? https://formulae.brew.sh/formula/gnu-tar With regards, Daniel
On 8/12/22 18:15, Daniel P. Berrangé wrote: > On Thu, Dec 08, 2022 at 05:20:51PM +0100, Philippe Mathieu-Daudé wrote: >> When using the archive-source.sh script on Darwin we get: >> >> tar: Option --concatenate is not supported >> Usage: >> List: tar -tf <archive-filename> >> Extract: tar -xf <archive-filename> >> Create: tar -cf <archive-filename> [filenames...] >> Help: tar --help >> >> Replace the long argument added by commit 8fc76176f6 ("scripts: use >> git-archive in archive-source") by their short form to keep this >> script functional. > > Or install a better tar implementation from brew ? > > https://formulae.brew.sh/formula/gnu-tar Good idea, this works for me: -- >8 -- diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 23e042dacd..150bdf5536 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -20,2 +20,3 @@ fi +tar=$(command -v gtar || command -v tar) tar_file=$(realpath "$1") @@ -69,3 +70,3 @@ for sm in $submodules; do test $? -ne 0 && error "failed to archive submodule $sm ($smhash)" - tar --concatenate --file "$tar_file" "$sub_file" + $tar --concatenate --file "$tar_file" "$sub_file" test $? -ne 0 && error "failed append submodule $sm to $tar_file" ---
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 23e042dacd..6a710a212e 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -67,7 +67,7 @@ for sm in $submodules; do esac (cd $sm; git archive --format tar --prefix "$sm/" $(tree_ish)) > "$sub_file" test $? -ne 0 && error "failed to archive submodule $sm ($smhash)" - tar --concatenate --file "$tar_file" "$sub_file" + tar -c -f "$tar_file" "$sub_file" test $? -ne 0 && error "failed append submodule $sm to $tar_file" done exit 0
When using the archive-source.sh script on Darwin we get: tar: Option --concatenate is not supported Usage: List: tar -tf <archive-filename> Extract: tar -xf <archive-filename> Create: tar -cf <archive-filename> [filenames...] Help: tar --help Replace the long argument added by commit 8fc76176f6 ("scripts: use git-archive in archive-source") by their short form to keep this script functional. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- scripts/archive-source.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)