[GRASS-dev] Indented comments in Makefile not compatible with make-3.82

Daniel Macks dmacks at netspace.org
Thu May 31 10:31:23 PDT 2012


I have a build failure on OS X:

cp ../../include/Make/Dir.make /sw/build.build/grass64-x11-6.4.1-3/grass-6.4.1/dist.i386-apple-darwin10.8.0/modbuild/include/Make/
cp ../../include/Make/Doxygen.make /sw/build.build/grass64-x11-6.4.1-3/grass-6.4.1/dist.i386-apple-darwin10.8.0/modbuild/include/Make/
sed -E -e 's, at GRASS_LIB_PREFIX@,lib,g' 
-e 's, at GRASS_LIB_SUFFIX@,.dylib,g' 
-e 's, at GRASS_LIBRARY_TYPE@,shlib,g' 
-e 's, at GRASS_VERSION_MAJOR@,6,g' 
-e 's, at GRASS_VERSION_MINOR@,4,g' 
-e 's, at GRASS_VERSION_RELEASE@,1,g' 
-e 's, at GRASS_VERSION_DATE@,2011,g' 
-e 's#^ARCH_INC[[:space:]].*#& -I$(GISBASE)/include#g' 
-e 's#^ARCH_LIBPATH.*#& -L$(GISBASE)/lib#g' 
-e 's#^GISBASE.*#GISBASE = $(GRASS_APP)/Contents/MacOS#g' 
./../include/Make/Grass.make.in > /sw/build.build/grass64-x11-6.4.1-3/grass-6.4.1/dist.i386-apple-darwin10.8.0/modbuild/include/Make/Grass.make
/bin/sh: -c: line 4: unexpected EOF while looking for matching `''
/bin/sh: -c: line 5: syntax error: unexpected end of file
make[2]: *** [modbuild] Error 2
make[2]: Leaving directory `/sw/build.build/grass64-x11-6.4.1-3/grass-6.4.1/macosx/modbuild'

My "make" command is the latest upstream version of that program (3.82) supplied by fink. The problem goes away if I downgrade it to fink's make-3.81 or use apple's (3.81 from OS X 10.6) instead. The problem appears to be just after the above "sed" command, where macosx/modbuild/Makefile has:

    @# until I figure out how to get sed to replace with multiple lines in a
    @# makefile, GRASS_APP required for modbuild, ie no default to /Applications
    @#-e 's#^GISBASE.*#ifdef GRASS_APP\
    @#GISBASE = $$(GRASS_APP)/Contents/MacOS\
    @#else\
    @#GISBASE = $(INST_DIR_MACOSX)\
    @#endif#g'
    @# html.make needs a little change

Why is it even looking at the syntax of a comment? The commented-out section is confusing because it's a hybrid of makefile-recipe quiet tags (@), makefile commenting (#), and makefile and shell line-continuations (). The new make is known to be stricter about several types of makefile syntax, so maybe you've triggered one of those? The use of the apparently non-standard "@#" in general does not seem to be the problem, or else the modbuild recipe would have crashed even earlier, so it must be related to the multilining in them. Changing the commented-out sed chunk to use standard commenting (non-indented leading #) works for me:

    @# until I figure out how to get sed to replace with multiple lines in a
    @# makefile, GRASS_APP required for modbuild, ie no default to /Applications
#    -e 's#^GISBASE.*#ifdef GRASS_APP\
#    GISBASE = $$(GRASS_APP)/Contents/MacOS\
#    else\
#    GISBASE = $(INST_DIR_MACOSX)\
#    endif#g'
    @# html.make needs a little change

dan

 --
Daniel Macks
dmacks at netspace.org


More information about the grass-dev mailing list