python313Packages.segyio: fix build

This commit is contained in:
wxt 2025-01-11 21:23:04 +08:00
parent 48d5c5fec2
commit 925fdc83ed
No known key found for this signature in database
GPG Key ID: F62181757D8BF693
4 changed files with 105 additions and 3 deletions

View File

@ -17,6 +17,10 @@ buildPythonPackage rec {
patches = [
# https://github.com/equinor/segyio/pull/570
./add_missing_cstdint.patch
# https://github.com/equinor/segyio/pull/576/
./fix-setuptools.patch
./explicitly-cast.patch
./numpy-2.patch
];
postPatch = ''
@ -49,10 +53,10 @@ buildPythonPackage rec {
numpy
];
meta = with lib; {
meta = {
description = "Fast Python library for SEGY files";
homepage = "https://github.com/equinor/segyio";
license = licenses.lgpl3Only;
maintainers = with maintainers; [ atila ];
license = lib.licenses.lgpl3Only;
maintainers = with lib.maintainers; [ atila ];
};
}

View File

@ -0,0 +1,32 @@
From eafe8476566e1d8e8b9a486ca808685cb439a767 Mon Sep 17 00:00:00 2001
From: Sveinung Rundhovde <ssru@equinor.com>
Date: Mon, 29 Jul 2024 10:46:35 +0200
Subject: [PATCH] Explicitly cast from BinField to int
Parsing segyio.BinField type as int in PyArg_ParseTuple is no longer
possible.
---
python/segyio/open.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/python/segyio/open.py b/python/segyio/open.py
index cd902c15..80bc3a5b 100644
--- a/python/segyio/open.py
+++ b/python/segyio/open.py
@@ -166,8 +166,8 @@ def open(filename, mode="r", iline = 189,
f = segyio.SegyFile(fd,
filename = str(filename),
mode = mode,
- iline = iline,
- xline = xline,
+ iline = int(iline),
+ xline = int(xline),
endian = endian,
)
@@ -189,4 +189,4 @@ def open(filename, mode="r", iline = 189,
if ignore_geometry:
return f
- return infer_geometry(f, metrics, iline, xline, strict)
+ return infer_geometry(f, metrics, int(iline), int(xline), strict)

View File

@ -0,0 +1,32 @@
From 6df089258c2ef4356427263f652cff0c053c6173 Mon Sep 17 00:00:00 2001
From: Sveinung Rundhovde <ssru@equinor.com>
Date: Fri, 26 Jul 2024 15:03:33 +0200
Subject: [PATCH] Fix attribute error in setup.py
This line was causing a error due to an update to scikit-build. The
issue was that the setuptools.command.test module is not put into the
symbol table by the setuptools import, but it was put there during the
skbuild import causing it to be available. Due to changes in
scikit-build this is no longer the case and the line gives an
AttributError.
The rationale for this line was that scikit-builds test command implied
develop (this was obnoxious), something that is no longer true. There is
thus no longer any reason to keep this line, so we can fix this issue by
simply removing it.
---
python/setup.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/python/setup.py b/python/setup.py
index 6c6553bc..6bae62f0 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -95,7 +95,6 @@ def src(x):
# supported OS X release 10.9
'-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9',
],
- cmdclass = { 'test': setuptools.command.test.test },
classifiers = [
'Development Status :: 5 - Production/Stable',
'Environment :: Other Environment',

View File

@ -0,0 +1,34 @@
From 75b2156a6414e2464eb15663004b8ab928374135 Mon Sep 17 00:00:00 2001
From: Sveinung Rundhovde <ssru@equinor.com>
Date: Tue, 30 Jul 2024 08:32:56 +0200
Subject: [PATCH] Fix test failing due to Numpy 2.0 promotion rules
From Numpy 2.0 adding a numpy.float32 and a Python numeric type returns
a numy.float32 when it previously returned a numpy.float64. This changes
the behavior when using the Python builtin sum function on a
numpy.float32 array as the internal computations now will be performed
as numpy.float32 additions when it used to be numpy.float64.
Passing a numpy.double(0) as a start value to the innermost sum forces
the old behavior and provides consistent results for Numpy 1 and 2.
---
python/test/segyio_c.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/python/test/segyio_c.py b/python/test/segyio_c.py
index 45fe95d89..b1e144d9d 100644
--- a/python/test/segyio_c.py
+++ b/python/test/segyio_c.py
@@ -540,10 +540,10 @@ def read_line(f, metrics, iline_idx, xline_idx):
buf = numpy.zeros((len(iline_idx), samples), dtype=numpy.single)
f.getline(xline_trace0, len(iline_idx), xline_stride, offsets, buf)
- assert sum(sum(buf)) == approx(800.061169624, abs=1e-6)
+ assert sum(sum(buf), numpy.double(0)) == approx(800.061169624, abs=1e-6)
f.getline(iline_trace0, len(xline_idx), iline_stride, offsets, buf)
- assert sum(sum(buf)) == approx(305.061146736, abs=1e-6)
+ assert sum(sum(buf), numpy.double(0)) == approx(305.061146736, abs=1e-6)
f.close()