From ac92b409b36f75fc2772c3333346174cb42d5352 Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Mon, 11 Jul 2022 13:37:49 -0700 Subject: [PATCH] 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(-) diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index 1644adb175db..4115d11eeb83 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"