Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions pkgs/development/interpreters/python/cpython/3.4/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ stdenv, fetchurl
{ stdenv, fetchurl, fetchpatch
, bzip2
, expat
, libffi
Expand Down Expand Up @@ -39,6 +39,8 @@ let
++ optionals x11Support [ tcl tk libX11 xproto ]
++ optionals stdenv.isDarwin [ CF configd ];

hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about needsDistutilsCxxPatch?

Copy link
Member Author

@veprbl veprbl Apr 29, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@knedlsepp The meaning depends on the context. The point to have this attribute in the first place is to query python.hasDistutilsCxxPatch from numpy so that its numpy counterpart can be engaged (it won't work otherwise). But PR's are welcome if you still want to change it.


in stdenv.mkDerivation {
name = "python3-${version}";
pythonVersion = majorVersion;
Expand Down Expand Up @@ -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 = ''
Expand Down Expand Up @@ -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;};
Expand Down
14 changes: 13 additions & 1 deletion pkgs/development/interpreters/python/cpython/3.5/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 = ''
Expand Down Expand Up @@ -160,7 +172,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;};
Expand Down
14 changes: 13 additions & 1 deletion pkgs/development/interpreters/python/cpython/3.6/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -71,6 +73,16 @@ in stdenv.mkDerivation {
./no-ldconfig.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 = ''
Expand Down Expand Up @@ -183,7 +195,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;};
Expand Down
5 changes: 3 additions & 2 deletions pkgs/development/python-modules/numpy/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
];

Expand Down