mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 16:33:15 +00:00
nss: fix building for aarch32 on aarch64
There are two ways to build a package for aarch32 on an aarch64 machine: either by cross compiling as normal, or by adding armv6l/armv7l to extraPlatforms and doing a non-cross compile. Previously, NSS failed to build with both methods: when using extraPlatforms, things failed because NSS includes an armv8-specific file (presumably based on the result of uname); when cross compiling, NSS's build system expects to receive an architecture name of arm (not armv6l or whatever), so was failing to include some arch-specific code and failed with a linker error. This commit fixes those things by a) always passing the arch, even when not cross-compiling, and b) special-casing aarch32 to always pass in an arch of arm.
This commit is contained in:
parent
d38bad590e
commit
b14d997778
@ -53,7 +53,9 @@ in stdenv.mkDerivation rec {
|
||||
preConfigure = "cd nss";
|
||||
|
||||
makeFlags = let
|
||||
cpu = stdenv.hostPlatform.parsed.cpu.name;
|
||||
# NSS's build systems expects aarch32 to be called arm; if we pass in armv6l/armv7l, it
|
||||
# fails with a linker error
|
||||
cpu = if stdenv.hostPlatform.isAarch32 then "arm" else stdenv.hostPlatform.parsed.cpu.name;
|
||||
in [
|
||||
"NSPR_INCLUDE_DIR=${nspr.dev}/include"
|
||||
"NSPR_LIB_DIR=${nspr.out}/lib"
|
||||
@ -64,9 +66,11 @@ in stdenv.mkDerivation rec {
|
||||
"USE_SYSTEM_ZLIB=1"
|
||||
"NSS_USE_SYSTEM_SQLITE=1"
|
||||
"NATIVE_CC=${buildPackages.stdenv.cc}/bin/cc"
|
||||
] ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
# Pass in CPU even if we're not cross compiling, because otherwise it tries to guess with
|
||||
# uname, which can be wrong if e.g. we're compiling for aarch32 on aarch64
|
||||
"OS_TEST=${cpu}"
|
||||
"CPU_ARCH=${cpu}"
|
||||
] ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"CROSS_COMPILE=1"
|
||||
"NSS_DISABLE_GTESTS=1" # don't want to build tests when cross-compiling
|
||||
] ++ stdenv.lib.optional stdenv.is64bit "USE_64=1"
|
||||
|
Loading…
Reference in New Issue
Block a user