Re: [PATCH 2/2 v2] Makefile: quote $INSTLIBDIR when passing it to sed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Good catch, thanks for doing this!
-Dan
On Mon, Apr 23, 2018 at 10:18 PM Jonathan Nieder <jrnieder@xxxxxxxxx> 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@xxxxxxxxx>
> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
> ---
> Hi,

> Junio C Hamano wrote:
> > Jonathan Nieder <jrnieder@xxxxxxxxx> 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}" && \
> >>      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(-)

> 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}" && \
>          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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux