cpython: Enable cross-compilation
This commit is contained in:
parent
d625f181bd
commit
cb5453e13a
@ -0,0 +1,44 @@
|
|||||||
|
commit 9ac1104b075ecea6175e2214b81c6538adbb9e84
|
||||||
|
Author: Ben Gamari <ben@smart-cactus.org>
|
||||||
|
Date: Tue Oct 17 23:53:25 2017 -0400
|
||||||
|
|
||||||
|
Fix it
|
||||||
|
|
||||||
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||||
|
index e288964..ddc7428 100644
|
||||||
|
--- a/Makefile.pre.in
|
||||||
|
+++ b/Makefile.pre.in
|
||||||
|
@@ -1120,27 +1120,27 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
|
||||||
|
$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
|
||||||
|
$(DESTDIR)$(LIBDEST)/distutils/tests ; \
|
||||||
|
fi
|
||||||
|
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ $(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
||||||
|
-d $(LIBDEST) -f \
|
||||||
|
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
||||||
|
$(DESTDIR)$(LIBDEST)
|
||||||
|
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ $(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
||||||
|
-d $(LIBDEST) -f \
|
||||||
|
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
||||||
|
$(DESTDIR)$(LIBDEST)
|
||||||
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ -$(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
|
||||||
|
-d $(LIBDEST)/site-packages -f \
|
||||||
|
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
||||||
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ -$(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
||||||
|
-d $(LIBDEST)/site-packages -f \
|
||||||
|
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
||||||
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ -$(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
|
||||||
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
||||||
|
+ -$(RUNSHARED) \
|
||||||
|
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
|
||||||
|
|
||||||
|
# Create the PLATDIR source directory, if one wasn't distributed..
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, hostPlatform, fetchurl
|
{ stdenv, hostPlatform, buildPlatform, buildPackages, fetchurl
|
||||||
, bzip2
|
, bzip2
|
||||||
, gdbm
|
, gdbm
|
||||||
, fetchpatch
|
, fetchpatch
|
||||||
@ -89,6 +89,10 @@ let
|
|||||||
# compiler when needed.
|
# compiler when needed.
|
||||||
./python-2.7-distutils-C++.patch
|
./python-2.7-distutils-C++.patch
|
||||||
|
|
||||||
|
] ++ [
|
||||||
|
|
||||||
|
# Don't use pass host PYTHONPATH to build python
|
||||||
|
#./cross-compile.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
@ -117,6 +121,28 @@ let
|
|||||||
"ac_cv_func_bind_textdomain_codeset=yes"
|
"ac_cv_func_bind_textdomain_codeset=yes"
|
||||||
] ++ optionals stdenv.isDarwin [
|
] ++ optionals stdenv.isDarwin [
|
||||||
"--disable-toolbox-glue"
|
"--disable-toolbox-glue"
|
||||||
|
] ++ optionals (hostPlatform != buildPlatform) [
|
||||||
|
"PYTHON_FOR_BUILD=${getBin buildPackages.python}/bin/python"
|
||||||
|
"ac_cv_buggy_getaddrinfo=no"
|
||||||
|
# Assume little-endian IEEE 754 floating point when cross compiling
|
||||||
|
"ac_cv_little_endian_double=yes"
|
||||||
|
"ac_cv_big_endian_double=no"
|
||||||
|
"ac_cv_mixed_endian_double=no"
|
||||||
|
"ac_cv_x87_double_rounding=yes"
|
||||||
|
"ac_cv_tanh_preserves_zero_sign=yes"
|
||||||
|
# Generally assume that things are present and work
|
||||||
|
"ac_cv_posix_semaphores_enabled=yes"
|
||||||
|
"ac_cv_broken_sem_getvalue=no"
|
||||||
|
"ac_cv_wchar_t_signed=yes"
|
||||||
|
"ac_cv_rshift_extends_sign=yes"
|
||||||
|
"ac_cv_broken_nice=no"
|
||||||
|
"ac_cv_broken_poll=no"
|
||||||
|
"ac_cv_working_tzset=yes"
|
||||||
|
"ac_cv_have_long_long_format=yes"
|
||||||
|
"ac_cv_have_size_t_format=yes"
|
||||||
|
"ac_cv_computed_gotos=yes"
|
||||||
|
"ac_cv_file__dev_ptmx=yes"
|
||||||
|
"ac_cv_file__dev_ptc=yes"
|
||||||
];
|
];
|
||||||
|
|
||||||
postConfigure = if hostPlatform.isCygwin then ''
|
postConfigure = if hostPlatform.isCygwin then ''
|
||||||
@ -131,6 +157,9 @@ let
|
|||||||
++ [ db gdbm ncurses sqlite readline ]
|
++ [ db gdbm ncurses sqlite readline ]
|
||||||
++ optionals x11Support [ tcl tk xlibsWrapper libX11 ]
|
++ optionals x11Support [ tcl tk xlibsWrapper libX11 ]
|
||||||
++ optionals stdenv.isDarwin ([ CF ] ++ optional (configd != null) configd);
|
++ optionals stdenv.isDarwin ([ CF ] ++ optional (configd != null) configd);
|
||||||
|
nativeBuildInputs =
|
||||||
|
optionals (hostPlatform != buildPlatform)
|
||||||
|
[ buildPackages.stdenv.cc buildPackages.python ];
|
||||||
|
|
||||||
mkPaths = paths: {
|
mkPaths = paths: {
|
||||||
C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
|
C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
|
||||||
@ -144,7 +173,7 @@ in stdenv.mkDerivation {
|
|||||||
name = "python-${version}";
|
name = "python-${version}";
|
||||||
pythonVersion = majorVersion;
|
pythonVersion = majorVersion;
|
||||||
|
|
||||||
inherit majorVersion version src patches buildInputs
|
inherit majorVersion version src patches buildInputs nativeBuildInputs
|
||||||
preConfigure configureFlags;
|
preConfigure configureFlags;
|
||||||
|
|
||||||
LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
|
LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
|
||||||
@ -187,7 +216,8 @@ in stdenv.mkDerivation {
|
|||||||
# Determinism: Windows installers were not deterministic.
|
# Determinism: Windows installers were not deterministic.
|
||||||
# We're also not interested in building Windows installers.
|
# We're also not interested in building Windows installers.
|
||||||
find "$out" -name 'wininst*.exe' | xargs -r rm -f
|
find "$out" -name 'wininst*.exe' | xargs -r rm -f
|
||||||
|
'' + optionalString (stdenv.hostPlatform == stdenv.buildPlatform)
|
||||||
|
''
|
||||||
# Determinism: rebuild all bytecode
|
# Determinism: rebuild all bytecode
|
||||||
# We exclude lib2to3 because that's Python 2 code which fails
|
# We exclude lib2to3 because that's Python 2 code which fails
|
||||||
# We rebuild three times, once for each optimization level
|
# We rebuild three times, once for each optimization level
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch
|
{ stdenv, fetchurl, fetchpatch, buildPackages
|
||||||
, glibc
|
, glibc
|
||||||
, bzip2
|
, bzip2
|
||||||
, expat
|
, expat
|
||||||
@ -39,12 +39,15 @@ let
|
|||||||
++ optionals x11Support [ tcl tk libX11 xproto ]
|
++ optionals x11Support [ tcl tk libX11 xproto ]
|
||||||
++ optionals stdenv.isDarwin [ CF configd ];
|
++ optionals stdenv.isDarwin [ CF configd ];
|
||||||
|
|
||||||
|
nativeBuildInputs =
|
||||||
|
optional (stdenv.hostPlatform != stdenv.buildPlatform) buildPackages.python3;
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
name = "python3-${version}";
|
name = "python3-${version}";
|
||||||
pythonVersion = majorVersion;
|
pythonVersion = majorVersion;
|
||||||
inherit majorVersion version;
|
inherit majorVersion version;
|
||||||
|
|
||||||
inherit buildInputs;
|
inherit buildInputs nativeBuildInputs;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
|
url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
|
||||||
@ -87,6 +90,27 @@ in stdenv.mkDerivation {
|
|||||||
"--without-ensurepip"
|
"--without-ensurepip"
|
||||||
"--with-system-expat"
|
"--with-system-expat"
|
||||||
"--with-system-ffi"
|
"--with-system-ffi"
|
||||||
|
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||||
|
"ac_cv_buggy_getaddrinfo=no"
|
||||||
|
# Assume little-endian IEEE 754 floating point when cross compiling
|
||||||
|
"ac_cv_little_endian_double=yes"
|
||||||
|
"ac_cv_big_endian_double=no"
|
||||||
|
"ac_cv_mixed_endian_double=no"
|
||||||
|
"ac_cv_x87_double_rounding=yes"
|
||||||
|
"ac_cv_tanh_preserves_zero_sign=yes"
|
||||||
|
# Generally assume that things are present and work
|
||||||
|
"ac_cv_posix_semaphores_enabled=yes"
|
||||||
|
"ac_cv_broken_sem_getvalue=no"
|
||||||
|
"ac_cv_wchar_t_signed=yes"
|
||||||
|
"ac_cv_rshift_extends_sign=yes"
|
||||||
|
"ac_cv_broken_nice=no"
|
||||||
|
"ac_cv_broken_poll=no"
|
||||||
|
"ac_cv_working_tzset=yes"
|
||||||
|
"ac_cv_have_long_long_format=yes"
|
||||||
|
"ac_cv_have_size_t_format=yes"
|
||||||
|
"ac_cv_computed_gotos=yes"
|
||||||
|
"ac_cv_file__dev_ptmx=yes"
|
||||||
|
"ac_cv_file__dev_ptc=yes"
|
||||||
];
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
@ -139,7 +163,7 @@ in stdenv.mkDerivation {
|
|||||||
for i in $out/lib/python${majorVersion}/_sysconfigdata*.py $out/lib/python${majorVersion}/config-${majorVersion}m*/Makefile; do
|
for i in $out/lib/python${majorVersion}/_sysconfigdata*.py $out/lib/python${majorVersion}/config-${majorVersion}m*/Makefile; do
|
||||||
sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
|
sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
|
||||||
done
|
done
|
||||||
|
'' + optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
|
||||||
# Determinism: rebuild all bytecode
|
# Determinism: rebuild all bytecode
|
||||||
# We exclude lib2to3 because that's Python 2 code which fails
|
# We exclude lib2to3 because that's Python 2 code which fails
|
||||||
# We rebuild three times, once for each optimization level
|
# We rebuild three times, once for each optimization level
|
||||||
|
Loading…
x
Reference in New Issue
Block a user