!25 [sync] PR-14: fix build error due to hdf5 upgrade
From: @openeuler-sync-bot Reviewed-by: @znzjugod Signed-off-by: @znzjugod
This commit is contained in:
commit
adbf4d5d40
151
Add-minimal-except-definitions-for-Cython-3-compatib.patch
Normal file
151
Add-minimal-except-definitions-for-Cython-3-compatib.patch
Normal file
@ -0,0 +1,151 @@
|
||||
From c0a7b9848eedbd3b64c248ed579ee629903231f1 Mon Sep 17 00:00:00 2001
|
||||
From: David Hoese <david.hoese@ssec.wisc.edu>
|
||||
Date: Tue, 28 Nov 2023 09:57:33 -0600
|
||||
Subject: [PATCH] Add minimal except definitions for Cython 3 compatibility
|
||||
|
||||
---
|
||||
h5py/api_types_hdf5.pxd | 38 +++++++++++++++++++-------------------
|
||||
h5py/h5fd.pyx | 36 ++++++++++++++++++++++++++----------
|
||||
2 files changed, 45 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/h5py/api_types_hdf5.pxd b/h5py/api_types_hdf5.pxd
|
||||
index a1369e8a..0523b2fe 100644
|
||||
--- a/h5py/api_types_hdf5.pxd
|
||||
+++ b/h5py/api_types_hdf5.pxd
|
||||
@@ -259,25 +259,25 @@ cdef extern from "hdf5.h":
|
||||
size_t fapl_size
|
||||
void * (*fapl_get)(H5FD_t *file) except *
|
||||
void * (*fapl_copy)(const void *fapl) except *
|
||||
- herr_t (*fapl_free)(void *fapl) except *
|
||||
+ herr_t (*fapl_free)(void *fapl) except -1
|
||||
size_t dxpl_size
|
||||
void * (*dxpl_copy)(const void *dxpl)
|
||||
herr_t (*dxpl_free)(void *dxpl)
|
||||
H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr) except *
|
||||
- herr_t (*close)(H5FD_t *file) except *
|
||||
+ herr_t (*close)(H5FD_t *file) except -1
|
||||
int (*cmp)(const H5FD_t *f1, const H5FD_t *f2)
|
||||
herr_t (*query)(const H5FD_t *f1, unsigned long *flags)
|
||||
herr_t (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map)
|
||||
haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
|
||||
herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
|
||||
- haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) except *
|
||||
- herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) except *
|
||||
- haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) except *
|
||||
+ haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
+ herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
|
||||
+ haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
|
||||
herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
|
||||
herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
|
||||
- herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except *
|
||||
- herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except *
|
||||
+ herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
|
||||
+ herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
|
||||
herr_t (*lock)(H5FD_t *file, hbool_t rw)
|
||||
herr_t (*unlock)(H5FD_t *file)
|
||||
H5FD_mem_t fl_map[<int>H5FD_MEM_NTYPES]
|
||||
@@ -295,27 +295,27 @@ cdef extern from "hdf5.h":
|
||||
herr_t (*sb_encode)(H5FD_t *file, char *name, unsigned char *p)
|
||||
herr_t (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p)
|
||||
size_t fapl_size
|
||||
- void * (*fapl_get)(H5FD_t *file)
|
||||
- void * (*fapl_copy)(const void *fapl)
|
||||
- herr_t (*fapl_free)(void *fapl)
|
||||
+ void * (*fapl_get)(H5FD_t *file) except *
|
||||
+ void * (*fapl_copy)(const void *fapl) except *
|
||||
+ herr_t (*fapl_free)(void *fapl) except -1
|
||||
size_t dxpl_size
|
||||
void * (*dxpl_copy)(const void *dxpl)
|
||||
herr_t (*dxpl_free)(void *dxpl)
|
||||
- H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)
|
||||
- herr_t (*close)(H5FD_t *file)
|
||||
+ H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr) except *
|
||||
+ herr_t (*close)(H5FD_t *file) except -1
|
||||
int (*cmp)(const H5FD_t *f1, const H5FD_t *f2)
|
||||
herr_t (*query)(const H5FD_t *f1, unsigned long *flags)
|
||||
herr_t (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map)
|
||||
haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
|
||||
herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
|
||||
- haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type)
|
||||
- herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr)
|
||||
- haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type)
|
||||
+ haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
+ herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
|
||||
+ haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
|
||||
- herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer)
|
||||
- herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer)
|
||||
- herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
|
||||
- herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
|
||||
+ herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
|
||||
+ herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
|
||||
+ herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
|
||||
+ herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
|
||||
herr_t (*lock)(H5FD_t *file, hbool_t rw)
|
||||
herr_t (*unlock)(H5FD_t *file)
|
||||
H5FD_mem_t fl_map[<int>H5FD_MEM_NTYPES]
|
||||
diff --git a/h5py/h5fd.pyx b/h5py/h5fd.pyx
|
||||
index f1b4aade..5e2ea9cd 100644
|
||||
--- a/h5py/h5fd.pyx
|
||||
+++ b/h5py/h5fd.pyx
|
||||
@@ -151,7 +151,7 @@ cdef herr_t H5FD_fileobj_set_eoa(H5FD_fileobj_t *f, H5FD_mem_t type, haddr_t add
|
||||
f.eoa = addr
|
||||
return 0
|
||||
|
||||
-cdef haddr_t H5FD_fileobj_get_eof(const H5FD_fileobj_t *f, H5FD_mem_t type) except -1 with gil: # HADDR_UNDEF
|
||||
+cdef haddr_t H5FD_fileobj_get_eof(const H5FD_fileobj_t *f, H5FD_mem_t type) noexcept with gil: # HADDR_UNDEF
|
||||
(<object>f.fileobj).seek(0, libc.stdio.SEEK_END)
|
||||
return (<object>f.fileobj).tell()
|
||||
|
||||
@@ -191,22 +191,38 @@ cdef herr_t H5FD_fileobj_flush(H5FD_fileobj_t *f, hid_t dxpl, hbool_t closing) e
|
||||
cdef H5FD_class_t info
|
||||
memset(&info, 0, sizeof(info))
|
||||
|
||||
+# Cython doesn't support "except X" in casting definition currently
|
||||
+ctypedef herr_t (*file_free_func_ptr)(void *) except -1
|
||||
+
|
||||
+ctypedef herr_t (*file_close_func_ptr)(H5FD_t *) except -1
|
||||
+ctypedef haddr_t (*file_get_eoa_func_ptr)(const H5FD_t *, H5FD_mem_t) noexcept
|
||||
+ctypedef herr_t (*file_set_eof_func_ptr)(H5FD_t *, H5FD_mem_t, haddr_t) noexcept
|
||||
+ctypedef haddr_t (*file_get_eof_func_ptr)(const H5FD_t *, H5FD_mem_t) noexcept
|
||||
+ctypedef herr_t (*file_read_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, void*) except -1
|
||||
+ctypedef herr_t (*file_write_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, const void*) except -1
|
||||
+ctypedef herr_t (*file_truncate_func_ptr)(H5FD_t *, hid_t, hbool_t) except -1
|
||||
+ctypedef herr_t (*file_flush_func_ptr)(H5FD_t *, hid_t, hbool_t) except -1
|
||||
+
|
||||
+
|
||||
info.name = 'fileobj'
|
||||
info.maxaddr = libc.stdint.SIZE_MAX - 1
|
||||
info.fc_degree = H5F_CLOSE_WEAK
|
||||
info.fapl_size = sizeof(PyObject *)
|
||||
info.fapl_get = <void *(*)(H5FD_t *)>H5FD_fileobj_fapl_get
|
||||
info.fapl_copy = <void *(*)(const void *)>H5FD_fileobj_fapl_copy
|
||||
-info.fapl_free = <herr_t (*)(void *)>H5FD_fileobj_fapl_free
|
||||
+
|
||||
+info.fapl_free = <file_free_func_ptr>H5FD_fileobj_fapl_free
|
||||
+
|
||||
info.open = <H5FD_t *(*)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)>H5FD_fileobj_open
|
||||
-info.close = <herr_t (*)(H5FD_t *)>H5FD_fileobj_close
|
||||
-info.get_eoa = <haddr_t (*)(const H5FD_t *, H5FD_mem_t)>H5FD_fileobj_get_eoa
|
||||
-info.set_eoa = <herr_t (*)(H5FD_t *, H5FD_mem_t, haddr_t)>H5FD_fileobj_set_eoa
|
||||
-info.get_eof = <haddr_t (*)(const H5FD_t *, H5FD_mem_t)>H5FD_fileobj_get_eof
|
||||
-info.read = <herr_t (*)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, void *)>H5FD_fileobj_read
|
||||
-info.write = <herr_t (*)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, const void *)>H5FD_fileobj_write
|
||||
-info.truncate = <herr_t (*)(H5FD_t *, hid_t, hbool_t)>H5FD_fileobj_truncate
|
||||
-info.flush = <herr_t (*)(H5FD_t *, hid_t, hbool_t)>H5FD_fileobj_flush
|
||||
+
|
||||
+info.close = <file_close_func_ptr>H5FD_fileobj_close
|
||||
+info.get_eoa = <file_get_eoa_func_ptr>H5FD_fileobj_get_eoa
|
||||
+info.set_eoa = <file_set_eof_func_ptr>H5FD_fileobj_set_eoa
|
||||
+info.get_eof = <file_get_eof_func_ptr>H5FD_fileobj_get_eof
|
||||
+info.read = <file_read_func_ptr>H5FD_fileobj_read
|
||||
+info.write = <file_write_func_ptr>H5FD_fileobj_write
|
||||
+info.truncate = <file_truncate_func_ptr>H5FD_fileobj_truncate
|
||||
+info.flush = <file_flush_func_ptr>H5FD_fileobj_flush
|
||||
# H5FD_FLMAP_DICHOTOMY
|
||||
info.fl_map = [H5FD_MEM_SUPER, # default
|
||||
H5FD_MEM_SUPER, # super
|
||||
--
|
||||
2.27.0
|
||||
|
||||
73
Add-page-buffer-and-fix-file-locking-tests.patch
Normal file
73
Add-page-buffer-and-fix-file-locking-tests.patch
Normal file
@ -0,0 +1,73 @@
|
||||
From eea4cbc6a4b6333182c8d9b43276f8269c49d980 Mon Sep 17 00:00:00 2001
|
||||
From: Aleksandar Jelenak <ajelenak@hdfgroup.org>
|
||||
Date: Wed, 3 Apr 2024 11:29:22 -0400
|
||||
Subject: [PATCH] Add page buffer and fix file locking tests
|
||||
|
||||
---
|
||||
h5py/tests/test_file.py | 36 ++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 34 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/h5py/tests/test_file.py b/h5py/tests/test_file.py
|
||||
index 1aa38731..0ceddc37 100644
|
||||
--- a/h5py/tests/test_file.py
|
||||
+++ b/h5py/tests/test_file.py
|
||||
@@ -213,6 +213,8 @@ class TestPageBuffering(TestCase):
|
||||
fapl = f.id.get_access_plist()
|
||||
self.assertEqual(fapl.get_page_buffer_size(), (pbs, mm, mr))
|
||||
|
||||
+ @pytest.mark.skipif(h5py.version.hdf5_version_tuple > (1, 14, 3),
|
||||
+ reason='Requires HDF5 <= 1.14.3')
|
||||
def test_too_small_pbs(self):
|
||||
"""Page buffer size must be greater than file space page size."""
|
||||
fname = self.mktemp()
|
||||
@@ -222,6 +224,30 @@ class TestPageBuffering(TestCase):
|
||||
with self.assertRaises(OSError):
|
||||
File(fname, mode="r", page_buf_size=fsp-1)
|
||||
|
||||
+ @pytest.mark.skipif(h5py.version.hdf5_version_tuple < (1, 14, 4),
|
||||
+ reason='Requires HDF5 >= 1.14.4')
|
||||
+ def test_open_nonpage_pbs(self):
|
||||
+ """Open non-PAGE file with page buffer set."""
|
||||
+ fname = self.mktemp()
|
||||
+ fsp = 16 * 1024
|
||||
+ with File(fname, mode='w'):
|
||||
+ pass
|
||||
+ with File(fname, mode='r', page_buf_size=fsp) as f:
|
||||
+ fapl = f.id.get_access_plist()
|
||||
+ assert fapl.get_page_buffer_size()[0] == 0
|
||||
+
|
||||
+ @pytest.mark.skipif(h5py.version.hdf5_version_tuple < (1, 14, 4),
|
||||
+ reason='Requires HDF5 >= 1.14.4')
|
||||
+ def test_smaller_pbs(self):
|
||||
+ """Adjust page buffer size automatically when smaller than file page."""
|
||||
+ fname = self.mktemp()
|
||||
+ fsp = 16 * 1024
|
||||
+ with File(fname, mode='w', fs_strategy='page', fs_page_size=fsp):
|
||||
+ pass
|
||||
+ with File(fname, mode='r', page_buf_size=fsp-100) as f:
|
||||
+ fapl = f.id.get_access_plist()
|
||||
+ assert fapl.get_page_buffer_size()[0] == fsp
|
||||
+
|
||||
def test_actual_pbs(self):
|
||||
"""Verify actual page buffer size."""
|
||||
fname = self.mktemp()
|
||||
@@ -923,8 +949,14 @@ class TestFileLocking:
|
||||
with h5py.File(fname, mode="r", locking=True) as h5f_read:
|
||||
pass
|
||||
|
||||
- with h5py.File(fname, mode="r", locking='best-effort') as h5f_read:
|
||||
- pass
|
||||
+ if h5py.version.hdf5_version_tuple < (1, 14, 4):
|
||||
+ with h5py.File(fname, mode="r", locking='best-effort') as h5f_read:
|
||||
+ pass
|
||||
+ else:
|
||||
+ with pytest.raises(OSError):
|
||||
+ with h5py.File(fname, mode="r", locking='best-effort') as h5f_read:
|
||||
+ pass
|
||||
+
|
||||
|
||||
def test_unsupported_locking(self, tmp_path):
|
||||
"""Test with erroneous file locking value"""
|
||||
--
|
||||
2.27.0
|
||||
|
||||
57
Fix-get_eof-exception-definition.patch
Normal file
57
Fix-get_eof-exception-definition.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From d6b267d980b391561047af0e573d26140c7d35bd Mon Sep 17 00:00:00 2001
|
||||
From: David Hoese <david.hoese@ssec.wisc.edu>
|
||||
Date: Fri, 1 Dec 2023 09:49:29 -0600
|
||||
Subject: [PATCH] Fix get_eof exception definition
|
||||
|
||||
---
|
||||
h5py/api_types_hdf5.pxd | 4 ++--
|
||||
h5py/h5fd.pyx | 4 ++--
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/h5py/api_types_hdf5.pxd b/h5py/api_types_hdf5.pxd
|
||||
index 6e2fc239..099e0f58 100644
|
||||
--- a/h5py/api_types_hdf5.pxd
|
||||
+++ b/h5py/api_types_hdf5.pxd
|
||||
@@ -272,7 +272,7 @@ cdef extern from "hdf5.h":
|
||||
herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
|
||||
haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
|
||||
- haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
+ haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) except -1
|
||||
herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
|
||||
herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
|
||||
herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
|
||||
@@ -310,7 +310,7 @@ cdef extern from "hdf5.h":
|
||||
herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
|
||||
haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
|
||||
- haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) noexcept
|
||||
+ haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) except -1
|
||||
herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
|
||||
herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
|
||||
herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
|
||||
diff --git a/h5py/h5fd.pyx b/h5py/h5fd.pyx
|
||||
index 5e2ea9cd..d39cf68f 100644
|
||||
--- a/h5py/h5fd.pyx
|
||||
+++ b/h5py/h5fd.pyx
|
||||
@@ -151,7 +151,7 @@ cdef herr_t H5FD_fileobj_set_eoa(H5FD_fileobj_t *f, H5FD_mem_t type, haddr_t add
|
||||
f.eoa = addr
|
||||
return 0
|
||||
|
||||
-cdef haddr_t H5FD_fileobj_get_eof(const H5FD_fileobj_t *f, H5FD_mem_t type) noexcept with gil: # HADDR_UNDEF
|
||||
+cdef haddr_t H5FD_fileobj_get_eof(const H5FD_fileobj_t *f, H5FD_mem_t type) except -1 with gil: # HADDR_UNDEF
|
||||
(<object>f.fileobj).seek(0, libc.stdio.SEEK_END)
|
||||
return (<object>f.fileobj).tell()
|
||||
|
||||
@@ -197,7 +197,7 @@ ctypedef herr_t (*file_free_func_ptr)(void *) except -1
|
||||
ctypedef herr_t (*file_close_func_ptr)(H5FD_t *) except -1
|
||||
ctypedef haddr_t (*file_get_eoa_func_ptr)(const H5FD_t *, H5FD_mem_t) noexcept
|
||||
ctypedef herr_t (*file_set_eof_func_ptr)(H5FD_t *, H5FD_mem_t, haddr_t) noexcept
|
||||
-ctypedef haddr_t (*file_get_eof_func_ptr)(const H5FD_t *, H5FD_mem_t) noexcept
|
||||
+ctypedef haddr_t (*file_get_eof_func_ptr)(const H5FD_t *, H5FD_mem_t) except -1
|
||||
ctypedef herr_t (*file_read_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, void*) except -1
|
||||
ctypedef herr_t (*file_write_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, const void*) except -1
|
||||
ctypedef herr_t (*file_truncate_func_ptr)(H5FD_t *, hid_t, hbool_t) except -1
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -3,12 +3,15 @@
|
||||
Summary: A high- and low-level interface to the HDF5 library from Python
|
||||
Name: python-h5py
|
||||
Version: 3.10.0
|
||||
Release: 1
|
||||
Release: 2
|
||||
License: BSD
|
||||
URL: http://www.h5py.org/
|
||||
Source0: https://github.com/h5py/h5py/archive/refs/tags/%{version}.tar.gz
|
||||
|
||||
Patch1: Fix-compiling-fileobj-file-driver-with-Cython-3.0.patch
|
||||
Patch2: Add-minimal-except-definitions-for-Cython-3-compatib.patch
|
||||
Patch3: Add-page-buffer-and-fix-file-locking-tests.patch
|
||||
Patch4: Fix-get_eof-exception-definition.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: hdf5-devel
|
||||
@ -55,6 +58,9 @@ A high- and low-level interface to the HDF5 library from Python3
|
||||
%{python3_sitearch}/%{modname}-%{version}-*.egg-info
|
||||
|
||||
%changelog
|
||||
* Thu Nov 7 2024 caixiaomeng <caixiaomeng2@huawei.com> - 3.10.0-2
|
||||
- fix build error due to hdf5 upgrade
|
||||
|
||||
* Fri Jan 26 2024 wangjiang <wangjiang37@h-partners.com> - 3.10.0-1
|
||||
- update version to 3.10.0
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user