[openssl-dev] Upcoming build system change

Corinna Vinschen vinschen at redhat.com
Sat Jan 23 20:27:58 UTC 2016


Hi Richard,

On Jan 18 23:50, Richard Levitte wrote:
> FYI,
> 
> The branch has been updated, the Makfile template now has install
> targets as well, and I did the mods I could see would be necessary for
> Cygwin and Mingw.  I would appreciate it if someone could help me try
> those out.
> 
> Remember to configure with --unified.

I tested this on 64 bit Cygwin and stumbled over a minor and a major
problem.  First, there's a typo in crypto/bn/Makefile.in, using eight
spaces rather than a TAB:


diff -upr origsrc/openssl-1.1-rc1/crypto/bn/Makefile.in src/openssl-1.1-rc1/crypto/bn/Makefile.in
--- origsrc/openssl-1.1-rc1/crypto/bn/Makefile.in	2016-01-23 21:02:12.604753995 +0100
+++ src/openssl-1.1-rc1/crypto/bn/Makefile.in	2016-01-23 21:03:58.394966621 +0100
@@ -161,6 +161,6 @@ clean:
 
 # Different flavours of make disagree on where output goes
 .c.o:
-        $(CC) $(CFLAGS) -c $< -o $@
+	$(CC) $(CFLAGS) -c $< -o $@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.


Second, the build fails trying to compile crypto/cversion.c:

crypto/cversion.c:62:23: fatal error: buildinf.h: No such file or directory
 # include "buildinf.h"
                       ^

The reason is that buildinf.h can't be built because util/mkbuildinf.pl
requires /usr/local/bin/perl rather than /usr/bin/perl:

diff -upr origsrc/openssl-1.1-rc1/util/mkbuildinf.pl src/openssl-1.1-rc1/util/mkbuildinf.pl
--- origsrc/openssl-1.1-rc1/util/mkbuildinf.pl	2016-01-23 21:02:18.386710976 +0100
+++ src/openssl-1.1-rc1/util/mkbuildinf.pl	2016-01-23 21:15:19.705883094 +0100
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl
+#!/usr/bin/perl
 
 my ($cflags, $platform) = @ARGV;


The build eventually fails with the following error message, which I
don't quite understand.  The libraries should have been built before
trying to build the engines due to hard dependencies, but for some
reason they aren't.  Sorry, I have no fix for that :(

Last but not least, we have another problem with enginesdir.  To allow a
rolling release cycle, we have to support multiple versions of openssl
in parallel.  The problem here is that the enginesdir needs to be
versioned to allow per-openssl version engines.  The build scripts don't
allow for this.  Right now we're using a patch as the below one to tweak
the configury to allow specifying the engines dir during build time.
Would it hurt terribly to include something like the below patch?


+++ src/openssl-1.1-rc1/Configure	2016-01-23 21:03:43.604076740 +0100
@@ -221,6 +221,7 @@ $config{prefix}="";
 $config{openssldir}="";
 $config{processor}="";
 $config{libdir}="";
+$config{enginesdir}="";
 $config{install_prefix}= "$ENV{'INSTALL_PREFIX'}";
 $config{cross_compile_prefix}="";
 $config{fipslibdir}="/usr/local/ssl/fips-2.0/lib/";
@@ -633,6 +634,10 @@ foreach (@argvcopy)
 			{
 			$config{libdir}=$1;
 			}
+		elsif (/^--enginesdir=(.*)$/)
+			{
+			$config{enginesdir}=$1;
+			}
 		elsif (/^--openssldir=(.*)$/)
 			{
 			$config{openssldir}=$1;
@@ -893,7 +898,7 @@ if ($target{build_file} eq "Makefile"
 $target{multilib}="" if !-d "$config{prefix}/lib$target{multilib}";
 
 $config{libdir}="lib$target{multilib}" if $config{libdir} eq "";
-$config{enginesdir}=$config{prefix} . "/" . $config{libdir}  . "/engines";
+$config{enginesdir}=$config{prefix} . "/" . $config{libdir}  . "/engines" if $config{enginesdir} eq "";
 
 push @{$config{defines}},
     map { (my $x = $_) =~ s/^OPENSSL_NO_/OPENSSL_EXPERIMENTAL_/; $x }


Thanks,
Corinna
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://mta.openssl.org/pipermail/openssl-dev/attachments/20160123/d915cf11/attachment.sig>


More information about the openssl-dev mailing list