Guys, you're on the wrong track. The shell checks the syntax of the whole line (that is, all those lines concatenated together) before any execution, so if $(ENGINES) is empty, for 'for e in $(ENGINES)' part will have an empty list no matter what, since $(ENGINES) is expanded by make, before the shell gets any control. The best way I know to handle this issue is with a dummy. Might not be elegant, but it's quick and easy to understand.
See attached patch Vid Mon, 21 Mar 2016 kl. 00.11.46, skrev rainer.j...@kippdata.de: > I'm sorry and thanks for your patience: there's a bug in the patch: > Replace the $$(ENGINE) in the line > > @set -e; if [ "X$$(ENGINES)" != "X" ]; then \ > > by $(ENGINE) (no "$$" instead just a single "$"). > > The new line is > > @set -e; if [ "X$(ENGINES)" != "X" ]; then \ > > (plus a tab and some additional whitespace in front). > > The wrong "X$$(ENGINES)" is reduced by make into "X$(ENGINES)" which > doesn't make sense in shell. The "X$$ENGINES" in your suggested echo > line is reduced to "X$ENGINES" and since there's no shell variable > named > ENGINES set, this is reduced by the shell to "X". But I want > "X$(ENGINES)" in my patch: make reduces this to "X", because the make > variable ENGINES has an empty value and that's what we want to test in > the new "if". > > Regards, > > Rainer > > Am 21.03.2016 um 00:05 schrieb Kiyoshi KANAZAWA via RT: > > Hello, > > > > Tried your openssl-install-engines.patch, but have the same result. > > % make install_engines > > *** Installing engines > > /bin/sh: syntax error at line 2: `;' unexpected > > Makefile:251: recipe for target 'install_engines' failed > > make: *** [install_engines] Error 2 > > > > > > I think it should work, and added, for double check, > > @echo "XENGINES="X$$ENGINES > > after the line > > > > @echo "*** Installing engines". > > % make install_engines > > *** Installing engines > > XENGINES=X > > /bin/sh: syntax error at line 2: `;' unexpected > > Makefile:251: recipe for target 'install_engines' failed > > make: *** [install_engines] Error 2 > > > > > > > > Regards, > > > > --- Kiyoshi <yoi_no_myou...@yahoo.co.jp> > > > > > > > > ----- Original Message ----- > >> From: Rainer Jung via RT <r...@openssl.org> > >> To: yoi_no_myou...@yahoo.co.jp > >> Cc: openssl-dev@openssl.org > >> Date: 2016/3/21, Mon 01:16 > >> Subject: Re: [openssl-dev] [openssl.org #4459] openssl-1.1.0-pre4: > >> make install fals on solaris64-x86_64-gcc. > >> > >> Am 20.03.2016 um 16:46 schrieb Kiyoshi KANAZAWA via RT: > >>> Hello, > >>> > >>> Yes, ENGINES in the top level Makefile is empty. > >>> > >>> 22: LIBS=libcrypto.a libssl.a > >>> 23: SHLIBS= > >>> 24: ENGINES= > >>> 25: PROGRAMS=apps/openssl > >> > >> OK, that explains the error, because the install_engines target then > >> contains a shell snippet > >> > >> for e in ; do > >> > >> ($(ENGINES) is empty, but since it is not used as a shell variable > >> but > >> instead as a make variable, that is the resulting for loop). That > >> results in > >> > >> /bin/sh: syntax error at line 1: `;' unexpected > >> > >> at least for /bin/sh on Solaris. > >> > >> So we need to add special handling in $(ENGINES) is empty. > >> > >> You could try the attached patch. > >> > >> Regards, > >> > >> Rainer > >> > >> -- > >> Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4459 > >> Please log in as guest with password guest if prompted -- Richard Levitte levi...@openssl.org -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4459 Please log in as guest with password guest if prompted
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 4dced5d..1f85306 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -391,7 +391,8 @@ install_engines: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/ @echo "*** Installing engines" - @set -e; for e in $(ENGINES); do \ + @set -e; for e in dummy $(ENGINES); do \ + if [ "$$e" = "dummy" ]; then continue; fi \ fn=`basename $$e`; \ if [ "$$fn" = '{- dso("ossltest") -}' ]; then \ continue; \ @@ -405,7 +406,8 @@ install_engines: uninstall_engines: @echo "*** Uninstalling engines" - @set -e; for e in $(ENGINES); do \ + @set -e; for e in dummy $(ENGINES); do \ + if [ "$$e" = "dummy" ]; then continue; fi \ fn=`basename $$e`; \ if [ "$$fn" = '{- dso("ossltest") -}' ]; then \ continue; \ @@ -421,7 +423,8 @@ install_runtime: @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc @echo "*** Installing runtime files" : {- output_off() unless windowsdll(); "" -}; - @set -e; for s in $(SHLIBS); do \ + @set -e; for s in dummy $(SHLIBS); do \ + if [ "$$s" = "dummy" ]; then continue; fi \ fn=`basename $$s`; \ echo "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ @@ -430,7 +433,8 @@ install_runtime: $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done : {- output_on() unless windowsdll(); "" -}; - @set -e; for x in $(PROGRAMS); do \ + @set -e; for x in dummy $(PROGRAMS); do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ @@ -438,7 +442,8 @@ install_runtime: mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done - @set -e; for x in $(BIN_SCRIPTS); do \ + @set -e; for x in dummy $(BIN_SCRIPTS); do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ @@ -446,7 +451,8 @@ install_runtime: mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done - @set -e; for x in $(MISC_SCRIPTS); do \ + @set -e; for x in dummy $(MISC_SCRIPTS); do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ @@ -461,26 +467,30 @@ install_runtime: uninstall_runtime: @echo "*** Uninstalling runtime files" - @set -e; for x in $(PROGRAMS); \ + @set -e; for x in dummy $(PROGRAMS); \ do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done; - @set -e; for x in $(BIN_SCRIPTS); \ + @set -e; for x in dummy $(BIN_SCRIPTS); \ do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done - @set -e; for x in $(MISC_SCRIPTS); \ + @set -e; for x in dummy $(MISC_SCRIPTS); \ do \ + if [ "$$x" = "dummy" ]; then continue; fi \ fn=`basename $$x`; \ echo "$(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ $(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \ done : {- output_off() unless windowsdll(); "" -}; - @set -e; for s in $(SHLIBS); do \ + @set -e; for s in dummy $(SHLIBS); do \ + if [ "$$s" = "dummy" ]; then continue; fi \ fn=`basename $$s`; \ echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
-- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev