Subject: Re: [PATCH v4 1/4] Add tar extract install options override in installation processing.

From: Junio C Hamano <[email-masked]>
Date: Wed, 24 Jan 2018 12:33:09 -0800

[email-masked] writes:

> From: "Randall S. Becker" <[email-masked]>
> Subject: Re: [PATCH v4 1/4] Add tar extract install options override in installation processing.

We typically start the subject with some short token to help readers
of "git shortlog --no-merges" identify what area is being touched,
e.g. something like

Subject: [PATCH 1/4] Makefile: allow customizing tar extract options for installation

> Introduced TAR_EXTRACT_OPTIONS as a configuration option to change
> the options of tar processing during extract. The default value is "o"
> which synthesizes xof, by default.

And then we order the codebase "to be like so" (or, give an order to
a patch monkey "to make the resulting code like so").
i.e. something like:

    Introduce TAR_EXTRACT_OPTIONS to allow customizing the tar
    options used when installing.  The default value is "o", which ...

What is missing from the log message is the most important thing,
though.  Everything you wrote (i.e. what build-time knob is being
added, what is tweaked and what the default is) we can read from the
patch text itself, but readers will be left wondering why anybody
would want to change "o" and change it to what else under what
circumstances to achieve what.  I am guessing something like this
might be the reason behind this change

    This allows an implementations of "tar" that lacks the 'o'
    (--no-same-owner) extract option to be used (even though the
    resulting installed versions will keep ownership of whoever
    happened to have built them, instead of being owned by 'root')

but please do not make readers guess.

Having said all that, I wonder if this "go to po/build/locale, tar
everything up and then extract it elsewhere" is truly necessary.
IOW, why isn't it sufficient to do this instead, for example?

    umask 022 && cp -r po/build/locale/. '$(DESTDIR_SQ)$(localedir_SQ)'

>
> Signed-off-by: Randall S. Becker <[email-masked]>
> ---
>  Makefile | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 1a9b23b67..78ee431b7 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -429,6 +429,10 @@ all::
>  # running the test scripts (e.g., bash has better support for "set -x"
>  # tracing).
>  #
> +# Define TAR_EXTRACT_OPTIONS if you want to change the default behaviour
> +# from xvf to something else during installation. The option only includes
> +# "o" as xf are required.
> +#
>  # When cross-compiling, define HOST_CPU as the canonical name of the CPU on
>  # which the built Git will run (for instance "x86_64").
>  
> @@ -452,6 +456,7 @@ LDFLAGS =
>  ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS)
>  ALL_LDFLAGS = $(LDFLAGS)
>  STRIP ?= strip
> +TAR_EXTRACT_OPTIONS = o
>  
>  # Create as necessary, replace existing, make ranlib unneeded.
>  ARFLAGS = rcs
> @@ -2569,7 +2574,7 @@ install: all
>  ifndef NO_GETTEXT
>  	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(localedir_SQ)'
>  	(cd po/build/locale && $(TAR) cf - .) | \
> -	(cd '$(DESTDIR_SQ)$(localedir_SQ)' && umask 022 && $(TAR) xof -)
> +	(cd '$(DESTDIR_SQ)$(localedir_SQ)' && umask 022 && $(TAR) x$(TAR_EXTRACT_OPTIONS)f -)
>  endif
>  ifndef NO_PERL
>  	$(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install