From 00d6926266e8a86f6d7f49f1e78a3a674d449a7c Mon Sep 17 00:00:00 2001 From: Pacho Ramos Date: Wed, 25 Dec 2019 16:36:54 +0100 Subject: [PATCH] dev-python/numpy-python2: Package supporting py2 for smoother transition As discussed in https://bugs.gentoo.org/703240 I will maintain a numpy-python2 package to allow easier transition of reverse deps allowing to still port them to python 3.8. The idea of this package is to drop it as soon as possible, as a consequence: - python2-only packages depending on this should have a bug opened and blocking bug #703754 to allow us to track upstream progress on python3 porting. As a consequence, if the package upstream is dead or not planning to port to python3 ever, it should be treecleaned instead of adding a dependency on this package. - python3 packages also needing python2 support. During a transition period, it's possible that we will need to temporally allow some packages (usually libraries) to support python2 until other reverse deps of that libs are handled. You should then open a bug report blocking bug #703756 to follow the progress on porting them completely to python3. As a consequence, if your package supports both, you must try to simply remove python2 support over depending on this package, while only adding a dep on numpy-python2 if it is really hard to handle all reverse deps immediately. In that case, a bug report need to be opened as explained. Closes: https://bugs.gentoo.org/703240 Package-Manager: Portage-2.3.82, Repoman-2.3.20 Signed-off-by: Pacho Ramos --- dev-python/numpy-python2/Manifest | 4 + .../files/numpy-1.15.4-no-hardcode-blas.patch | 76 ++++++++ dev-python/numpy-python2/metadata.xml | 7 + .../numpy-python2/numpy-python2-1.16.5.ebuild | 169 ++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 dev-python/numpy-python2/Manifest create mode 100644 dev-python/numpy-python2/files/numpy-1.15.4-no-hardcode-blas.patch create mode 100644 dev-python/numpy-python2/metadata.xml create mode 100644 dev-python/numpy-python2/numpy-python2-1.16.5.ebuild diff --git a/dev-python/numpy-python2/Manifest b/dev-python/numpy-python2/Manifest new file mode 100644 index 000000000000..5d6981015792 --- /dev/null +++ b/dev-python/numpy-python2/Manifest @@ -0,0 +1,4 @@ +DIST numpy-1.16.5.zip 5138208 BLAKE2B f5511650e66939a6ce21cfad7874aecdeb6c07a70b32419a808956e42c7819d82bb364f1632da91b4d8a5237001c8ae3cbdcac10651fa0acca9558bdeafb5437 SHA512 6dd790ff57fdb7e7b0bddb47ea2b70b2667edefe632548ec68934e12a16af4a51bed9726e495c4993aad4c448dc4a204d0a087577d43dcfc9fa0164eb1d4b898 +DIST numpy-html-1.16.4.zip 12097069 BLAKE2B db1f897342fbc80a761fbaee7b0eee3761dbfa04ef6c46a137bb2392caaec8256580467ce06498cceeada2639151a1ec75dafab484d64cb897c008727d6d32a5 SHA512 c44c5e1e0cb22f9dd46fe9e302030292d85e567456178fee296746a414271634e906509fb6665ac63fbfebdd13c5383574f0aa47b4fbc639063da31addc3316a +DIST numpy-ref-1.16.4.pdf 5176571 BLAKE2B 9a875ebd1473b241d463d810a6d191581aef961158f2f82959671b554ace3ad482795e4f3e1cb7dd4632cff926c1e864c675a7624fb0f4e4f297948bf50f0564 SHA512 983ba0f34a70c011886bdbc9fd8f3f75a3a967ca29217acc76fa46e7da391296a5628c9a557ac76efb393271abfb8ee4f376d401c1cc1e5c30622e54b9325d09 +DIST numpy-user-1.16.4.pdf 596203 BLAKE2B da3ad1f0ec1c965d20656f73a970911cbb58efa73a5df89e2e6485e0dd763f483e35eea1395ac919bf35d496fb216cee954fc5d31edebc1796a24a2a7a2d12b9 SHA512 3083008547213bfa98ffa5cd8e2cea13f6947f42d83aef61502a2a852b0d5f27d727c76b42d281d7a2f4f76c78e88b12ee3d9b164b39fe1f0213ace7097357d6 diff --git a/dev-python/numpy-python2/files/numpy-1.15.4-no-hardcode-blas.patch b/dev-python/numpy-python2/files/numpy-1.15.4-no-hardcode-blas.patch new file mode 100644 index 000000000000..979b56bd6dc5 --- /dev/null +++ b/dev-python/numpy-python2/files/numpy-1.15.4-no-hardcode-blas.patch @@ -0,0 +1,76 @@ +diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py +index 65d7de316..a85640d30 100644 +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -364,29 +364,7 @@ def get_info(name, notfound_action=0): + 1 - display warning message + 2 - raise error + """ +- cl = {'atlas': atlas_info, # use lapack_opt or blas_opt instead +- 'atlas_threads': atlas_threads_info, # ditto +- 'atlas_blas': atlas_blas_info, +- 'atlas_blas_threads': atlas_blas_threads_info, +- 'lapack_atlas': lapack_atlas_info, # use lapack_opt instead +- 'lapack_atlas_threads': lapack_atlas_threads_info, # ditto +- 'atlas_3_10': atlas_3_10_info, # use lapack_opt or blas_opt instead +- 'atlas_3_10_threads': atlas_3_10_threads_info, # ditto +- 'atlas_3_10_blas': atlas_3_10_blas_info, +- 'atlas_3_10_blas_threads': atlas_3_10_blas_threads_info, +- 'lapack_atlas_3_10': lapack_atlas_3_10_info, # use lapack_opt instead +- 'lapack_atlas_3_10_threads': lapack_atlas_3_10_threads_info, # ditto +- 'mkl': mkl_info, +- # openblas which may or may not have embedded lapack +- 'openblas': openblas_info, # use blas_opt instead +- # openblas with embedded lapack +- 'openblas_lapack': openblas_lapack_info, # use blas_opt instead +- 'openblas_clapack': openblas_clapack_info, # use blas_opt instead +- 'blis': blis_info, # use blas_opt instead +- 'lapack_mkl': lapack_mkl_info, # use lapack_opt instead +- 'blas_mkl': blas_mkl_info, # use blas_opt instead +- 'accelerate': accelerate_info, # use blas_opt instead +- 'x11': x11_info, ++ cl = {'x11': x11_info, + 'fft_opt': fft_opt_info, + 'fftw': fftw_info, + 'fftw2': fftw2_info, +@@ -731,10 +709,7 @@ class system_info(object): + return [b for b in [a.strip() for a in libs.split(',')] if b] + + def get_libraries(self, key='libraries'): +- if hasattr(self, '_lib_names'): +- return self.get_libs(key, default=self._lib_names) +- else: +- return self.get_libs(key, '') ++ return self.get_libs(key, '') + + def library_extensions(self): + c = customized_ccompiler() +@@ -1685,7 +1660,7 @@ class blas_info(system_info): + lib = self.has_cblas(info) + if lib is not None: + info['language'] = 'c' +- info['libraries'] = [lib] ++ info['libraries'] = lib + info['define_macros'] = [('HAVE_CBLAS', None)] + self.set_info(**info) + +@@ -1717,16 +1692,16 @@ class blas_info(system_info): + # check for cblas lib, and if not present check for blas lib. + try: + c.link_executable(obj, os.path.join(tmpdir, "a.out"), +- libraries=["cblas"], ++ libraries=info["libraries"], + library_dirs=info['library_dirs'], + extra_postargs=info.get('extra_link_args', [])) +- res = "cblas" ++ res = info["libraries"] + except distutils.ccompiler.LinkError: + c.link_executable(obj, os.path.join(tmpdir, "a.out"), + libraries=["blas"], + library_dirs=info['library_dirs'], + extra_postargs=info.get('extra_link_args', [])) +- res = "blas" ++ res = ["blas"] + except distutils.ccompiler.CompileError: + res = None + finally: diff --git a/dev-python/numpy-python2/metadata.xml b/dev-python/numpy-python2/metadata.xml new file mode 100644 index 000000000000..020b40648ee8 --- /dev/null +++ b/dev-python/numpy-python2/metadata.xml @@ -0,0 +1,7 @@ + + + + + pacho@gentoo.org + + diff --git a/dev-python/numpy-python2/numpy-python2-1.16.5.ebuild b/dev-python/numpy-python2/numpy-python2-1.16.5.ebuild new file mode 100644 index 000000000000..caad08decf1d --- /dev/null +++ b/dev-python/numpy-python2/numpy-python2-1.16.5.ebuild @@ -0,0 +1,169 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +PYTHON_COMPAT=( python2_7 ) +PYTHON_REQ_USE="threads(+)" + +FORTRAN_NEEDED=lapack + +inherit distutils-r1 flag-o-matic fortran-2 multiprocessing toolchain-funcs + +MY_PN="numpy" +DOC_PV="1.16.4" + +DESCRIPTION="Fast array and numerical python library" +HOMEPAGE="https://www.numpy.org" +SRC_URI=" + mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" +IUSE="doc lapack test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !> site.cfg <<-EOF || die + [blas] + include_dirs = $(pc_incdir cblas):${incdir} + library_dirs = $(pc_libdir cblas blas):${libdir} + blas_libs = $(pc_libs cblas blas) + [lapack] + library_dirs = $(pc_libdir lapack):${libdir} + lapack_libs = $(pc_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 + + local python_makeopts_jobs="" + python_is_python3 || python_makeopts_jobs="-j $(makeopts_jobs)" + distutils-r1_python_compile \ + ${python_makeopts_jobs} \ + ${NUMPY_FCONFIG} +} + +python_test() { + distutils_install_for_testing --single-version-externally-managed \ + --record "${TMPDIR}/record.txt" ${NUMPY_FCONFIG} + + cd "${TMPDIR}" || die + + "${EPYTHON}" -c " +import numpy, sys +r = numpy.test(label='full', verbose=3) +sys.exit(0 if r else 1)" || die "Tests fail with ${EPYTHON}" +} + +python_install() { + distutils-r1_python_install ${NUMPY_FCONFIG} + python_optimize +} + +python_install_all() { + local DOCS=( THANKS.txt ) + + if use doc; then + local HTML_DOCS=( "${WORKDIR}"/html/. ) + DOCS+=( "${DISTDIR}"/${MY_PN}-{user,ref}-${DOC_PV}.pdf ) + fi + + distutils-r1_python_install_all + + # Let latest version to provide f2py link + rm "${ED}"/usr/bin/f2py || die +} -- 2.26.2