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

Reply via email to