diff options
author | Matthew Justin Bauer <mjbauer95@gmail.com> | 2018-05-09 06:11:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-09 06:11:44 +0000 |
commit | 1d3fe7d894f66dd511f1fb3b88bc511c3554e242 (patch) | |
tree | e95387760afdaf7e7e0f856fc1e053ef74c1cf1a /pkgs | |
parent | 03308d12985472166d8cadfa169b65329b6d1b36 (diff) | |
parent | 31010e0f89a43985122a94728b7dce14ec27739e (diff) | |
download | nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar.gz nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar.bz2 nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar.lz nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar.xz nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.tar.zst nixlib-1d3fe7d894f66dd511f1fb3b88bc511c3554e242.zip |
Merge pull request #39576 from veprbl/pr/py3_distutils_fix
python3: add C++ compiler support for distutils
Diffstat (limited to 'pkgs')
4 files changed, 43 insertions, 6 deletions
diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix index 85c45a9d396f..7da2cfdd1527 100644 --- a/pkgs/development/interpreters/python/cpython/3.4/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl +{ stdenv, fetchurl, fetchpatch , bzip2 , expat , libffi @@ -39,6 +39,8 @@ let ++ optionals x11Support [ tcl tk libX11 xproto ] ++ optionals stdenv.isDarwin [ CF configd ]; + hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false); + in stdenv.mkDerivation { name = "python3-${version}"; pythonVersion = majorVersion; @@ -69,6 +71,16 @@ in stdenv.mkDerivation { ./ld_library_path.patch ] ++ optionals (x11Support && stdenv.isDarwin) [ ./use-correct-tcl-tk-on-darwin.patch + ] ++ optionals hasDistutilsCxxPatch [ + # Fix for http://bugs.python.org/issue1222585 + # Upstream distutils is calling C compiler to compile C++ code, which + # only works for GCC and Apple Clang. This makes distutils to call C++ + # compiler when needed. + (fetchpatch { + url = "https://bugs.python.org/file47046/python-3.x-distutils-C++.patch"; + sha256 = "0dgdn9k2kmw4wh90vdnjcrnn97ylxgx7mbn9l87fwz6j501jqvk8"; + extraPrefix = ""; + }) ]; postPatch = '' @@ -166,7 +178,7 @@ in stdenv.mkDerivation { passthru = let pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; in rec { - inherit libPrefix sitePackages x11Support; + inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; diff --git a/pkgs/development/interpreters/python/cpython/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix index c6d572aca164..434c23382709 100644 --- a/pkgs/development/interpreters/python/cpython/3.5/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix @@ -39,6 +39,8 @@ let ++ optionals x11Support [ tcl tk libX11 xproto ] ++ optionals stdenv.isDarwin [ CF configd ]; + hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false); + in stdenv.mkDerivation { name = "python3-${version}"; pythonVersion = majorVersion; @@ -75,6 +77,16 @@ in stdenv.mkDerivation { }) ] ++ optionals (x11Support && stdenv.isDarwin) [ ./use-correct-tcl-tk-on-darwin.patch + ] ++ optionals hasDistutilsCxxPatch [ + # Fix for http://bugs.python.org/issue1222585 + # Upstream distutils is calling C compiler to compile C++ code, which + # only works for GCC and Apple Clang. This makes distutils to call C++ + # compiler when needed. + (fetchpatch { + url = "https://bugs.python.org/file47046/python-3.x-distutils-C++.patch"; + sha256 = "0dgdn9k2kmw4wh90vdnjcrnn97ylxgx7mbn9l87fwz6j501jqvk8"; + extraPrefix = ""; + }) ]; postPatch = '' @@ -166,7 +178,7 @@ in stdenv.mkDerivation { passthru = let pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; in rec { - inherit libPrefix sitePackages x11Support; + inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix index e5e05c0ac7a3..5ee5c9179534 100644 --- a/pkgs/development/interpreters/python/cpython/3.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix @@ -42,6 +42,8 @@ let nativeBuildInputs = optional (stdenv.hostPlatform != stdenv.buildPlatform) buildPackages.python3; + hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false); + in stdenv.mkDerivation { name = "python3-${version}"; pythonVersion = majorVersion; @@ -77,6 +79,16 @@ in stdenv.mkDerivation { }) ] ++ optionals (x11Support && stdenv.isDarwin) [ ./use-correct-tcl-tk-on-darwin.patch + ] ++ optionals hasDistutilsCxxPatch [ + # Fix for http://bugs.python.org/issue1222585 + # Upstream distutils is calling C compiler to compile C++ code, which + # only works for GCC and Apple Clang. This makes distutils to call C++ + # compiler when needed. + (fetchpatch { + url = "https://bugs.python.org/file47046/python-3.x-distutils-C++.patch"; + sha256 = "0dgdn9k2kmw4wh90vdnjcrnn97ylxgx7mbn9l87fwz6j501jqvk8"; + extraPrefix = ""; + }) ]; postPatch = '' @@ -189,7 +201,7 @@ in stdenv.mkDerivation { passthru = let pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; in rec { - inherit libPrefix sitePackages x11Support; + inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix index 4022115e9a0e..ec727994b09c 100644 --- a/pkgs/development/python-modules/numpy/default.nix +++ b/pkgs/development/python-modules/numpy/default.nix @@ -14,8 +14,9 @@ buildPythonPackage rec { buildInputs = [ gfortran nose blas ]; patches = lib.optionals (python.hasDistutilsCxxPatch or false) [ - # See cpython 2.7 patches. - # numpy.distutils is used by cython during it's check phase + # We patch cpython/distutils to fix https://bugs.python.org/issue1222585 + # Patching of numpy.distutils is needed to prevent it from undoing the + # patch to distutils. ./numpy-distutils-C++.patch ]; |