Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from Oct 19, 2022
Merged

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

merged 2 commits into from Oct 19, 2022

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.

@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 sort platform than than they will be run 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 sort platform than than they will be run on 10.rebuild-darwin: 0 10.rebuild-linux: 0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant