package/python-scipy: new package
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com> [Arnout: - Indent hash file with two spaces. - Bump to 1.7.3 to fix build failure with recent GCC. - Get from github instead of PyPI. - Add host-meson and host-python-pythran dependencies. - Properly propagate Config.in dependencies. - Correct usage of BR2_INSTALL_LIBSTDCPP symbol. - Remove F77, no longer used. ] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> [Guillaume: - -lnpymath: npymath.ini localization problem - -lnpyrandom resolution problem - fix legal-info for latest version LICENSE.txt - zlib is a scipy::io module runtime requirement - update serie for scipy 1.8.1 (latest) ] Signed-off-by: Guillaume W. Bres <guillaume.bressaix@gmail.com> [Thomas: - add runtime test - drop dependency on OpenBLAS, which is not needed in a minimal configuration - remove PYTHON_SCIPY_NPY_PKG_CONFIG_PATH logic as it is no longer needed ] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
bd9fa0e836
commit
e10431db29
@ -1185,10 +1185,13 @@ F: package/python-beniget/
|
||||
F: package/python-gast/
|
||||
F: package/python-pybind/
|
||||
F: package/python-pythran/
|
||||
F: package/python-scipy/
|
||||
F: package/reaver/
|
||||
F: support/testing/tests/package/br2-external/python-pybind
|
||||
F: support/testing/tests/package/sample_python_pybind.py
|
||||
F: support/testing/tests/package/sample_python_scipy.py
|
||||
F: support/testing/tests/package/test_python_pybind.py
|
||||
F: support/testing/tests/package/test_python_scipy.py
|
||||
|
||||
N: Gustavo Heinz <gustavo@gsthnz.com>
|
||||
F: package/python-m2crypto/
|
||||
@ -1312,6 +1315,9 @@ F: configs/orangepi_win_defconfig
|
||||
F: configs/orangepi_zero_plus2_defconfig
|
||||
F: configs/pine64_defconfig
|
||||
F: configs/pine64_sopine_defconfig
|
||||
F: package/python-scipy/
|
||||
F: support/testing/tests/package/sample_python_scipy.py
|
||||
F: support/testing/tests/package/test_python_scipy.py
|
||||
|
||||
N: James Hilliard <james.hilliard1@gmail.com>
|
||||
F: package/apcupsd/
|
||||
|
@ -1229,6 +1229,7 @@ menu "External python modules"
|
||||
source "package/python-scandir/Config.in"
|
||||
source "package/python-scapy/Config.in"
|
||||
source "package/python-schedule/Config.in"
|
||||
source "package/python-scipy/Config.in"
|
||||
source "package/python-sdnotify/Config.in"
|
||||
source "package/python-secretstorage/Config.in"
|
||||
source "package/python-see/Config.in"
|
||||
|
25
package/python-scipy/Config.in
Normal file
25
package/python-scipy/Config.in
Normal file
@ -0,0 +1,25 @@
|
||||
config BR2_PACKAGE_PYTHON_SCIPY
|
||||
bool "python-scipy"
|
||||
depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy
|
||||
depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS # lapack
|
||||
depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy
|
||||
depends on BR2_TOOLCHAIN_HAS_FORTRAN # lapack
|
||||
depends on BR2_INSTALL_LIBSTDCPP
|
||||
select BR2_PACKAGE_LAPACK
|
||||
select BR2_PACKAGE_ZLIB # runtime scipy::io
|
||||
select BR2_PACKAGE_PYTHON_NUMPY # runtime
|
||||
select BR2_PACKAGE_PYTHON_PYBIND
|
||||
help
|
||||
The SciPy library is one of the core packages that make up the
|
||||
SciPy stack. It provides many user-friendly and efficient
|
||||
numerical routines such as routines for numerical integration,
|
||||
interpolation, optimization, linear algebra and statistics.
|
||||
|
||||
https://www.scipy.org/scipylib/
|
||||
|
||||
comment "python-scipy needs toolchain w/ fortran and c++ and glibc or musl"
|
||||
depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS
|
||||
depends on !BR2_TOOLCHAIN_HAS_FORTRAN || \
|
||||
!BR2_INSTALL_LIBSTDCPP || \
|
||||
(!BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_USES_MUSL)
|
9
package/python-scipy/python-scipy.hash
Normal file
9
package/python-scipy/python-scipy.hash
Normal file
@ -0,0 +1,9 @@
|
||||
# Locally generated
|
||||
sha256 0140dd24d14ce194fdb3df496c2190f0896ca84ac98bf5d69c3b3fb7bde1a1e9 scipy-1.8.1.tar.xz
|
||||
sha256 96599f8ec69a2cc609265eed13fc75090aacb28742260e55ce623788a33da19c LICENSE.txt
|
||||
sha256 37e64a498894ac7c3b070023e3689e954a8ecf8a23b90968d09a455f1b4f7b35 scipy/linalg/src/lapack_deprecations/LICENSE
|
||||
sha256 606209a000716c5f66e33e180ce08434b96ed17db4975ab9723c6b5fbcc89609 scipy/ndimage/LICENSE.txt
|
||||
sha256 3df9207af2fdb861af0ae3b22026f163b9bcfab4e525dc4943afe2ffa3f77624 scipy/optimize/tnc/LICENSE
|
||||
sha256 f0cedf52503b2d42b83411a0a16e6fefac346dfad8fddc66f50050150123470c scipy/sparse/linalg/_dsolve/SuperLU/License.txt
|
||||
sha256 0926566f9f406178d1214f8cc796e166b1213dd7c05e0c5b461a8b8ac9e50bbe scipy/sparse/linalg/_eigen/arpack/ARPACK/COPYING
|
||||
sha256 34db0c0c4f931861d720555c9cd7a2e228d1290ba29af0f2ee80c41bb2038afb scipy/spatial/qhull_src/COPYING.txt
|
56
package/python-scipy/python-scipy.mk
Normal file
56
package/python-scipy/python-scipy.mk
Normal file
@ -0,0 +1,56 @@
|
||||
################################################################################
|
||||
#
|
||||
# python-scipy
|
||||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_SCIPY_VERSION = 1.8.1
|
||||
PYTHON_SCIPY_SOURCE = scipy-$(PYTHON_SCIPY_VERSION).tar.xz
|
||||
PYTHON_SCIPY_SITE = https://github.com/scipy/scipy/releases/download/v$(PYTHON_SCIPY_VERSION)
|
||||
PYTHON_SCIPY_LICENSE = \
|
||||
BSD-3-Clause, \
|
||||
BSD-2-Clause, \
|
||||
BSD, \
|
||||
BSD-Style, \
|
||||
MIT, \
|
||||
Qhull
|
||||
PYTHON_SCIPY_LICENSE_FILES = \
|
||||
LICENSE.txt \
|
||||
scipy/linalg/src/lapack_deprecations/LICENSE \
|
||||
scipy/ndimage/LICENSE.txt \
|
||||
scipy/optimize/tnc/LICENSE \
|
||||
scipy/sparse/linalg/_dsolve/SuperLU/License.txt \
|
||||
scipy/sparse/linalg/_eigen/arpack/ARPACK/COPYING \
|
||||
scipy/spatial/qhull_src/COPYING.txt
|
||||
PYTHON_SCIPY_DEPENDENCIES += \
|
||||
host-python-numpy \
|
||||
host-python-pythran \
|
||||
zlib \
|
||||
lapack \
|
||||
python-numpy \
|
||||
python-pybind
|
||||
PYTHON_SCIPY_INSTALL_STAGING = YES
|
||||
|
||||
PYTHON_SCIPY_SETUP_TYPE = setuptools
|
||||
PYTHON_SCIPY_BUILD_OPTS = config_fc --fcompiler=gnu95
|
||||
|
||||
PYTHON_SCIPY_LDFLAGS = $(TARGET_LDFLAGS) -shared \
|
||||
-L$(PYTHON3_PATH)/site-packages/numpy/core/lib
|
||||
# -lnpyrandom localization
|
||||
PYTHON_SCIPY_LDFLAGS += \
|
||||
-L$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/random/lib
|
||||
|
||||
PYTHON_SCIPY_ENV = \
|
||||
F90=$(TARGET_FC) \
|
||||
LDFLAGS="$(PYTHON_SCIPY_LDFLAGS)"
|
||||
|
||||
# Provide system configuration options to numpy distutils extensions, telling
|
||||
# to find all include files and libraries in staging directory.
|
||||
define PYTHON_SCIPY_CONFIGURE_CMDS
|
||||
-rm -f $(@D)/site.cfg
|
||||
echo "[DEFAULT]" >> $(@D)/site.cfg
|
||||
echo "library_dirs = $(STAGING_DIR)/usr/lib" >> $(@D)/site.cfg
|
||||
echo "include_dirs = $(STAGING_DIR)/usr/include" >> $(@D)/site.cfg
|
||||
endef
|
||||
|
||||
$(eval $(python-package))
|
12
support/testing/tests/package/sample_python_scipy.py
Normal file
12
support/testing/tests/package/sample_python_scipy.py
Normal file
@ -0,0 +1,12 @@
|
||||
import numpy
|
||||
import scipy.special
|
||||
import scipy.integrate
|
||||
|
||||
cb = scipy.special.cbrt([27, 64])
|
||||
assert((cb == numpy.array([3., 4.])).all())
|
||||
|
||||
com = scipy.special.comb(5, 2, exact = False, repetition=True)
|
||||
assert(com == 15.0)
|
||||
|
||||
t = scipy.integrate.trapezoid([5,8,10])
|
||||
assert(t == 15.5)
|
30
support/testing/tests/package/test_python_scipy.py
Normal file
30
support/testing/tests/package/test_python_scipy.py
Normal file
@ -0,0 +1,30 @@
|
||||
import os
|
||||
|
||||
from tests.package.test_python import TestPythonPackageBase
|
||||
|
||||
|
||||
class TestPythonPy3SciPy(TestPythonPackageBase):
|
||||
__test__ = True
|
||||
# We can't use the base configuration, as we need a glibc
|
||||
# toolchain for scipy
|
||||
config = \
|
||||
"""
|
||||
BR2_arm=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y
|
||||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_PYTHON_SCIPY=y
|
||||
BR2_TARGET_ROOTFS_EXT2=y
|
||||
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
"""
|
||||
sample_scripts = ["tests/package/sample_python_scipy.py"]
|
||||
|
||||
def login(self):
|
||||
ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2")
|
||||
self.emulator.boot(arch="armv5",
|
||||
kernel="builtin",
|
||||
options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file],
|
||||
kernel_cmdline=["rootwait", "root=/dev/sda"])
|
||||
self.emulator.login()
|
Loading…
Reference in New Issue
Block a user