mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 23:03:40 +01:00
python2Packages.numpy: fix build on darwin
By applying the old patch (compatible with 1.18.x and older). Also refactor expression to make presence of the "old" version more explicit.
This commit is contained in:
parent
ec74a02bde
commit
1e4290b78c
3 changed files with 129 additions and 10 deletions
94
pkgs/development/python-modules/numpy/1.16.nix
Normal file
94
pkgs/development/python-modules/numpy/1.16.nix
Normal file
|
@ -0,0 +1,94 @@
|
|||
{ lib
|
||||
, fetchPypi
|
||||
, python
|
||||
, buildPythonPackage
|
||||
, gfortran
|
||||
, pytest
|
||||
, blas
|
||||
, lapack
|
||||
, writeTextFile
|
||||
, isPyPy
|
||||
, cython
|
||||
, setuptoolsBuildHook
|
||||
}:
|
||||
|
||||
assert (!blas.isILP64) && (!lapack.isILP64);
|
||||
|
||||
let
|
||||
cfg = writeTextFile {
|
||||
name = "site.cfg";
|
||||
text = (lib.generators.toINI {} {
|
||||
${blas.implementation} = {
|
||||
include_dirs = "${lib.getDev blas}/include:${lib.getDev lapack}/include";
|
||||
library_dirs = "${blas}/lib:${lapack}/lib";
|
||||
libraries = "lapack,lapacke,blas,cblas";
|
||||
};
|
||||
lapack = {
|
||||
include_dirs = "${lib.getDev lapack}/include";
|
||||
library_dirs = "${lapack}/lib";
|
||||
};
|
||||
blas = {
|
||||
include_dirs = "${lib.getDev blas}/include";
|
||||
library_dirs = "${blas}/lib";
|
||||
};
|
||||
});
|
||||
};
|
||||
in buildPythonPackage rec {
|
||||
pname = "numpy";
|
||||
version = "1.16.5";
|
||||
format = "pyproject.toml";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "8bb452d94e964b312205b0de1238dd7209da452343653ab214b5d681780e7a0c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gfortran pytest cython setuptoolsBuildHook ];
|
||||
buildInputs = [ blas lapack ];
|
||||
|
||||
patches = lib.optionals python.hasDistutilsCxxPatch [
|
||||
# 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++_1.16.patch
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
sed -i 's/-faltivec//' numpy/distutils/system_info.py
|
||||
export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
ln -s ${cfg} site.cfg
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
doCheck = !isPyPy; # numpy 1.16+ hits a bug in pypy's ctypes, using either numpy or pypy HEAD fixes this (https://github.com/numpy/numpy/issues/13807)
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
pushd dist
|
||||
${python.interpreter} -c 'import numpy; numpy.test("fast", verbose=10)'
|
||||
popd
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
# just for backwards compatibility
|
||||
blas = blas.provider;
|
||||
blasImplementation = blas.implementation;
|
||||
inherit cfg;
|
||||
};
|
||||
|
||||
# Disable test
|
||||
# - test_large_file_support: takes a long time and can cause the machine to run out of disk space
|
||||
NOSE_EXCLUDE="test_large_file_support";
|
||||
|
||||
meta = {
|
||||
description = "Scientific tools for Python";
|
||||
homepage = "https://numpy.org/";
|
||||
maintainers = with lib.maintainers; [ fridh ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
|
||||
--- a/numpy/distutils/unixccompiler.py
|
||||
+++ b/numpy/distutils/unixccompiler.py
|
||||
@@ -44,8 +44,6 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
|
||||
if opt not in llink_s:
|
||||
self.linker_so = llink_s.split() + opt.split()
|
||||
|
||||
- display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
|
||||
-
|
||||
# gcc style automatic dependencies, outputs a makefile (-MF) that lists
|
||||
# all headers needed by a c file as a side effect of compilation (-MMD)
|
||||
if getattr(self, '_auto_depends', False):
|
||||
@@ -54,8 +52,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
|
||||
deps = []
|
||||
|
||||
try:
|
||||
- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
|
||||
- extra_postargs, display = display)
|
||||
+ if self.detect_language(src) == 'c++':
|
||||
+ display = '%s: %s' % (os.path.basename(self.compiler_so_cxx[0]), src)
|
||||
+ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] + deps +
|
||||
+ extra_postargs, display = display)
|
||||
+ else:
|
||||
+ display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
|
||||
+ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
|
||||
+ extra_postargs, display = display)
|
||||
+
|
||||
except DistutilsExecError:
|
||||
msg = str(get_exception())
|
||||
raise CompileError(msg)
|
|
@ -4926,16 +4926,11 @@ in {
|
|||
|
||||
Nuitka = callPackage ../development/python-modules/nuitka { };
|
||||
|
||||
numpy = let
|
||||
numpy_ = callPackage ../development/python-modules/numpy { };
|
||||
numpy_2 = numpy_.overridePythonAttrs(oldAttrs: rec {
|
||||
version = "1.16.5";
|
||||
src = oldAttrs.src.override {
|
||||
inherit version;
|
||||
sha256 = "8bb452d94e964b312205b0de1238dd7209da452343653ab214b5d681780e7a0c";
|
||||
};
|
||||
});
|
||||
in if pythonOlder "3.5" then numpy_2 else numpy_;
|
||||
numpy =
|
||||
if pythonOlder "3.5" then
|
||||
callPackage ../development/python-modules/numpy/1.16.nix { }
|
||||
else
|
||||
callPackage ../development/python-modules/numpy { };
|
||||
|
||||
numpydoc = callPackage ../development/python-modules/numpydoc { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue