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

python37: fix cross-compilation #52481

Merged
merged 1 commit into from Dec 20, 2018
Merged

python37: fix cross-compilation #52481

merged 1 commit into from Dec 20, 2018

Conversation

Mic92
Copy link
Member

@Mic92 Mic92 commented Dec 18, 2018

Motivation for this change

accidental fix while working on cross-rust.
pretty much the same as python2 except that it also fixes bytecode compilation.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Assured whether relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@Mic92 Mic92 requested a review from FRidh as a code owner December 18, 2018 12:40
@Mic92 Mic92 added the 6.topic: cross-compilation Building packages on a different sort platform than than they will be run on label Dec 18, 2018
@FRidh
Copy link
Member

FRidh commented Dec 18, 2018

I think by rewriting the expression somewhat it becomes possible to use interpreter, thereby preventing the need to go into buildPackages.

@Mic92
Copy link
Member Author

Mic92 commented Dec 18, 2018

This can be tricky though because people might use interpreter in shebangs, in which case the host instead of the build python should be used. There should be a distinction between pythonForBuild and pythonForTarget interpreter. Also in this case it is not applicable because python is build within the same derivation, which would lead to infinite recursion.

@Mic92 Mic92 merged commit cc30e48 into NixOS:staging Dec 20, 2018
@Mic92 Mic92 deleted the python37-cross branch December 20, 2018 14:06
@Mic92
Copy link
Member Author

Mic92 commented Dec 20, 2018

Except for the cpython build, people should use always use buildPackages.python37.interpreter at build time and python37.interpreter when they refer to runtime i.e. in shebangs. For pythonPackages I think we should have an alias called pythonForBuild that refers to buildPackages.$python of the current python version.

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 6.topic: python 10.rebuild-darwin: 0 10.rebuild-linux: 0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants