openssl: cross compilation without host perl
The perl reference is in the interpreter line for c_rehash, so fix that while we're here.
This commit is contained in:
parent
efd28cc9df
commit
ef24a2815e
@ -3,8 +3,17 @@
|
|||||||
, enableSSL2 ? false
|
, enableSSL2 ? false
|
||||||
, enableSSL3 ? false
|
, enableSSL3 ? false
|
||||||
, static ? stdenv.hostPlatform.isStatic
|
, static ? stdenv.hostPlatform.isStatic
|
||||||
|
# Used to avoid cross compiling perl, for example, in darwin bootstrap tools.
|
||||||
|
# This will cause c_rehash to refer to perl via the environment, but otherwise
|
||||||
|
# will produce a perfectly functional openssl binary and library.
|
||||||
|
, withPerl ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert (
|
||||||
|
lib.assertMsg (!withPerl -> stdenv.hostPlatform != stdenv.buildPlatform)
|
||||||
|
"withPerl should not be disabled unless cross compiling"
|
||||||
|
);
|
||||||
|
|
||||||
# Note: this package is used for bootstrapping fetchurl, and thus
|
# Note: this package is used for bootstrapping fetchurl, and thus
|
||||||
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
||||||
# cgit) that are needed here should be included directly in Nixpkgs as
|
# cgit) that are needed here should be included directly in Nixpkgs as
|
||||||
@ -46,7 +55,10 @@ let
|
|||||||
separateDebugInfo = !(stdenv.hostPlatform.useLLVM or false) && stdenv.cc.isGNU;
|
separateDebugInfo = !(stdenv.hostPlatform.useLLVM or false) && stdenv.cc.isGNU;
|
||||||
|
|
||||||
nativeBuildInputs = [ perl ];
|
nativeBuildInputs = [ perl ];
|
||||||
buildInputs = lib.optional withCryptodev cryptodev;
|
buildInputs = lib.optional withCryptodev cryptodev
|
||||||
|
# perl is included to allow the interpreter path fixup hook to set the
|
||||||
|
# correct interpreter in c_rehash.
|
||||||
|
++ lib.optional withPerl perl;
|
||||||
|
|
||||||
# TODO(@Ericson2314): Improve with mass rebuild
|
# TODO(@Ericson2314): Improve with mass rebuild
|
||||||
configurePlatforms = [];
|
configurePlatforms = [];
|
||||||
@ -108,12 +120,20 @@ let
|
|||||||
rm "$out/lib/"*.a
|
rm "$out/lib/"*.a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
'' +
|
|
||||||
''
|
|
||||||
mkdir -p $bin
|
mkdir -p $bin
|
||||||
'' + 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
|
||||||
|
# - openssl 1_1: emits "#!/usr/bin/env perl"
|
||||||
|
#
|
||||||
|
# In the case of openssl_1_0_2, reset the invalid reference and let the
|
||||||
|
# interpreter hook take care of it.
|
||||||
|
#
|
||||||
|
# In both cases, if withPerl = false, the intepreter line is expected be
|
||||||
|
# "#!/usr/bin/env perl"
|
||||||
''
|
''
|
||||||
substituteInPlace $out/bin/c_rehash --replace ${buildPackages.perl} ${perl}
|
substituteInPlace $out/bin/c_rehash --replace ${buildPackages.perl}/bin/perl "/usr/bin/env perl"
|
||||||
'' +
|
'' +
|
||||||
''
|
''
|
||||||
mv $out/bin $bin/
|
mv $out/bin $bin/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user