Re: [PATCH 2/2 v2] Makefile: quote $INSTLIBDIR when passing it to sed
- From
Daniel Jacques <dnj@google.com>
- Date
- Apr 24, 2018, 02:56 UTC
- Message-ID
- <CAD1RUU_W_Caa7pbM6Nvxe4yAYeXZB3vvRYEURvvmAgHzxM=sPQ@mail.gmail.com>
- In-Reply-To
- <20180424021834.GE25128@aiede.svl.corp.google.com>
Good catch, thanks for doing this! -Dan On Mon, Apr 23, 2018 at 10:18 PM Jonathan Nieder <jrnieder@gmail.com> wrote:
> f6a0ad4b (Makefile: generate Perl header from template file, > 2018-04-10) moved some code for generating the 'use lib' lines at the > top of perl scripts from the $(SCRIPT_PERL_GEN) rule to a separate > GIT-PERL-HEADER rule.
> This rule first populates INSTLIBDIR and then substitutes it into the > GIT-PERL-HEADER using sed:
> INSTLIBDIR=... something ... > sed -e 's=@@INSTLIBDIR@@='$$INSTLIBDIR'=g' $< > $@
> Because $INSTLIBDIR is not surrounded by double quotes, the shell > splits it at each space, causing errors if INSTLIBDIR contains a > space:
> sed: 1: "s=@@INSTLIBDIR@@=/usr/l ...": unescaped newline inside
substitute pattern
> Add back the missing double-quotes to make it work again.
> Improved-by: Junio C Hamano <gitster@pobox.com> > Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> > --- > Hi,
> Junio C Hamano wrote: > > Jonathan Nieder <jrnieder@gmail.com> writes:
> >> +++ b/Makefile > >> @@ -2108,7 +2108,7 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE)
GIT-PERL-DEFINES Makefile
> >> INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \ > >>
INSTLIBDIR="$$INSTLIBDIR$${INSTLIBDIR_EXTRA:+:$$INSTLIBDIR_EXTRA}" && \Show 6 quoted lines
> >> sed -e 's=@@PATHSEP@@=$(pathsep)=g' \ > >> - -e 's=@@INSTLIBDIR@@='$$INSTLIBDIR'=g' \ > >> + -e 's=@@INSTLIBDIR@@='"$$INSTLIBDIR"'=g' \ > > > > Good find. FWIW, I'd find it a lot easier to read if the whole > > thing were enclosed inside a single pair of dq.
> Thanks. I agree, so here's an updated version doing that.
> Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)
Show 5 quoted lines
> diff --git a/Makefile b/Makefile > index 2327ccb906..5e25441861 100644 > --- a/Makefile > +++ b/Makefile > @@ -2116,7 +2116,7 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE)
GIT-PERL-DEFINES Makefile
> INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \
INSTLIBDIR="$$INSTLIBDIR$${INSTLIBDIR_EXTRA:+:$$INSTLIBDIR_EXTRA}" && \Show 8 quoted lines
> sed -e 's=@@PATHSEP@@=$(pathsep)=g' \ > - -e 's=@@INSTLIBDIR@@='$$INSTLIBDIR'=g' \ > + -e "s=@@INSTLIBDIR@@=$$INSTLIBDIR=g" \ > -e 's=@@PERLLIBDIR@@='$(perllibdir_SQ)'=g' \ > -e 's=@@PERLLIBDIR_REL@@=$(perllibdir_relative_SQ)=g' \ > -e 's=@@GITEXECDIR_REL@@=$(gitexecdir_relative_SQ)=g' \ > -- > 2.17.0.441.gb46fe60e1d