aboutsummaryrefslogtreecommitdiff
path: root/reproduce
diff options
context:
space:
mode:
authorBoud Roukema <boud@cosmo.torun.pl>2020-04-29 18:45:33 +0200
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2020-05-01 21:03:32 +0100
commit82666074e0c921e53c21b9e2c444e9a2d407d092 (patch)
treeca370b0da884b7f09f776226c10f701cc2411278 /reproduce
parentb953465d8d34a5e788a72c5676aec47a62da9f35 (diff)
Fixed OpenSSL deprecation bug on some OSs, causing problems in libgit2
Until this commit, the configure step would fail with an error when compiling libgit2 on a test system. The origin of this bug, on the OS that was tested, appears to be that in OpenSSL Version 1.1.1a, openssl/ec.h fails to include openssl/openconf.h. The bug is described in more detail at https://savannah.nongnu.org/bugs/index.php?58263 With this commit, this is fixed by manually inserting a necessary components. In particular, `sed` is used to insert a preprocessor instruction into `openssl/openconf.h`, defining `DEPRECATED_1_2_0(f)`, for an arbitrary section of code `f`, to include that code rather than exclude it or warn about it. This commit is valid provided that openssl remains at a version earlier than 1.2.0. Starting at version 1.2.0, deprecation warnings should be run normally. We have thus moved the version of OpenSSL in `versions.conf' to the section for programs that need to be manually checked for version updates with a note to remind the user when reaching that version. Other packages that use OpenSSL may benefit from this commit, not just libgit2.
Diffstat (limited to 'reproduce')
-rw-r--r--reproduce/software/config/versions.conf6
-rw-r--r--reproduce/software/make/basic.mk11
2 files changed, 16 insertions, 1 deletions
diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf
index 35ede19..d19f095 100644
--- a/reproduce/software/config/versions.conf
+++ b/reproduce/software/config/versions.conf
@@ -43,7 +43,6 @@ metastore-version = 1.1.2-23-fa9170b
mpc-version = 1.1.0
mpfr-version = 4.0.2
ncurses-version = 6.1
-openssl-version = 1.1.1a
patchelf-version = 0.10
perl-version = 5.30.0
pkgconfig-version = 0.29.2
@@ -216,3 +215,8 @@ wcslib-version = 6.4
# Minizip is installed with the same `zlib' tarball, and they have the same
# version.
minizip-version = $(zlib-version)
+
+# From version 1.2 OpenSSL may not need a manual addition, as described in
+# its comments and `https://savannah.nongnu.org/bugs/?58263'. If it doesn't
+# cause problems, put it back in the list of "Basic/low-level" tools.
+openssl-version = 1.1.1a \ No newline at end of file
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 779320f..0bec163 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -805,6 +805,14 @@ $(ibidir)/openssl: $(tdir)/cert.pem \
# environment variable.
#
# https://wiki.openssl.org/index.php/Compilation_and_Installation
+ #
+ # Bug 58263 (https://savannah.nongnu.org/bugs/?58263): In OpenSSL
+ # Version 1.1.1a (also checked in 1.1.1g), `openssl/ec.h' fails to
+ # include `openssl/openconf.h' on some OSs. The SED hack below
+ # inserts a hardwired element of `openssl/openconf.h' that is
+ # needed to include sections of code `f` that are deprecated in
+ # 1.2.0, but not yet in 1.1.1. This problem may be solved in
+ # version 1.2.x, so please check again in that bug.
if [ x$(on_mac_os) = xyes ]; then \
export KERNEL_BITS=64; \
copt="shared no-ssl2 no-ssl3 enable-ec_nistp_64_gcc_128"; \
@@ -817,6 +825,9 @@ $(ibidir)/openssl: $(tdir)/cert.pem \
--with-zlib-lib=$(ildir) \
--with-zlib-include=$(idir)/include, \
-j$(numthreads), , ./config ) \
+ && mv -v $(idir)/include/openssl/ec.h $(idir)/include/openssl/ec.h.orig \
+ && sed -e 's,\(# include .openssl/opensslconf\.h.\),\1\n#ifndef DEPRECATEDIN_1_2_0\n#define DEPRECATEDIN_1_2_0(f) f;\n#endif\n,' \
+ $(idir)/include/openssl/ec.h.orig > $(idir)/include/openssl/ec.h \
&& cp $(tdir)/cert.pem $(idir)/etc/ssl/cert.pem \
&& if [ $$? = 0 ]; then \
if [ x$(on_mac_os) = xyes ]; then \