summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2023-10-05 16:04:48 +0200
committerMichał Górny <mgorny@gentoo.org>2023-10-05 16:08:32 +0200
commit40140c90b36e89419b7e2f4d85c17f267adf5fee (patch)
tree3e234eb46c96774840e02f17975baa51877b5a14 /dev-python/tables
parentapp-arch/rar: add 6.24 (diff)
downloadgentoo-40140c90b36e89419b7e2f4d85c17f267adf5fee.tar.gz
gentoo-40140c90b36e89419b7e2f4d85c17f267adf5fee.tar.bz2
gentoo-40140c90b36e89419b7e2f4d85c17f267adf5fee.zip
Rename dev-python/{pytables → tables}
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/tables')
-rw-r--r--dev-python/tables/Manifest1
-rw-r--r--dev-python/tables/files/tables-3.8.0-blosc2.patch30
-rw-r--r--dev-python/tables/files/tables-3.8.0-cython3.patch40
-rw-r--r--dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch69
-rw-r--r--dev-python/tables/metadata.xml27
-rw-r--r--dev-python/tables/tables-3.8.0-r3.ebuild84
6 files changed, 251 insertions, 0 deletions
diff --git a/dev-python/tables/Manifest b/dev-python/tables/Manifest
new file mode 100644
index 000000000000..63cd4acb139e
--- /dev/null
+++ b/dev-python/tables/Manifest
@@ -0,0 +1 @@
+DIST tables-3.8.0.tar.gz 8014052 BLAKE2B 28d120ad609ebc9ae8cd97286bb3fb9c484bd8a179edcf0de1b96e4400b7a21b4db835d94fae3aaee84924bd46b84b84da12c538b39517362d805651e7aa3aef SHA512 1616c00787a2e88ff3dc2aebe3a1b2ad428b5a8ea48fc94058b49c509f1c040b540b3f62551b16b3246d2fed58e0b33443cbdaaf1dfcba5a6eead5f3e8028029
diff --git a/dev-python/tables/files/tables-3.8.0-blosc2.patch b/dev-python/tables/files/tables-3.8.0-blosc2.patch
new file mode 100644
index 000000000000..59403cdec12d
--- /dev/null
+++ b/dev-python/tables/files/tables-3.8.0-blosc2.patch
@@ -0,0 +1,30 @@
+From 99a7f336635aaeb666ea8dc791743177a030dc18 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 28 Dec 2022 15:53:08 +0100
+Subject: [PATCH] Workaround blosc2 detection via blosc2 package
+
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 966be028..2708deb9 100755
+--- a/setup.py
++++ b/setup.py
+@@ -262,11 +262,11 @@ if __name__ == "__main__":
+
+ debug = "--debug" in sys.argv
+
+- blosc2_inc, blosc2_lib = get_blosc2_directories()
++ blosc2_inc, blosc2_lib = "", ""
+
+ # Global variables
+ lib_dirs = [blosc2_lib]
+- inc_dirs = [Path("hdf5-blosc/src"), Path("hdf5-blosc2/src"), blosc2_inc]
++ inc_dirs = [Path("hdf5-blosc/src"), Path("hdf5-blosc2/src")]
+ optional_libs = []
+ copy_libs = []
+
+--
+2.39.0
+
diff --git a/dev-python/tables/files/tables-3.8.0-cython3.patch b/dev-python/tables/files/tables-3.8.0-cython3.patch
new file mode 100644
index 000000000000..9ad0b72d224a
--- /dev/null
+++ b/dev-python/tables/files/tables-3.8.0-cython3.patch
@@ -0,0 +1,40 @@
+From a70e36f0b0d4fb15b0b50e7ca513c4e4452767cc Mon Sep 17 00:00:00 2001
+From: Matus Valo <matusvalo@gmail.com>
+Date: Wed, 15 Mar 2023 22:49:07 +0100
+Subject: [PATCH] Fix build errors when compiled using cython 3.0.0b1.
+
+---
+ pyproject.toml | 2 +-
+ tables/tableextension.pyx | 2 +-
+ tables/utilsextension.pyx | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tables/tableextension.pyx b/tables/tableextension.pyx
+index 8f3bb01b..4a50c6ab 100644
+--- a/tables/tableextension.pyx
++++ b/tables/tableextension.pyx
+@@ -37,7 +37,7 @@ from .utils import SizeType
+ from .utilsextension cimport get_native_type, cstr_to_pystr
+
+ # numpy functions & objects
+-from hdf5extension cimport Leaf
++from .hdf5extension cimport Leaf
+ from cpython cimport PyErr_Clear
+ from libc.stdio cimport snprintf
+ from libc.stdlib cimport malloc, free
+diff --git a/tables/utilsextension.pyx b/tables/utilsextension.pyx
+index 5b16dcd3..664e1ea5 100644
+--- a/tables/utilsextension.pyx
++++ b/tables/utilsextension.pyx
+@@ -344,7 +344,7 @@ except ImportError:
+ #---------------------------------------------------------------------
+
+ # Error handling helpers
+-cdef herr_t e_walk_cb(unsigned n, const H5E_error_t *err, void *data) with gil:
++cdef herr_t e_walk_cb(unsigned n, const H5E_error_t *err, void *data) noexcept with gil:
+ cdef object bt = <object>data # list
+ #cdef char major_msg[256]
+ #cdef char minor_msg[256]
+--
+2.40.1
+
diff --git a/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch b/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch
new file mode 100644
index 000000000000..2843914f4a87
--- /dev/null
+++ b/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch
@@ -0,0 +1,69 @@
+https://github.com/PyTables/PyTables/pull/1013
+
+From 9d2487eb53af940de3b5c79200c9f4c2b90f51f2 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Mon, 3 Apr 2023 02:07:47 +0100
+Subject: [PATCH] Handle py-cpuinfo not being installed
+
+Fallback gracefully if py-cpuinfo isn't installed. We already handle this in
+setup.py but we need to avoid calling it in leaf.py too.
+
+py-cpuinfo isn't available on all platforms and PyTables is needed to run
+the test suite for some software, so we need to be able to run PyTables
+in places where py-cpuinfo isn't yet ported.
+
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/tables/leaf.py
++++ b/tables/leaf.py
+@@ -4,7 +4,11 @@ import warnings
+ import math
+
+ import numpy as np
+-import cpuinfo
++try:
++ import cpuinfo
++ missing_cpuinfo = False
++except ImportError:
++ missing_cpuinfo = True
+
+ from .flavor import (check_flavor, internal_flavor, toarray,
+ alias_map as flavor_alias_map)
+@@ -336,20 +340,21 @@ class Leaf(Node):
+ # Use a decent default value for chunksize
+ chunksize *= 16
+ # Now, go explore the L3 size and try to find a smarter chunksize
+- cpu_info = cpuinfo.get_cpu_info()
+- if 'l3_cache_size' in cpu_info:
+- # In general, is a good idea to set the chunksize equal to L3
+- l3_cache_size = cpu_info['l3_cache_size']
+- # cpuinfo sometimes returns cache sizes as strings (like,
+- # "4096 KB"), so refuse the temptation to guess and use the
+- # value only when it is an actual int.
+- # Also, sometimes cpuinfo does not return a correct L3 size;
+- # so in general, enforcing L3 > L2 is a good sanity check.
+- l2_cache_size = cpu_info.get('l2_cache_size', "Not found")
+- if (type(l3_cache_size) is int and
+- type(l2_cache_size) is int and
+- l3_cache_size > l2_cache_size):
+- chunksize = l3_cache_size
++ if not missing_cpuinfo:
++ cpu_info = cpuinfo.get_cpu_info()
++ if 'l3_cache_size' in cpu_info:
++ # In general, is a good idea to set the chunksize equal to L3
++ l3_cache_size = cpu_info['l3_cache_size']
++ # cpuinfo sometimes returns cache sizes as strings (like,
++ # "4096 KB"), so refuse the temptation to guess and use the
++ # value only when it is an actual int.
++ # Also, sometimes cpuinfo does not return a correct L3 size;
++ # so in general, enforcing L3 > L2 is a good sanity check.
++ l2_cache_size = cpu_info.get('l2_cache_size', "Not found")
++ if (type(l3_cache_size) is int and
++ type(l2_cache_size) is int and
++ l3_cache_size > l2_cache_size):
++ chunksize = l3_cache_size
+ # In Blosc2, the chunksize cannot be larger than 2 GB - BLOSC2_MAX_BUFFERSIZE
+ if chunksize > 2**31 - 32:
+ chunksize = 2**31 - 32
+--
+2.40.0
+
diff --git a/dev-python/tables/metadata.xml b/dev-python/tables/metadata.xml
new file mode 100644
index 000000000000..2fea045e5982
--- /dev/null
+++ b/dev-python/tables/metadata.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>sci@gentoo.org</email>
+ <name>Gentoo Science Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ PyTables is a hierarchical database package designed to efficently
+ manage very large amounts of data. PyTables is built on top of the
+ HDF5 library and the NumPy package. It features an object-oriented
+ interface that, combined with natural naming and C-code generated
+ from Pyrex sources, makes it a fast, yet extremely easy to use tool
+ for interactively save and retrieve large amounts of data.
+ </longdescription>
+ <use>
+ <flag name="cpudetection">Enables runtime CPU detection (useful for bindist, compatibility on other CPUs)</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">PyTables/PyTables</remote-id>
+ <remote-id type="pypi">tables</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-python/tables/tables-3.8.0-r3.ebuild b/dev-python/tables/tables-3.8.0-r3.ebuild
new file mode 100644
index 000000000000..cdc7b5c4f78c
--- /dev/null
+++ b/dev-python/tables/tables-3.8.0-r3.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+PYPI_PN="tables"
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 prefix pypi
+
+DESCRIPTION="Hierarchical datasets for Python"
+HOMEPAGE="
+ https://www.pytables.org/
+ https://github.com/PyTables/PyTables/
+ https://pypi.org/project/tables/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm arm64 ~hppa ~ia64 ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
+IUSE="+cpudetection examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ app-arch/bzip2:0=
+ app-arch/lz4:0=
+ >=app-arch/zstd-1.0.0:=
+ >=dev-libs/c-blosc-1.11.1:0=
+ dev-libs/c-blosc2:=
+ dev-libs/lzo:2=
+ >=dev-python/numpy-1.19[${PYTHON_USEDEP}]
+ >=sci-libs/hdf5-1.8.4:=
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/numexpr-2.6.2[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+ >=dev-python/cython-0.21[${PYTHON_USEDEP}]
+ virtual/pkgconfig
+ cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
+ test? (
+ ${RDEPEND}
+ )
+"
+
+python_prepare_all() {
+ local PATCHES=(
+ "${FILESDIR}"/${P}-blosc2.patch
+ "${FILESDIR}"/${P}-optional-cpuinfo.patch
+ "${FILESDIR}"/${P}-cython3.patch
+ )
+
+ export PYTABLES_NO_EMBEDDED_LIBS=1
+ export USE_PKGCONFIG=TRUE
+
+ rm -r c-blosc/{blosc,internal-complibs} || die
+ rm tables/libblosc2.so || die
+ sed -i -e '/blosc2/d' requirements.txt || die
+ hprefixify -w '/prefixes =/' setup.py
+ distutils-r1_python_prepare_all
+}
+
+python_compile() {
+ distutils-r1_python_compile -j1
+}
+
+python_test() {
+ cd "${BUILD_DIR}"/lib* || die
+ "${EPYTHON}" tables/tests/test_all.py -v || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r contrib examples
+ docompress -x /usr/share/doc/${PF}/{contrib,examples}
+ fi
+}