From ac92b409b36f75fc2772c3333346174cb42d5352 Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Mon, 11 Jul 2022 13:37:49 -0700 Subject: boost: if isMips use the "cross compile" codepath unconditionally boost-context changed its name for mips from "mips1" to "mips" in this commit: https://github.com/boostorg/context/commit/6edc8184a7136de4603a6f903d9b9b864ca9cf57 however the native-build code to detect the local architecture still reports "mips1": https://github.com/boostorg/boost/blob/67c074b249538cf441724f9bbb3929d0f6b4f333/boostcpp.jam#L637 Therefore native builds of boost-context on mips must specify architecture= explicitly; without this you will get link failures "undefined reference to `jump_fcontext`" in code that uses boost-context. Currently the "cross compile" codepath, which provides explicit architecture/abi/address-model/binary-format/os parameters, is prefixed by this comment: ``` # TODO: make this unconditional ``` This commit does so, at least if `isMips`. This commit is needed in order for native builds of nix to succeed on mips. --- pkgs/development/libraries/boost/generic.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'pkgs/development/libraries/boost') diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index 1644adb175d..4115d11eeb8 100644 --- a/pkgs/development/libraries/boost/generic.nix +++ b/pkgs/development/libraries/boost/generic.nix @@ -81,7 +81,9 @@ let "-sEXPAT_LIBPATH=${expat.out}/lib" # TODO: make this unconditional - ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform || + # required; see this line's `git blame` for an explanation + (stdenv.hostPlatform.isMips && versionAtLeast version "1.79")) [ "address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}" "architecture=${if stdenv.hostPlatform.isMips64 then if versionOlder version "1.78" then "mips1" else "mips" -- cgit 1.4.1 From 2df2b52806129828a1dafaa093027f10817e5b3b Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Sun, 21 Aug 2022 15:23:54 -0700 Subject: boost/generic.nix: reference commit-hash in comment The explanation for the conditional introduced by 61d9f201baeef4c4bb91ad8a8f5f89b747e0dfe4 is longer than a reasonable inline comment should be. It directed the reader to use `git blame`, but that tends to bitrot. Let's point the user to a specific nixpkgs git hash. This commit cannot be squashed into the previous commit, because a commit cannot mention its own commit-hash (without performaing an expensive double-sha1 preimage attack, of course). --- pkgs/development/libraries/boost/generic.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pkgs/development/libraries/boost') diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index 4115d11eeb8..d4e74b5788a 100644 --- a/pkgs/development/libraries/boost/generic.nix +++ b/pkgs/development/libraries/boost/generic.nix @@ -82,7 +82,7 @@ let # TODO: make this unconditional ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform || - # required; see this line's `git blame` for an explanation + # required on mips; see 61d9f201baeef4c4bb91ad8a8f5f89b747e0dfe4 (stdenv.hostPlatform.isMips && versionAtLeast version "1.79")) [ "address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}" "architecture=${if stdenv.hostPlatform.isMips64 -- cgit 1.4.1