summary refs log tree commit diff
path: root/pkgs/development/interpreters/python/wrap.sh
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2019-01-02 20:09:44 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2019-01-04 10:45:22 +0100
commitf665828fa374580f4b2fd725761d23e18f55e526 (patch)
tree3bae5444b8a2fdec44f7cf41656c6b2e9a9c9b32 /pkgs/development/interpreters/python/wrap.sh
parent613498af978d65a7497cdd0dfd4f15c834348c61 (diff)
downloadnixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar.gz
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar.bz2
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar.lz
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar.xz
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.tar.zst
nixpkgs-f665828fa374580f4b2fd725761d23e18f55e526.zip
Python: improve cross-compilation
This changeset allows for cross-compilation of Python packages. Packages
built with buildPythonPackage are not allowed to refer to the build
machine. Executables that have shebangs will refer to the host.
Diffstat (limited to 'pkgs/development/interpreters/python/wrap.sh')
-rw-r--r--pkgs/development/interpreters/python/wrap.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/pkgs/development/interpreters/python/wrap.sh b/pkgs/development/interpreters/python/wrap.sh
index 6fa8c316a17..b2d65422db4 100644
--- a/pkgs/development/interpreters/python/wrap.sh
+++ b/pkgs/development/interpreters/python/wrap.sh
@@ -16,8 +16,8 @@ buildPythonPath() {
     declare -A pythonPathsSeen=()
     program_PYTHONPATH=
     program_PATH=
-    pythonPathsSeen["@python@"]=1
-    addToSearchPath program_PATH @python@/bin
+    pythonPathsSeen["@pythonHost@"]=1
+    addToSearchPath program_PATH @pythonHost@/bin
     for path in $pythonPath; do
         _addToPythonPath $path
     done
@@ -53,7 +53,13 @@ wrapPythonProgramsIn() {
             # Strip suffix, like "3" or "2.7m" -- we don't have any choice on which
             # Python to use besides one with this hook anyway.
             if head -n1 "$f" | grep -q '#!.*/env.*\(python\|pypy\)'; then
-                sed -i "$f" -e "1 s^.*/env[ ]*\(python\|pypy\)[^ ]*^#! @executable@^"
+                sed -i "$f" -e "1 s^.*/env[ ]*\(python\|pypy\)[^ ]*^#!@executable@^"
+            fi
+
+            if head -n1 "$f" | grep -q '#!.*'; then
+                # Cross-compilation hack: ensure shebangs are for the host
+                echo "Rewriting $(head -n 1 $f) to #!@pythonHost@"
+                sed -i "$f" -e "1 s^#!@python@^#!@pythonHost@^"
             fi
 
             # catch /python and /.python-wrapped