openssl: disable ct feature in static mode (#173288)

For static binaries to be relocatable, they can't depend on data files.

Co-authored-by: zimbatm <zimbatm@zimbatm.com>
This commit is contained in:
Jörg Thalheim 2022-05-17 10:42:46 +01:00 committed by GitHub
parent 0d3a0ff97a
commit cc60c24909
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,6 +7,7 @@
# This will cause c_rehash to refer to perl via the environment, but otherwise
# will produce a perfectly functional openssl binary and library.
, withPerl ? stdenv.hostPlatform == stdenv.buildPlatform
, removeReferencesTo
}:
# Note: this package is used for bootstrapping fetchurl, and thus
@ -112,7 +113,11 @@ let
# OpenSSL needs a specific `no-shared` configure flag.
# See https://wiki.openssl.org/index.php/Compilation_and_Installation#Configure_Options
# for a comprehensive list of configuration options.
++ lib.optional (lib.versionAtLeast version "1.1.0" && static) "no-shared";
++ lib.optional (lib.versionAtLeast version "1.1.0" && static) "no-shared"
# This introduces a reference to the CTLOG_FILE which is undesired when
# trying to build binaries statically.
++ lib.optional static "no-ct"
;
makeFlags = [
"MANDIR=$(man)/share/man"
@ -126,13 +131,16 @@ let
enableParallelBuilding = true;
postInstall =
lib.optionalString (!static) ''
(if static then ''
# OPENSSLDIR has a reference to self
${removeReferencesTo}/bin/remove-references-to -t $out $out/lib/*.a
'' else ''
# If we're building dynamic libraries, then don't install static
# libraries.
if [ -n "$(echo $out/lib/*.so $out/lib/*.dylib $out/lib/*.dll)" ]; then
rm "$out/lib/"*.a
fi
'' + lib.optionalString (!stdenv.hostPlatform.isWindows)
'') + lib.optionalString (!stdenv.hostPlatform.isWindows)
# Fix bin/c_rehash's perl interpreter line
#
# - openssl 1_0_2: embeds a reference to buildPackages.perl