Skip to content

boost: if isMips use the "cross compile" codepath unconditionally#181160

Merged
Mindavi merged 2 commits intomasterfrom
unknown repository
Oct 19, 2022
Merged

boost: if isMips use the "cross compile" codepath unconditionally#181160
Mindavi merged 2 commits intomasterfrom
unknown repository

Conversation

@ghost
Copy link

@ghost ghost commented Jul 11, 2022

This commit is needed in order for native builds of nix to succeed on mips.

Description of changes

boost-context changed its name for mips from "mips1" to "mips" in this commit:

boostorg/context@6edc818

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.

Things done
  • Built on platform(s)
    • mips64el-linux (still running, but got far enough to be sure the problem is fixed)
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Fits CONTRIBUTING.md.

@ofborg ofborg bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux. labels Jul 11, 2022
@ghost ghost marked this pull request as ready for review July 12, 2022 02:41
@ghost ghost changed the title boost: provide explicit architecture= for mips native builds boost: if isMips use the "cross compile" codepath unconditionally Jul 12, 2022
boost-context changed its name for mips from "mips1" to "mips" in this
commit:

  boostorg/context@6edc818

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.
@Mindavi Mindavi added the 6.topic: cross-compilation Building packages on a different platform than they will be used on label Jul 12, 2022
@ghost ghost mentioned this pull request Jul 15, 2022
3 tasks
@ghost
Copy link
Author

ghost commented Aug 5, 2022

Ping...

@ghost
Copy link
Author

ghost commented Aug 21, 2022

@hjones2199 you are listed as the maintainer for boost; do you approve of this?

The explanation for the conditional introduced by
61d9f20 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).
@Mindavi Mindavi merged commit 2df2b52 into NixOS:master Oct 19, 2022
@Mindavi
Copy link
Contributor

Mindavi commented Oct 19, 2022

So uh, can you also ask upstream to do something about that? :)

@ghost ghost deleted the pr/boost/mips-native-architecture-parameter branch January 23, 2024 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: cross-compilation Building packages on a different platform than they will be used on 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant