mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/numpy: add upstream patch for compiler args (fix Ceph build failure)
Bug: https://bugs.gentoo.org/802150 Thanks-to: Hector Martin <marcan@marcan.st> Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
https://github.com/numpy/numpy/commit/689d905f501b7abbddf0fdef241fa586a83e5cd6
|
||||
https://github.com/numpy/numpy/pull/20116
|
||||
https://bugs.gentoo.org/802150
|
||||
|
||||
From 7dcf62379f41407d8f9583d1c2016e3d8ec48384 Mon Sep 17 00:00:00 2001
|
||||
From: Hector Martin <marcan@marcan.st>
|
||||
Date: Thu, 14 Oct 2021 14:58:52 +0900
|
||||
Subject: [PATCH] MAINT: Fix issue with C compiler args containing spaces
|
||||
|
||||
Instead of doing a dumb string split, use shlex to make sure args
|
||||
containing spaces are handled properly.
|
||||
---
|
||||
numpy/distutils/unixccompiler.py | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
|
||||
index 733a9fc5094..4884960fdf2 100644
|
||||
--- a/numpy/distutils/unixccompiler.py
|
||||
+++ b/numpy/distutils/unixccompiler.py
|
||||
@@ -5,6 +5,7 @@
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
+import shlex
|
||||
|
||||
from distutils.errors import CompileError, DistutilsExecError, LibError
|
||||
from distutils.unixccompiler import UnixCCompiler
|
||||
@@ -30,15 +31,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
|
||||
if 'OPT' in os.environ:
|
||||
# XXX who uses this?
|
||||
from sysconfig import get_config_vars
|
||||
- opt = " ".join(os.environ['OPT'].split())
|
||||
- gcv_opt = " ".join(get_config_vars('OPT')[0].split())
|
||||
- ccomp_s = " ".join(self.compiler_so)
|
||||
+ opt = shlex.join(shlex.split(os.environ['OPT']))
|
||||
+ gcv_opt = shlex.join(shlex.split(get_config_vars('OPT')[0]))
|
||||
+ ccomp_s = shlex.join(self.compiler_so)
|
||||
if opt not in ccomp_s:
|
||||
ccomp_s = ccomp_s.replace(gcv_opt, opt)
|
||||
- self.compiler_so = ccomp_s.split()
|
||||
- llink_s = " ".join(self.linker_so)
|
||||
+ self.compiler_so = shlex.split(ccomp_s)
|
||||
+ llink_s = shlex.join(self.linker_so)
|
||||
if opt not in llink_s:
|
||||
- self.linker_so = llink_s.split() + opt.split()
|
||||
+ self.linker_so = self.linker_so + shlex.split(opt)
|
||||
|
||||
display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
|
||||
|
||||
144
dev-python/numpy/numpy-1.21.4-r1.ebuild
Normal file
144
dev-python/numpy/numpy-1.21.4-r1.ebuild
Normal file
@@ -0,0 +1,144 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
PYTHON_REQ_USE="threads(+)"
|
||||
|
||||
FORTRAN_NEEDED=lapack
|
||||
|
||||
inherit distutils-r1 flag-o-matic fortran-2 toolchain-funcs
|
||||
|
||||
DOC_PV=${PV}
|
||||
DESCRIPTION="Fast array and numerical python library"
|
||||
HOMEPAGE="https://numpy.org/"
|
||||
SRC_URI="
|
||||
mirror://pypi/${PN:0:1}/${PN}/${P}.zip
|
||||
doc? (
|
||||
https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-html.zip -> numpy-html-${DOC_PV}.zip
|
||||
https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-ref.pdf -> numpy-ref-${DOC_PV}.pdf
|
||||
https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-user.pdf -> numpy-user-${DOC_PV}.pdf
|
||||
)"
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
|
||||
IUSE="doc lapack"
|
||||
|
||||
RDEPEND="
|
||||
lapack? (
|
||||
>=virtual/cblas-3.8
|
||||
>=virtual/lapack-3.8
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
${RDEPEND}
|
||||
app-arch/unzip
|
||||
>=dev-python/cython-0.29.24[${PYTHON_USEDEP}]
|
||||
lapack? ( virtual/pkgconfig )
|
||||
test? (
|
||||
>=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
|
||||
>=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
|
||||
)
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/numpy-1.21.0-no-hardcode-blasv2.patch
|
||||
"${FILESDIR}"/numpy-1.21.4-build-compiler-args-ceph.patch
|
||||
)
|
||||
|
||||
distutils_enable_tests pytest
|
||||
|
||||
src_unpack() {
|
||||
default
|
||||
if use doc; then
|
||||
unzip -qo "${DISTDIR}"/numpy-html-${DOC_PV}.zip -d html || die
|
||||
fi
|
||||
}
|
||||
|
||||
python_prepare_all() {
|
||||
if use lapack; then
|
||||
local incdir="${EPREFIX}"/usr/include
|
||||
local libdir="${EPREFIX}"/usr/$(get_libdir)
|
||||
cat >> site.cfg <<-EOF || die
|
||||
[blas]
|
||||
include_dirs = ${incdir}
|
||||
library_dirs = ${libdir}
|
||||
blas_libs = cblas,blas
|
||||
[lapack]
|
||||
library_dirs = ${libdir}
|
||||
lapack_libs = lapack
|
||||
EOF
|
||||
else
|
||||
export {ATLAS,PTATLAS,BLAS,LAPACK,MKL}=None
|
||||
fi
|
||||
|
||||
export CC="$(tc-getCC) ${CFLAGS}"
|
||||
|
||||
append-flags -fno-strict-aliasing
|
||||
|
||||
# See progress in http://projects.scipy.org/scipy/numpy/ticket/573
|
||||
# with the subtle difference that we don't want to break Darwin where
|
||||
# -shared is not a valid linker argument
|
||||
if [[ ${CHOST} != *-darwin* ]]; then
|
||||
append-ldflags -shared
|
||||
fi
|
||||
|
||||
# only one fortran to link with:
|
||||
# linking with cblas and lapack library will force
|
||||
# autodetecting and linking to all available fortran compilers
|
||||
append-fflags -fPIC
|
||||
if use lapack; then
|
||||
NUMPY_FCONFIG="config_fc --noopt --noarch"
|
||||
# workaround bug 335908
|
||||
[[ $(tc-getFC) == *gfortran* ]] && NUMPY_FCONFIG+=" --fcompiler=gnu95"
|
||||
fi
|
||||
|
||||
# don't version f2py, we will handle it.
|
||||
sed -i -e '/f2py_exe/s: + os\.path.*$::' numpy/f2py/setup.py || die
|
||||
|
||||
# disable fuzzed tests
|
||||
find numpy/*/tests -name '*.py' -exec sed -i \
|
||||
-e 's:def \(.*_fuzz\):def _\1:' {} + || die
|
||||
# very memory- and disk-hungry
|
||||
sed -i -e 's:test_large_zip:_&:' numpy/lib/tests/test_io.py || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
export MAKEOPTS=-j1 #660754
|
||||
|
||||
distutils-r1_python_compile ${NUMPY_FCONFIG}
|
||||
}
|
||||
|
||||
python_test() {
|
||||
local deselect=(
|
||||
numpy/typing/tests/test_typing.py::test_reveal[arrayterator.py]
|
||||
)
|
||||
|
||||
distutils_install_for_testing --single-version-externally-managed \
|
||||
--record "${TMPDIR}/record.txt" ${NUMPY_FCONFIG}
|
||||
|
||||
cd "${TEST_DIR}/lib" || die
|
||||
epytest ${deselect[@]/#/--deselect }
|
||||
}
|
||||
|
||||
python_install() {
|
||||
# https://github.com/numpy/numpy/issues/16005
|
||||
local mydistutilsargs=( build_src )
|
||||
distutils-r1_python_install ${NUMPY_FCONFIG}
|
||||
python_optimize
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
local DOCS=( LICENSE.txt README.md THANKS.txt )
|
||||
|
||||
if use doc; then
|
||||
local HTML_DOCS=( "${WORKDIR}"/html/. )
|
||||
DOCS+=( "${DISTDIR}"/${PN}-{user,ref}-${DOC_PV}.pdf )
|
||||
fi
|
||||
|
||||
distutils-r1_python_install_all
|
||||
}
|
||||
Reference in New Issue
Block a user