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 <gits...@pobox.com>
Signed-off-by: Jonathan Nieder <jrnie...@gmail.com>
---
Hi,

Junio C Hamano wrote:
> Jonathan Nieder <jrnie...@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}" && \
>>      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

Reply via email to