Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] sagemath: update dependencies
@ 2025-02-03 13:24 tornaria
  2025-02-03 17:31 ` tornaria
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: tornaria @ 2025-02-03 13:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1578 bytes --]

There is a new pull request by tornaria against master on the void-packages repository

https://github.com/tornaria/void-packages sagemath
https://github.com/void-linux/void-packages/pull/54198

sagemath: update dependencies
Rebuild sagemath for changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular

- **flintlib: update to 3.1.3+p1.**
- **python3-cysignals: update to 1.12.3.**
- **symmetrica: update to 3.1.0.**
- **lcalc: update to 2.1.0.**
- **m4ri: update to 20250128.**
- **m4rie: update to 20250128.**
- **brial: rebuild for m4ri-20250128.**
- **eclib: update to 20250122.**
- **singular: update to 4.4.1.**
- **sagemath: rebuild for updates**

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/54198.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-sagemath-54198.patch --]
[-- Type: text/x-diff, Size: 61138 bytes --]

From f984704e319fdaeec7c872c2f936844091dd5fb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 10:02:24 -0300
Subject: [PATCH 01/10] flintlib: update to 3.1.3+p1.

---
 srcpkgs/flintlib/template | 12 ++++++------
 srcpkgs/flintlib/update   |  8 +++++---
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/flintlib/template b/srcpkgs/flintlib/template
index 465cdf1d0d3f71..7bccdd746a28b6 100644
--- a/srcpkgs/flintlib/template
+++ b/srcpkgs/flintlib/template
@@ -1,7 +1,7 @@
 # Template file for 'flintlib'
 pkgname=flintlib
-version=3.1.2
-revision=2
+version=3.1.3+p1
+revision=1
 build_style=gnu-configure
 configure_args="--prefix=/usr --disable-arch $(vopt_with ntl)
  $(vopt_if openblas --with-blas-include=${XBPS_CROSS_BASE}/usr/include/openblas)"
@@ -9,11 +9,11 @@ makedepends="mpfr-devel $(vopt_if ntl ntl-devel)
  $(vopt_if openblas openblas-devel)"
 short_desc="Fast Library for Number Theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
-license="LGPL-2.1-or-later"
+license="LGPL-3.0-or-later"
 homepage="https://flintlib.org"
-changelog="https://raw.githubusercontent.com/wbhart/flint2/trunk/NEWS"
-distfiles="https://flintlib.org/flint-${version}.tar.gz"
-checksum=fdb3a431a37464834acff3bdc145f4fe8d0f951dd5327c4c6f93f4cbac5c2700
+changelog="https://raw.githubusercontent.com/flintlib/flint/refs/heads/main/doc/source/history.rst"
+distfiles="https://github.com/flintlib/flint/releases/download/v${version/+/-}/flint-${version/+/-}.tar.xz"
+checksum=8d75df8f2347534bd3245ef6f43cb91e43abd152572c6fe0bfffda55ec014920
 
 build_options="ntl openblas"
 desc_option_ntl="enable NTL support"
diff --git a/srcpkgs/flintlib/update b/srcpkgs/flintlib/update
index 21d6ab4bae5b5c..4cdaabc14b20ea 100644
--- a/srcpkgs/flintlib/update
+++ b/srcpkgs/flintlib/update
@@ -1,3 +1,5 @@
-# package was named 'flintlib' because of another package
-pkgname=flint
-site="https://flintlib.org/downloads.html"
+pattern="/archive/refs/tags/v?\K[\d.]+(-(p|rc)[0-9]+)?(?=\.tar\.gz)"
+version=${version/+/.}
+if [[ "$version" != *rc* ]]; then
+	ignore=*rc*
+fi

From a4303d92f010f3dc23300cb7ded0bdeb7e8c42ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 08:42:56 -0300
Subject: [PATCH 02/10] python3-cysignals: update to 1.12.3.

---
 .../patches/216-fix_custom_signal.patch       | 54 -------------------
 .../patches/222-fix_data_race.patch           | 51 ------------------
 srcpkgs/python3-cysignals/template            |  4 +-
 3 files changed, 2 insertions(+), 107 deletions(-)
 delete mode 100644 srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
 delete mode 100644 srcpkgs/python3-cysignals/patches/222-fix_data_race.patch

diff --git a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch b/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
deleted file mode 100644
index ced6b8732c579c..00000000000000
--- a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/pyproject.toml b/pyproject.toml
-index d30ad23..edcb5c8 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -34,4 +34,4 @@ requires-python = ">=3.9"
- 
- [tool.pytest.ini_options]
- addopts = "--doctest-modules --import-mode importlib"
--norecursedirs = "builddir docs example"
-+testpaths = "src tests"
-diff --git a/src/cysignals/implementation.c b/src/cysignals/implementation.c
-index 20a83d0..18b8144 100644
---- a/src/cysignals/implementation.c
-+++ b/src/cysignals/implementation.c
-@@ -591,7 +591,7 @@ static void _sig_on_interrupt_received(void)
-     do_raise_exception(cysigs.interrupt_received);
-     cysigs.sig_on_count = 0;
-     cysigs.interrupt_received = 0;
--    custom_signal_unblock();
-+    custom_set_pending_signal(0);
- 
- #if HAVE_SIGPROCMASK
-     sigprocmask(SIG_SETMASK, &oldset, NULL);
-diff --git a/tests/test_custom_signals.py b/tests/test_custom_signals.py
-new file mode 100644
-index 0000000..0afc36f
---- /dev/null
-+++ b/tests/test_custom_signals.py
-@@ -0,0 +1,23 @@
-+"""
-+Tests for custom signals.
-+"""
-+
-+import time
-+import pytest
-+
-+def test_clear_pending():
-+    """
-+    Regression test for https://github.com/sagemath/cysignals/pull/216
-+    """
-+
-+    alarm = pytest.importorskip("cysignals.alarm")  # n/a on windows
-+    cypari2 = pytest.importorskip("cypari2")
-+
-+    with pytest.raises(alarm.AlarmInterrupt):
-+        alarm.alarm(0.01)
-+        time.sleep(1)
-+
-+    try:
-+        cypari2.Pari()
-+    except alarm.AlarmInterrupt:
-+        pytest.fail("AlarmInterrupt was not cleared")
diff --git a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch b/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
deleted file mode 100644
index c9fdf3885f5c22..00000000000000
--- a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/src/cysignals/signals.pyx b/src/cysignals/signals.pyx
-index 72f206e..96a99ad 100644
---- a/src/cysignals/signals.pyx
-+++ b/src/cysignals/signals.pyx
-@@ -25,7 +25,7 @@ See ``tests.pyx`` for extensive tests.
- 
- from libc.signal cimport *
- from libc.stdio cimport freopen, stdin
--from cpython.ref cimport Py_XINCREF, Py_XDECREF
-+from cpython.ref cimport Py_XINCREF, Py_CLEAR
- from cpython.exc cimport (PyErr_Occurred, PyErr_NormalizeException,
-         PyErr_Fetch, PyErr_Restore)
- from cpython.version cimport PY_MAJOR_VERSION
-@@ -204,7 +204,7 @@ cdef int sig_raise_exception "sig_raise_exception"(int sig, const char* msg) exc
-     PyErr_Fetch(&typ, &val, &tb)
-     PyErr_NormalizeException(&typ, &val, &tb)
-     Py_XINCREF(val)
--    Py_XDECREF(cysigs.exc_value)
-+    Py_CLEAR(cysigs.exc_value)
-     cysigs.exc_value = val
-     PyErr_Restore(typ, val, tb)
- 
-@@ -362,8 +362,7 @@ cdef void verify_exc_value() noexcept:
-     """
-     if cysigs.exc_value.ob_refcnt == 1:
-         # No other references => exception is certainly gone
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
-         return
- 
-     if PyErr_Occurred() is not NULL:
-@@ -394,8 +393,7 @@ cdef void verify_exc_value() noexcept:
-         pass
-     else:
-         if <PyObject*>handled is cysigs.exc_value:
--            Py_XDECREF(cysigs.exc_value)
--            cysigs.exc_value = NULL
-+            Py_CLEAR(cysigs.exc_value)
-             return
- 
-     # To be safe, we run the garbage collector because it may clear
-@@ -411,5 +409,4 @@ cdef void verify_exc_value() noexcept:
-     # called again during garbage collection it might have already been set
-     # to NULL; see https://github.com/sagemath/cysignals/issues/126
-     if cysigs.exc_value != NULL and cysigs.exc_value.ob_refcnt == 1:
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
diff --git a/srcpkgs/python3-cysignals/template b/srcpkgs/python3-cysignals/template
index b2bb20342806b1..e2216146e4c207 100644
--- a/srcpkgs/python3-cysignals/template
+++ b/srcpkgs/python3-cysignals/template
@@ -1,6 +1,6 @@
 # Template file for 'python3-cysignals'
 pkgname=python3-cysignals
-version=1.12.2
+version=1.12.3
 revision=1
 build_style=python3-pep517
 build_helper=meson
@@ -14,7 +14,7 @@ license="LGPL-3.0-or-later"
 homepage="https://github.com/sagemath/cysignals"
 changelog="https://github.com/sagemath/cysignals/releases"
 distfiles="${PYPI_SITE}/c/cysignals/cysignals-${version}.tar.gz"
-checksum=407db178fb18a91118ca742ede62000b2bee62b617eb49d26fcdad7e9ba2771a
+checksum=89f7626dbf29db5ab3d6eff15a89978f4eb5193c320e9099bcc157dacdefd1eb
 
 # cysignals must be compiled without _FORTIFY_SOURCE
 CFLAGS="-U_FORTIFY_SOURCE"

From 3115af345479f5c8ff2781cd9392c99e08dc376c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:00:12 -0300
Subject: [PATCH 03/10] symmetrica: update to 3.1.0.

---
 common/shlibs               | 2 +-
 srcpkgs/symmetrica/template | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 175786786b4936..9cc55b67ac1bac 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4199,7 +4199,7 @@ libgf2x.so.3 gf2x-1.3.0_1
 libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
-libsymmetrica.so.2 symmetrica-3.0.1_1
+libsymmetrica.so.3 symmetrica-3.1.0_1
 libLfunction.so.1 lcalc-2.0.4_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/symmetrica/template b/srcpkgs/symmetrica/template
index b6b53d3cbf6fe5..f6966e30268b17 100644
--- a/srcpkgs/symmetrica/template
+++ b/srcpkgs/symmetrica/template
@@ -1,15 +1,16 @@
 # Template file for 'symmetrica'
 pkgname=symmetrica
-version=3.0.1
+version=3.1.0
 revision=1
 build_style=gnu-configure
-hostmakedepends="automake libtool"
+hostmakedepends="automake libtool pkg-config"
 short_desc="Collection of C routines for representation theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="ISC"
 homepage="https://gitlab.com/sagemath/symmetrica"
+changelog="https://gitlab.com/sagemath/symmetrica/-/releases"
 distfiles="https://gitlab.com/sagemath/symmetrica/-/archive/${version}/symmetrica-${version}.tar.bz2"
-checksum=260028143f3ea3594fed75651e10176d2f53edae5e1af1661d5b82d617e233d6
+checksum=46137328f5dfae50167356ed9bcdf0aadef9dcb70553d3788106dc7c5b890ee8
 
 pre_configure() {
 	autoreconf -fi
@@ -24,7 +25,6 @@ symmetrica-devel_package() {
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
-		vmove "usr/lib/*.a"
 		vmove "usr/lib/*.so"
 	}
 }

From 47991110e7640fc995aa5b6462e3e123c6c283b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:14:45 -0300
Subject: [PATCH 04/10] lcalc: update to 2.1.0.

---
 common/shlibs          |  2 +-
 srcpkgs/lcalc/template | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 9cc55b67ac1bac..3583ac959a0220 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4200,7 +4200,7 @@ libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
 libsymmetrica.so.3 symmetrica-3.1.0_1
-libLfunction.so.1 lcalc-2.0.4_1
+libLfunction.so.2 lcalc-2.1.0_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
 libwayland-cursor++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/lcalc/template b/srcpkgs/lcalc/template
index aaab6d14ead440..71795bbb947a49 100644
--- a/srcpkgs/lcalc/template
+++ b/srcpkgs/lcalc/template
@@ -1,7 +1,7 @@
 # Template file for 'lcalc'
 pkgname=lcalc
-version=2.0.5
-revision=3
+version=2.1.0
+revision=1
 build_style=gnu-configure
 configure_args="--with-pari"
 hostmakedepends="automake libtool pkg-config gengetopt"
@@ -12,7 +12,12 @@ license="GPL-2.0-or-later"
 homepage="https://gitlab.com/sagemath/lcalc"
 changelog="https://gitlab.com/sagemath/lcalc/-/raw/master/doc/ChangeLog"
 distfiles="https://gitlab.com/sagemath/lcalc/-/archive/${version}/lcalc-${version}.tar.bz2"
-checksum=94efc160a2761de75df534707fd2ec53949c5389296d20ddbac1b285fe26d1ad
+checksum=463f26cc42262a90440fcec95a56cc267f00d6ac9870dfe1f4838359696664d5
+
+case $XBPS_TARGET_MACHINE in
+	# avoid numerical noise caused by extended-precision of registers
+	i686*) CXXFLAGS="-mfpmath=sse -msse2" ;;
+esac
 
 pre_configure() {
 	autoreconf -fi

From 41c31a5060e31ef76c03089c86d47834a4fbe139 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 2 Jan 2025 22:22:06 -0300
Subject: [PATCH 05/10] m4ri: update to 20250128.

---
 common/shlibs                                 |  2 +-
 .../patches/m4ri-simd_cflags_in_tests.patch   | 11 ----------
 srcpkgs/m4ri/template                         | 21 ++++++++++++-------
 3 files changed, 15 insertions(+), 19 deletions(-)
 delete mode 100644 srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch

diff --git a/common/shlibs b/common/shlibs
index 3583ac959a0220..c5faa959613064 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4251,7 +4251,7 @@ libpolys-4.4.0.so singular-4.4.0_1
 libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
-libm4ri-0.0.20200125.so m4ri-20200125_1
+libm4ri.so.1 m4ri-20250128_1
 libm4rie-0.0.20200125.so m4rie-20200125_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
diff --git a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch b/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
deleted file mode 100644
index ffa64b120fc28f..00000000000000
--- a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tests/Makefile.in	2020-01-25 01:34:59.000000000 -0300
-+++ b/tests/Makefile.in	2021-11-10 08:13:46.505793446 -0300
-@@ -609,7 +609,7 @@
- TOPBUILDDIR = $(builddir)/..
- DEFINES = 
- # include TOPBUILDIR for m4ri_config.h
--AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) @OPENMP_CFLAGS@ @PAPI_CFLAGS@
-+AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) $(SIMD_CFLAGS) $(OPENMP_CFLAGS) $(PAPI_CFLAGS)
- STAGEDIR := $(realpath -s $(TOPBUILDDIR)/.libs)
- AM_LDFLAGS = -L$(STAGEDIR) -Wl,-rpath,$(STAGEDIR) -lm4ri $(LIBM) @PAPI_LDFLAGS@ @PAPI_LIBS@ -no-install
- test_smallops_SOURCES = test_smallops.c testing.c testing.h
diff --git a/srcpkgs/m4ri/template b/srcpkgs/m4ri/template
index 56e60ed16f5998..2d7041d9591440 100644
--- a/srcpkgs/m4ri/template
+++ b/srcpkgs/m4ri/template
@@ -1,17 +1,24 @@
 # Template file for 'm4ri'
 pkgname=m4ri
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
-configure_args="--enable-openmp ax_cv_have_sse3_ext=no ax_cv_have_ssse3_ext=no"
+# use defaults for cache sizes instead of build machine
+configure_args="--enable-openmp --with-cachesize=0:0:0"
 hostmakedepends="pkg-config"
 makedepends="libgomp-devel libpng-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2)"
-maintainer="Eloi Torrents <eloitorrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4ri"
-distfiles="https://bitbucket.org/malb/m4ri/downloads/${pkgname}-${version}.tar.gz"
-checksum=0dfb34aed351882a0f2281535ea6f81c690a5efeb14edab131d9ba0dffe44863
+homepage="https://github.com/malb/m4ri"
+changelog="https://github.com/malb/m4ri#history"
+distfiles="https://github.com/malb/m4ri/releases/download/${version}/m4ri-${version}.tar.gz"
+checksum=b4098db651483c0e1506c16f79091eba02f41dadbacf1bb25be8eb97e5515f96
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4ri-devel_package() {
 	short_desc+=" - development files"

From c4854aef85219295eb79b99426ee18063892fc3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 00:50:12 -0300
Subject: [PATCH 06/10] m4rie: update to 20250128.

---
 common/shlibs          |  2 +-
 srcpkgs/m4rie/template | 21 ++++++++++++++-------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index c5faa959613064..09e5acf3fc7625 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4252,7 +4252,7 @@ libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
-libm4rie-0.0.20200125.so m4rie-20200125_1
+libm4rie.so.1 m4rie-20250128_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
 libKPim6PkPass.so.6 kpkpass-24.02.0_1
diff --git a/srcpkgs/m4rie/template b/srcpkgs/m4rie/template
index 0e775df1dc1ce0..f327a02526a0b4 100644
--- a/srcpkgs/m4rie/template
+++ b/srcpkgs/m4rie/template
@@ -1,19 +1,26 @@
 # Template file for 'm4rie'
 pkgname=m4rie
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
+hostmakedepends="pkg-config"
 makedepends="m4ri-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2^e)"
-maintainer="Eloi Torrents <eloi.torrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4rie/wiki/Home"
-distfiles="https://bitbucket.org/malb/m4rie/downloads/m4rie-${version}.tar.gz"
-checksum=7f3107f7cd10f6c22d9663d9536e1af2f551e10183601852a60d760918caf58d
+homepage="https://github.com/malb/m4rie"
+changelog="https://github.com/malb/m4rie#history"
+distfiles="https://github.com/malb/m4rie/releases/download/${version}/m4rie-${version}.tar.gz"
+checksum=96f1adafd50e6a0b51dc3aa1cb56cb6c1361ae7c10d97dc35c3fa70822a55bd7
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4rie-devel_package() {
 	short_desc+=" - development files"
-	depends="${sourcepkg}>=${version}_${revision}"
+	depends="${sourcepkg}>=${version}_${revision} ${makedepends}"
 	pkg_install() {
 		vmove usr/include
 		vmove "usr/lib/*.a"

From ff14aefa9fc34c9a05cbf14ebf6c6aa4ed9fd866 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 14:53:06 -0300
Subject: [PATCH 07/10] brial: rebuild for m4ri-20250128.

---
 srcpkgs/brial/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/brial/template b/srcpkgs/brial/template
index 2f8e195a8804ba..3fee9468bdc86d 100644
--- a/srcpkgs/brial/template
+++ b/srcpkgs/brial/template
@@ -1,7 +1,7 @@
 # Template file for 'brial'
 pkgname=brial
 version=1.2.12
-revision=1
+revision=2
 build_style=gnu-configure
 hostmakedepends="pkg-config"
 makedepends="boost-devel m4ri-devel"

From 94d030420f985ce5516efb6e5ead2494c9f9e439 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 23 Jan 2025 00:49:42 -0300
Subject: [PATCH 08/10] eclib: update to 20250122.

---
 srcpkgs/eclib/patches/fix-32bit-modrat.patch | 15 ---------------
 srcpkgs/eclib/template                       |  6 +++---
 2 files changed, 3 insertions(+), 18 deletions(-)
 delete mode 100644 srcpkgs/eclib/patches/fix-32bit-modrat.patch

diff --git a/srcpkgs/eclib/patches/fix-32bit-modrat.patch b/srcpkgs/eclib/patches/fix-32bit-modrat.patch
deleted file mode 100644
index 14988e0a793fa5..00000000000000
--- a/srcpkgs/eclib/patches/fix-32bit-modrat.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-new_modrat is broken on 32 bit, revert to old_modrat
-
---- a/libsrc/arith.cc
-+++ b/libsrc/arith.cc
-@@ -429,8 +430,8 @@ int new_modrat(long n, long m, long& a, long& b);
- 
- int modrat(long n, long m, long& a, long& b)
- {
--  // return old_modrat(n, m, a, b);
--  return new_modrat(n, m, a, b);
-+  return old_modrat(n, m, a, b);
-+  //return new_modrat(n, m, a, b);
- }
- 
- int old_modrat(long n, long m, long& a, long& b)
diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template
index 75fd264f57be5a..86294212ae64a9 100644
--- a/srcpkgs/eclib/template
+++ b/srcpkgs/eclib/template
@@ -1,6 +1,6 @@
 # Template file for 'eclib'
 pkgname=eclib
-version=20241112
+version=20250122
 revision=1
 build_style=gnu-configure
 configure_args="--with-flint --with-boost"
@@ -10,8 +10,8 @@ maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="GPL-2.0-or-later"
 homepage="https://github.com/JohnCremona/eclib"
 changelog="https://github.com/JohnCremona/eclib/releases"
-distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2"
-checksum=30765c27ca1420141f83517897119d0185fea9b31132392170ddae40b060e46f
+distfiles="https://github.com/JohnCremona/eclib/releases/download/${version}/eclib-${version}.tar.bz2"
+checksum=9f8c2b32e24a4f20d7cc2d336ea30c8ea03b5b0953c2d32adda0c496e7616899
 
 eclib-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} ntl-devel"

From 9bac68e387cf5460453fd29299a34d06102eaa11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 21 Jan 2025 20:11:14 -0300
Subject: [PATCH 09/10] singular: update to 4.4.1.

---
 common/shlibs             | 8 ++++----
 srcpkgs/singular/template | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 09e5acf3fc7625..34eb4ce8b27957 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4245,10 +4245,10 @@ libecl.so.24.5 ecl-24.5.10_1
 libecm.so.1 ecm-7.0.4_3
 libcliquer.so.1 cliquer-1.22_1
 libomalloc-0.9.6.so singular-4.2.1_1
-libSingular-4.4.0.so singular-4.4.0_1
-libfactory-4.4.0.so singular-4.4.0_1
-libpolys-4.4.0.so singular-4.4.0_1
-libsingular_resources-4.4.0.so singular-4.4.0_1
+libSingular-4.4.1.so singular-4.4.1_1
+libfactory-4.4.1.so singular-4.4.1_1
+libpolys-4.4.1.so singular-4.4.1_1
+libsingular_resources-4.4.1.so singular-4.4.1_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
diff --git a/srcpkgs/singular/template b/srcpkgs/singular/template
index aa4899c7bdaab9..310b5a08ec064a 100644
--- a/srcpkgs/singular/template
+++ b/srcpkgs/singular/template
@@ -1,6 +1,6 @@
 # Template file for 'singular'
 pkgname=singular
-version=4.4.0
+version=4.4.1
 revision=1
 _majver=${version%p*}
 build_style=gnu-configure
@@ -20,7 +20,7 @@ maintainer="dkwo <npiazza@disroot.org>, Gonzalo Tornaría <tornaria@cmat.edu.uy>
 license="GPL-2.0-or-later"
 homepage="https://www.singular.uni-kl.de"
 distfiles="https://www.singular.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${_majver//./-}/singular-${version}.tar.gz"
-checksum=c269abbd24c84fe33edc0af1e78b8fec53d8e94338410ac06c2666cfd40d43f2
+checksum=6a4fbaaed05b89c35bff3b1c5e124344a088097f81affe129c9ae619b282b49b
 
 if [ -z "$CROSS_BUILD" ]; then
 	makedepends+=" ntl-devel"

From e0a264fbf5a279d91302932a52ad7582e624906c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 15:08:10 -0300
Subject: [PATCH 10/10] sagemath: rebuild for updates

changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular
---
 .../patches/39368-singular_4.4.1.patch        | 715 ++++++++++++++++++
 srcpkgs/sagemath/patches/get_patches          |   3 +-
 srcpkgs/sagemath/template                     |   2 +-
 3 files changed, 718 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/sagemath/patches/39368-singular_4.4.1.patch

diff --git a/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
new file mode 100644
index 00000000000000..aba16fa1d7ae75
--- /dev/null
+++ b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
@@ -0,0 +1,715 @@
+diff --git a/src/sage/categories/pushout.py b/src/sage/categories/pushout.py
+index a2b5e910257..17f059f967f 100644
+--- a/src/sage/categories/pushout.py
++++ b/src/sage/categories/pushout.py
+@@ -3925,8 +3925,8 @@ class BlackBoxConstructionFunctor(ConstructionFunctor):
+         sage: FS = BlackBoxConstructionFunctor(singular)
+         sage: FS(QQ['t'])                                                               # needs sage.libs.singular
+         polynomial ring, over a field, global ordering
+-        //   coefficients: QQ
+-        //   number of vars : 1
++        // coefficients: QQ...
++        // number of vars : 1
+         //        block   1 : ordering lp
+         //                  : names    t
+         //        block   2 : ordering C
+diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
+index 91f8efcf651..ff424335d56 100644
+--- a/src/sage/interfaces/expect.py
++++ b/src/sage/interfaces/expect.py
+@@ -1328,8 +1328,8 @@ def _synchronize(self, cmd='1+%s;\n'):
+             sage: R.<x> = QQ[]; f = x^3 + x + 1;  g = x^3 - x - 1; r = f.resultant(g); gap(ZZ); singular(R)
+             Integers
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/interface.py b/src/sage/interfaces/interface.py
+index bd1095e8c70..22fb4b8487c 100644
+--- a/src/sage/interfaces/interface.py
++++ b/src/sage/interfaces/interface.py
+@@ -817,8 +817,8 @@ def __reduce__(self):
+             sage: S = singular.ring(0, ('x'))
+             sage: loads(dumps(S))
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
+index d110c17bf16..59d01f4493d 100644
+--- a/src/sage/interfaces/singular.py
++++ b/src/sage/interfaces/singular.py
+@@ -39,8 +39,8 @@
+     sage: R1 = singular.ring(0, '(x,y)', 'dp')
+     sage: R1
+     polynomial ring, over a field, global ordering
+-    //   coefficients: QQ
+-    //   number of vars : 2
++    // coefficients: QQ...
++    // number of vars : 2
+     //        block   1 : ordering dp
+     //                  : names    x y
+     //        block   2 : ordering C
+@@ -220,12 +220,12 @@
+ 
+     sage: singular.lib('polylib.lib')
+     sage: singular.ring(32003, '(a,b,c,d,e,f)', 'lp')
+-            polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/32003
+-            //   number of vars : 6
+-            //        block   1 : ordering lp
+-            //                        : names    a b c d e f
+-            //        block   2 : ordering C
++    polynomial ring, over a field, global ordering
++    // coefficients: ZZ/32003...
++    // number of vars : 6
++    //        block   1 : ordering lp
++    //                        : names    a b c d e f
++    //        block   2 : ordering C
+     sage: I = singular.ideal('cyclic(6)')
+     sage: g = singular('groebner(I)')
+     Traceback (most recent call last):
+@@ -1074,8 +1074,8 @@ def ring(self, char=0, vars='(x)', order='lp', check=None):
+             sage: R = singular.ring(0, '(x,y,z)', 'dp')
+             sage: R
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1153,16 +1153,16 @@ def set_ring(self, R):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: singular.set_ring(R)
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+@@ -1203,15 +1203,15 @@ def current_ring(self):
+             sage: r = PolynomialRing(GF(127),3,'xyz', order='invlex')
+             sage: r._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1430,8 +1430,8 @@ def __copy__(self):
+             sage: cpQ.set_ring()
+             sage: cpQ
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1996,8 +1996,8 @@ def _sage_(self, R=None):
+ 
+             sage: singular('basering')
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 3
++            // coefficients: ZZ...
++            // number of vars : 3
+             //        block   1 : ordering lp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -2087,16 +2087,16 @@ def set_ring(self):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: R.set_ring()
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
+index 67cadf5d35c..87f0b7bab69 100644
+--- a/src/sage/libs/singular/function.pyx
++++ b/src/sage/libs/singular/function.pyx
+@@ -276,8 +276,8 @@ cdef class RingWrap:
+             sage: l = ringlist(P)
+             sage: ring = singular_function("ring")
+             sage: ring(l, ring=P)._output()
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx
+index 1d8dd844385..4f7e288e2ad 100644
+--- a/src/sage/libs/singular/ring.pyx
++++ b/src/sage/libs/singular/ring.pyx
+@@ -159,8 +159,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: ZZ/7(a, b)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: ZZ/7(a, b)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+ 
+     ::
+ 
+@@ -168,8 +173,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: QQ(s, t)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: QQ(s, t)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+     """
+     cdef long cexponent
+     cdef GFInfo* _param
+diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+index adf3df1cf95..bab5935004b 100644
+--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
++++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+@@ -619,8 +619,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+ 
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1182,8 +1182,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1198,8 +1198,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = PolynomialRing(k, 3)                                      # needs sage.rings.finite_rings
+             sage: P._singular_()                                                        # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/3[a]/(a^3-a+1)
+-            //   number of vars : 3
++            // coefficients: ZZ/3[a]/(a^3-a+1)...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1215,8 +1215,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1257,8 +1257,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1272,8 +1272,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R.<x,y> = PolynomialRing(NumberField(w^2 + 1,'s'))                    # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 2
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1281,8 +1281,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(2**8,'a'),10,'x', order='invlex')               # needs sage.rings.finite_rings
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)
+-            //   number of vars : 10
++            // coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)...
++            // number of vars : 10
+             //        block   1 : ordering ip
+             //                  : names    x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
+             //        block   2 : ordering C
+@@ -1290,8 +1290,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 2
++            // coefficients: ZZ/127...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1299,8 +1299,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1308,8 +1308,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='degneglex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1320,8 +1320,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1329,8 +1329,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),'x')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1338,8 +1338,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1347,8 +1347,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1356,8 +1356,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1367,8 +1367,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/pbori/pbori.pyx b/src/sage/rings/polynomial/pbori/pbori.pyx
+index 14a929c3238..404771a2c85 100644
+--- a/src/sage/rings/polynomial/pbori/pbori.pyx
++++ b/src/sage/rings/polynomial/pbori/pbori.pyx
+@@ -1425,8 +1425,8 @@ cdef class BooleanPolynomialRing(BooleanPolynomialRing_base):
+             sage: B.<x,y> = BooleanPolynomialRing(2)
+             sage: B._singular_() # indirect doctest
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_quotient_ring.py b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+index 115647adadf..627765cf8f0 100644
+--- a/src/sage/rings/polynomial/polynomial_quotient_ring.py
++++ b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+@@ -749,8 +749,8 @@ def _singular_init_(self, S=None):
+             sage: Q = P.quo([(x^2 + 1)])
+             sage: singular(Q)        # indirect doctest                                 # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    xbar
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py
+index 60d2dd74b52..10bbc6d6ec0 100644
+--- a/src/sage/rings/polynomial/polynomial_singular_interface.py
++++ b/src/sage/rings/polynomial/polynomial_singular_interface.py
+@@ -62,7 +62,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order):
+         sage: from sage.rings.polynomial.polynomial_singular_interface import _do_singular_init_
+         sage: _do_singular_init_(singular, ZZ, 0, 'X', 'dp')                            # needs sage.libs.singular
+         (polynomial ring, over a domain, global ordering
+-         // coefficients: ZZ
++         // coefficients: ZZ...
+          // number of vars : 1
+          //        block   1 : ordering dp
+          //                  : names    X
+@@ -196,7 +196,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(CC)                                          # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)
++            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -205,7 +205,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(RealField(100))                              # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: Float()
++            // coefficients: Float()...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -215,8 +215,8 @@ def _singular_(self, singular=None):
+             sage: R.<x> = PolynomialRing(NumberField(w^2 + 1, 's'))                     # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 1
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -224,8 +224,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x', implementation='singular')           # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -233,8 +233,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ, 'x', implementation='singular')                # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -242,8 +242,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -251,8 +251,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -260,8 +260,8 @@ def _singular_(self, singular=None):
+             sage: R = Frac(ZZ['a,b'])['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ(a, b)
+-            //   number of vars : 2
++            // coefficients: QQ(a, b)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -270,8 +270,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -279,8 +279,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -288,8 +288,8 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -297,7 +297,7 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            // coefficients: ZZ
++            // coefficients: ZZ...
+             // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+@@ -310,8 +310,8 @@ def _singular_(self, singular=None):
+             sage: S = K['y']
+             sage: singular(S)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/5(x)
+-            //   number of vars : 2
++            // coefficients: ZZ/5(x)...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a y
+             //        block   2 : ordering C
+@@ -353,8 +353,8 @@ def _singular_init_(self, singular=None):
+ 
+             sage: PolynomialRing(QQ,'u_ba')._singular_init_()                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    u_ba
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py
+index a88568248ce..f8ddd0a9652 100644
+--- a/src/sage/rings/polynomial/term_order.py
++++ b/src/sage/rings/polynomial/term_order.py
+@@ -660,7 +660,7 @@ def __init__(self, name='lex', n=0, force=False):
+             sage: R.<x,y,z> = PolynomialRing(QQ, order=T)
+             sage: R._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+@@ -676,7 +676,7 @@ def __init__(self, name='lex', n=0, force=False):
+             False
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering C
+             //        block   2 : ordering dp
+@@ -1661,8 +1661,8 @@ def singular_str(self):
+             '(lp(3),Dp(5),lp(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 10
++            // coefficients: ZZ/127...
++            // number of vars : 10
+             //        block   1 : ordering lp
+             //                  : names    x0 x1 x2
+             //        block   2 : ordering Dp
+@@ -1687,8 +1687,8 @@ def singular_str(self):
+             '(a(1:2),ls(2),a(1:2),ls(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 4
++            // coefficients: QQ...
++            // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1709,7 +1709,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='x', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering C
+             //        block   2 : ordering a
+@@ -1727,7 +1727,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='y', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering c
+             //        block   2 : ordering a
+@@ -1745,7 +1745,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='z', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    z0 z1
+@@ -2183,7 +2183,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(C,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering C
+         //        block   2 : ordering dp
+@@ -2201,7 +2201,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(c,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering c
+         //        block   2 : ordering dp
+diff --git a/src/sage/rings/quotient_ring.py b/src/sage/rings/quotient_ring.py
+index 1043333a63e..45f8147cde9 100644
+--- a/src/sage/rings/quotient_ring.py
++++ b/src/sage/rings/quotient_ring.py
+@@ -1268,8 +1268,8 @@ def _singular_(self, singular=None):
+             sage: S = R.quotient_ring(x^2 + y^2)
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/quotient_ring_element.py b/src/sage/rings/quotient_ring_element.py
+index 6699ae9f74b..9f05c54f21c 100644
+--- a/src/sage/rings/quotient_ring_element.py
++++ b/src/sage/rings/quotient_ring_element.py
+@@ -813,8 +813,8 @@ def _singular_(self, singular=None):
+             sage: Q = P.quo(I)
+             sage: Q._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 571d8939163695..c617fe7e216c57 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-version=10.4
+version=10.5
 
 URL_BASE_PR="https://github.com/sagemath/sage/pull/"
 URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
@@ -42,6 +42,7 @@ get_pr 38749 "pari 2.17"
 get_pr 38962 "eclib 20241112"
 get_pr 39178 "giac 1.9.0.998"
 get_pr 39261 "scipy 1.15"
+get_pr 39368 "singular 4.4.1"
 
 get_pr 38940 "fix flaky simplicial set test"
 
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index 82b7e6deae951a..44706ee35410e1 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,7 +1,7 @@
 # Template file for 'sagemath'
 pkgname=sagemath
 version=10.5
-revision=1
+revision=2
 _pypi_version=${version/.beta/b}
 _pypi_version=${_pypi_version/.rc/rc}
 build_style=python3-pep517

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
@ 2025-02-03 17:31 ` tornaria
  2025-02-03 20:11 ` [PR PATCH] [Updated] " tornaria
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: tornaria @ 2025-02-03 17:31 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 337 bytes --]

New comment by tornaria on void-packages repository

https://github.com/void-linux/void-packages/pull/54198#issuecomment-2631636016

Comment:
@dkwo @Eloitor 

The i686 failure is due to an overflow in `m4ri`, in https://github.com/malb/m4ri/blame/master/m4ri/mzd.c#L152 and/or https://github.com/malb/m4ri/blame/master/m4ri/mmc.h#L75.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PR PATCH] [Updated] sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
  2025-02-03 17:31 ` tornaria
@ 2025-02-03 20:11 ` tornaria
  2025-02-04 17:34 ` tornaria
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: tornaria @ 2025-02-03 20:11 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1583 bytes --]

There is an updated pull request by tornaria against master on the void-packages repository

https://github.com/tornaria/void-packages sagemath
https://github.com/void-linux/void-packages/pull/54198

sagemath: update dependencies
Rebuild sagemath for changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular

- **flintlib: update to 3.1.3+p1.**
- **python3-cysignals: update to 1.12.3.**
- **symmetrica: update to 3.1.0.**
- **lcalc: update to 2.1.0.**
- **m4ri: update to 20250128.**
- **m4rie: update to 20250128.**
- **brial: rebuild for m4ri-20250128.**
- **eclib: update to 20250122.**
- **singular: update to 4.4.1.**
- **sagemath: rebuild for updates**

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/54198.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-sagemath-54198.patch --]
[-- Type: text/x-diff, Size: 63157 bytes --]

From f984704e319fdaeec7c872c2f936844091dd5fb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 10:02:24 -0300
Subject: [PATCH 01/11] flintlib: update to 3.1.3+p1.

---
 srcpkgs/flintlib/template | 12 ++++++------
 srcpkgs/flintlib/update   |  8 +++++---
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/flintlib/template b/srcpkgs/flintlib/template
index 465cdf1d0d3f71..7bccdd746a28b6 100644
--- a/srcpkgs/flintlib/template
+++ b/srcpkgs/flintlib/template
@@ -1,7 +1,7 @@
 # Template file for 'flintlib'
 pkgname=flintlib
-version=3.1.2
-revision=2
+version=3.1.3+p1
+revision=1
 build_style=gnu-configure
 configure_args="--prefix=/usr --disable-arch $(vopt_with ntl)
  $(vopt_if openblas --with-blas-include=${XBPS_CROSS_BASE}/usr/include/openblas)"
@@ -9,11 +9,11 @@ makedepends="mpfr-devel $(vopt_if ntl ntl-devel)
  $(vopt_if openblas openblas-devel)"
 short_desc="Fast Library for Number Theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
-license="LGPL-2.1-or-later"
+license="LGPL-3.0-or-later"
 homepage="https://flintlib.org"
-changelog="https://raw.githubusercontent.com/wbhart/flint2/trunk/NEWS"
-distfiles="https://flintlib.org/flint-${version}.tar.gz"
-checksum=fdb3a431a37464834acff3bdc145f4fe8d0f951dd5327c4c6f93f4cbac5c2700
+changelog="https://raw.githubusercontent.com/flintlib/flint/refs/heads/main/doc/source/history.rst"
+distfiles="https://github.com/flintlib/flint/releases/download/v${version/+/-}/flint-${version/+/-}.tar.xz"
+checksum=8d75df8f2347534bd3245ef6f43cb91e43abd152572c6fe0bfffda55ec014920
 
 build_options="ntl openblas"
 desc_option_ntl="enable NTL support"
diff --git a/srcpkgs/flintlib/update b/srcpkgs/flintlib/update
index 21d6ab4bae5b5c..4cdaabc14b20ea 100644
--- a/srcpkgs/flintlib/update
+++ b/srcpkgs/flintlib/update
@@ -1,3 +1,5 @@
-# package was named 'flintlib' because of another package
-pkgname=flint
-site="https://flintlib.org/downloads.html"
+pattern="/archive/refs/tags/v?\K[\d.]+(-(p|rc)[0-9]+)?(?=\.tar\.gz)"
+version=${version/+/.}
+if [[ "$version" != *rc* ]]; then
+	ignore=*rc*
+fi

From a4303d92f010f3dc23300cb7ded0bdeb7e8c42ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 08:42:56 -0300
Subject: [PATCH 02/11] python3-cysignals: update to 1.12.3.

---
 .../patches/216-fix_custom_signal.patch       | 54 -------------------
 .../patches/222-fix_data_race.patch           | 51 ------------------
 srcpkgs/python3-cysignals/template            |  4 +-
 3 files changed, 2 insertions(+), 107 deletions(-)
 delete mode 100644 srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
 delete mode 100644 srcpkgs/python3-cysignals/patches/222-fix_data_race.patch

diff --git a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch b/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
deleted file mode 100644
index ced6b8732c579c..00000000000000
--- a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/pyproject.toml b/pyproject.toml
-index d30ad23..edcb5c8 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -34,4 +34,4 @@ requires-python = ">=3.9"
- 
- [tool.pytest.ini_options]
- addopts = "--doctest-modules --import-mode importlib"
--norecursedirs = "builddir docs example"
-+testpaths = "src tests"
-diff --git a/src/cysignals/implementation.c b/src/cysignals/implementation.c
-index 20a83d0..18b8144 100644
---- a/src/cysignals/implementation.c
-+++ b/src/cysignals/implementation.c
-@@ -591,7 +591,7 @@ static void _sig_on_interrupt_received(void)
-     do_raise_exception(cysigs.interrupt_received);
-     cysigs.sig_on_count = 0;
-     cysigs.interrupt_received = 0;
--    custom_signal_unblock();
-+    custom_set_pending_signal(0);
- 
- #if HAVE_SIGPROCMASK
-     sigprocmask(SIG_SETMASK, &oldset, NULL);
-diff --git a/tests/test_custom_signals.py b/tests/test_custom_signals.py
-new file mode 100644
-index 0000000..0afc36f
---- /dev/null
-+++ b/tests/test_custom_signals.py
-@@ -0,0 +1,23 @@
-+"""
-+Tests for custom signals.
-+"""
-+
-+import time
-+import pytest
-+
-+def test_clear_pending():
-+    """
-+    Regression test for https://github.com/sagemath/cysignals/pull/216
-+    """
-+
-+    alarm = pytest.importorskip("cysignals.alarm")  # n/a on windows
-+    cypari2 = pytest.importorskip("cypari2")
-+
-+    with pytest.raises(alarm.AlarmInterrupt):
-+        alarm.alarm(0.01)
-+        time.sleep(1)
-+
-+    try:
-+        cypari2.Pari()
-+    except alarm.AlarmInterrupt:
-+        pytest.fail("AlarmInterrupt was not cleared")
diff --git a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch b/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
deleted file mode 100644
index c9fdf3885f5c22..00000000000000
--- a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/src/cysignals/signals.pyx b/src/cysignals/signals.pyx
-index 72f206e..96a99ad 100644
---- a/src/cysignals/signals.pyx
-+++ b/src/cysignals/signals.pyx
-@@ -25,7 +25,7 @@ See ``tests.pyx`` for extensive tests.
- 
- from libc.signal cimport *
- from libc.stdio cimport freopen, stdin
--from cpython.ref cimport Py_XINCREF, Py_XDECREF
-+from cpython.ref cimport Py_XINCREF, Py_CLEAR
- from cpython.exc cimport (PyErr_Occurred, PyErr_NormalizeException,
-         PyErr_Fetch, PyErr_Restore)
- from cpython.version cimport PY_MAJOR_VERSION
-@@ -204,7 +204,7 @@ cdef int sig_raise_exception "sig_raise_exception"(int sig, const char* msg) exc
-     PyErr_Fetch(&typ, &val, &tb)
-     PyErr_NormalizeException(&typ, &val, &tb)
-     Py_XINCREF(val)
--    Py_XDECREF(cysigs.exc_value)
-+    Py_CLEAR(cysigs.exc_value)
-     cysigs.exc_value = val
-     PyErr_Restore(typ, val, tb)
- 
-@@ -362,8 +362,7 @@ cdef void verify_exc_value() noexcept:
-     """
-     if cysigs.exc_value.ob_refcnt == 1:
-         # No other references => exception is certainly gone
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
-         return
- 
-     if PyErr_Occurred() is not NULL:
-@@ -394,8 +393,7 @@ cdef void verify_exc_value() noexcept:
-         pass
-     else:
-         if <PyObject*>handled is cysigs.exc_value:
--            Py_XDECREF(cysigs.exc_value)
--            cysigs.exc_value = NULL
-+            Py_CLEAR(cysigs.exc_value)
-             return
- 
-     # To be safe, we run the garbage collector because it may clear
-@@ -411,5 +409,4 @@ cdef void verify_exc_value() noexcept:
-     # called again during garbage collection it might have already been set
-     # to NULL; see https://github.com/sagemath/cysignals/issues/126
-     if cysigs.exc_value != NULL and cysigs.exc_value.ob_refcnt == 1:
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
diff --git a/srcpkgs/python3-cysignals/template b/srcpkgs/python3-cysignals/template
index b2bb20342806b1..e2216146e4c207 100644
--- a/srcpkgs/python3-cysignals/template
+++ b/srcpkgs/python3-cysignals/template
@@ -1,6 +1,6 @@
 # Template file for 'python3-cysignals'
 pkgname=python3-cysignals
-version=1.12.2
+version=1.12.3
 revision=1
 build_style=python3-pep517
 build_helper=meson
@@ -14,7 +14,7 @@ license="LGPL-3.0-or-later"
 homepage="https://github.com/sagemath/cysignals"
 changelog="https://github.com/sagemath/cysignals/releases"
 distfiles="${PYPI_SITE}/c/cysignals/cysignals-${version}.tar.gz"
-checksum=407db178fb18a91118ca742ede62000b2bee62b617eb49d26fcdad7e9ba2771a
+checksum=89f7626dbf29db5ab3d6eff15a89978f4eb5193c320e9099bcc157dacdefd1eb
 
 # cysignals must be compiled without _FORTIFY_SOURCE
 CFLAGS="-U_FORTIFY_SOURCE"

From 3115af345479f5c8ff2781cd9392c99e08dc376c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:00:12 -0300
Subject: [PATCH 03/11] symmetrica: update to 3.1.0.

---
 common/shlibs               | 2 +-
 srcpkgs/symmetrica/template | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 175786786b4936..9cc55b67ac1bac 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4199,7 +4199,7 @@ libgf2x.so.3 gf2x-1.3.0_1
 libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
-libsymmetrica.so.2 symmetrica-3.0.1_1
+libsymmetrica.so.3 symmetrica-3.1.0_1
 libLfunction.so.1 lcalc-2.0.4_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/symmetrica/template b/srcpkgs/symmetrica/template
index b6b53d3cbf6fe5..f6966e30268b17 100644
--- a/srcpkgs/symmetrica/template
+++ b/srcpkgs/symmetrica/template
@@ -1,15 +1,16 @@
 # Template file for 'symmetrica'
 pkgname=symmetrica
-version=3.0.1
+version=3.1.0
 revision=1
 build_style=gnu-configure
-hostmakedepends="automake libtool"
+hostmakedepends="automake libtool pkg-config"
 short_desc="Collection of C routines for representation theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="ISC"
 homepage="https://gitlab.com/sagemath/symmetrica"
+changelog="https://gitlab.com/sagemath/symmetrica/-/releases"
 distfiles="https://gitlab.com/sagemath/symmetrica/-/archive/${version}/symmetrica-${version}.tar.bz2"
-checksum=260028143f3ea3594fed75651e10176d2f53edae5e1af1661d5b82d617e233d6
+checksum=46137328f5dfae50167356ed9bcdf0aadef9dcb70553d3788106dc7c5b890ee8
 
 pre_configure() {
 	autoreconf -fi
@@ -24,7 +25,6 @@ symmetrica-devel_package() {
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
-		vmove "usr/lib/*.a"
 		vmove "usr/lib/*.so"
 	}
 }

From 47991110e7640fc995aa5b6462e3e123c6c283b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:14:45 -0300
Subject: [PATCH 04/11] lcalc: update to 2.1.0.

---
 common/shlibs          |  2 +-
 srcpkgs/lcalc/template | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 9cc55b67ac1bac..3583ac959a0220 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4200,7 +4200,7 @@ libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
 libsymmetrica.so.3 symmetrica-3.1.0_1
-libLfunction.so.1 lcalc-2.0.4_1
+libLfunction.so.2 lcalc-2.1.0_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
 libwayland-cursor++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/lcalc/template b/srcpkgs/lcalc/template
index aaab6d14ead440..71795bbb947a49 100644
--- a/srcpkgs/lcalc/template
+++ b/srcpkgs/lcalc/template
@@ -1,7 +1,7 @@
 # Template file for 'lcalc'
 pkgname=lcalc
-version=2.0.5
-revision=3
+version=2.1.0
+revision=1
 build_style=gnu-configure
 configure_args="--with-pari"
 hostmakedepends="automake libtool pkg-config gengetopt"
@@ -12,7 +12,12 @@ license="GPL-2.0-or-later"
 homepage="https://gitlab.com/sagemath/lcalc"
 changelog="https://gitlab.com/sagemath/lcalc/-/raw/master/doc/ChangeLog"
 distfiles="https://gitlab.com/sagemath/lcalc/-/archive/${version}/lcalc-${version}.tar.bz2"
-checksum=94efc160a2761de75df534707fd2ec53949c5389296d20ddbac1b285fe26d1ad
+checksum=463f26cc42262a90440fcec95a56cc267f00d6ac9870dfe1f4838359696664d5
+
+case $XBPS_TARGET_MACHINE in
+	# avoid numerical noise caused by extended-precision of registers
+	i686*) CXXFLAGS="-mfpmath=sse -msse2" ;;
+esac
 
 pre_configure() {
 	autoreconf -fi

From 41c31a5060e31ef76c03089c86d47834a4fbe139 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 2 Jan 2025 22:22:06 -0300
Subject: [PATCH 05/11] m4ri: update to 20250128.

---
 common/shlibs                                 |  2 +-
 .../patches/m4ri-simd_cflags_in_tests.patch   | 11 ----------
 srcpkgs/m4ri/template                         | 21 ++++++++++++-------
 3 files changed, 15 insertions(+), 19 deletions(-)
 delete mode 100644 srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch

diff --git a/common/shlibs b/common/shlibs
index 3583ac959a0220..c5faa959613064 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4251,7 +4251,7 @@ libpolys-4.4.0.so singular-4.4.0_1
 libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
-libm4ri-0.0.20200125.so m4ri-20200125_1
+libm4ri.so.1 m4ri-20250128_1
 libm4rie-0.0.20200125.so m4rie-20200125_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
diff --git a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch b/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
deleted file mode 100644
index ffa64b120fc28f..00000000000000
--- a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tests/Makefile.in	2020-01-25 01:34:59.000000000 -0300
-+++ b/tests/Makefile.in	2021-11-10 08:13:46.505793446 -0300
-@@ -609,7 +609,7 @@
- TOPBUILDDIR = $(builddir)/..
- DEFINES = 
- # include TOPBUILDIR for m4ri_config.h
--AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) @OPENMP_CFLAGS@ @PAPI_CFLAGS@
-+AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) $(SIMD_CFLAGS) $(OPENMP_CFLAGS) $(PAPI_CFLAGS)
- STAGEDIR := $(realpath -s $(TOPBUILDDIR)/.libs)
- AM_LDFLAGS = -L$(STAGEDIR) -Wl,-rpath,$(STAGEDIR) -lm4ri $(LIBM) @PAPI_LDFLAGS@ @PAPI_LIBS@ -no-install
- test_smallops_SOURCES = test_smallops.c testing.c testing.h
diff --git a/srcpkgs/m4ri/template b/srcpkgs/m4ri/template
index 56e60ed16f5998..2d7041d9591440 100644
--- a/srcpkgs/m4ri/template
+++ b/srcpkgs/m4ri/template
@@ -1,17 +1,24 @@
 # Template file for 'm4ri'
 pkgname=m4ri
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
-configure_args="--enable-openmp ax_cv_have_sse3_ext=no ax_cv_have_ssse3_ext=no"
+# use defaults for cache sizes instead of build machine
+configure_args="--enable-openmp --with-cachesize=0:0:0"
 hostmakedepends="pkg-config"
 makedepends="libgomp-devel libpng-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2)"
-maintainer="Eloi Torrents <eloitorrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4ri"
-distfiles="https://bitbucket.org/malb/m4ri/downloads/${pkgname}-${version}.tar.gz"
-checksum=0dfb34aed351882a0f2281535ea6f81c690a5efeb14edab131d9ba0dffe44863
+homepage="https://github.com/malb/m4ri"
+changelog="https://github.com/malb/m4ri#history"
+distfiles="https://github.com/malb/m4ri/releases/download/${version}/m4ri-${version}.tar.gz"
+checksum=b4098db651483c0e1506c16f79091eba02f41dadbacf1bb25be8eb97e5515f96
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4ri-devel_package() {
 	short_desc+=" - development files"

From c4854aef85219295eb79b99426ee18063892fc3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 00:50:12 -0300
Subject: [PATCH 06/11] m4rie: update to 20250128.

---
 common/shlibs          |  2 +-
 srcpkgs/m4rie/template | 21 ++++++++++++++-------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index c5faa959613064..09e5acf3fc7625 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4252,7 +4252,7 @@ libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
-libm4rie-0.0.20200125.so m4rie-20200125_1
+libm4rie.so.1 m4rie-20250128_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
 libKPim6PkPass.so.6 kpkpass-24.02.0_1
diff --git a/srcpkgs/m4rie/template b/srcpkgs/m4rie/template
index 0e775df1dc1ce0..f327a02526a0b4 100644
--- a/srcpkgs/m4rie/template
+++ b/srcpkgs/m4rie/template
@@ -1,19 +1,26 @@
 # Template file for 'm4rie'
 pkgname=m4rie
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
+hostmakedepends="pkg-config"
 makedepends="m4ri-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2^e)"
-maintainer="Eloi Torrents <eloi.torrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4rie/wiki/Home"
-distfiles="https://bitbucket.org/malb/m4rie/downloads/m4rie-${version}.tar.gz"
-checksum=7f3107f7cd10f6c22d9663d9536e1af2f551e10183601852a60d760918caf58d
+homepage="https://github.com/malb/m4rie"
+changelog="https://github.com/malb/m4rie#history"
+distfiles="https://github.com/malb/m4rie/releases/download/${version}/m4rie-${version}.tar.gz"
+checksum=96f1adafd50e6a0b51dc3aa1cb56cb6c1361ae7c10d97dc35c3fa70822a55bd7
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4rie-devel_package() {
 	short_desc+=" - development files"
-	depends="${sourcepkg}>=${version}_${revision}"
+	depends="${sourcepkg}>=${version}_${revision} ${makedepends}"
 	pkg_install() {
 		vmove usr/include
 		vmove "usr/lib/*.a"

From ff14aefa9fc34c9a05cbf14ebf6c6aa4ed9fd866 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 14:53:06 -0300
Subject: [PATCH 07/11] brial: rebuild for m4ri-20250128.

---
 srcpkgs/brial/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/brial/template b/srcpkgs/brial/template
index 2f8e195a8804ba..3fee9468bdc86d 100644
--- a/srcpkgs/brial/template
+++ b/srcpkgs/brial/template
@@ -1,7 +1,7 @@
 # Template file for 'brial'
 pkgname=brial
 version=1.2.12
-revision=1
+revision=2
 build_style=gnu-configure
 hostmakedepends="pkg-config"
 makedepends="boost-devel m4ri-devel"

From 94d030420f985ce5516efb6e5ead2494c9f9e439 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 23 Jan 2025 00:49:42 -0300
Subject: [PATCH 08/11] eclib: update to 20250122.

---
 srcpkgs/eclib/patches/fix-32bit-modrat.patch | 15 ---------------
 srcpkgs/eclib/template                       |  6 +++---
 2 files changed, 3 insertions(+), 18 deletions(-)
 delete mode 100644 srcpkgs/eclib/patches/fix-32bit-modrat.patch

diff --git a/srcpkgs/eclib/patches/fix-32bit-modrat.patch b/srcpkgs/eclib/patches/fix-32bit-modrat.patch
deleted file mode 100644
index 14988e0a793fa5..00000000000000
--- a/srcpkgs/eclib/patches/fix-32bit-modrat.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-new_modrat is broken on 32 bit, revert to old_modrat
-
---- a/libsrc/arith.cc
-+++ b/libsrc/arith.cc
-@@ -429,8 +430,8 @@ int new_modrat(long n, long m, long& a, long& b);
- 
- int modrat(long n, long m, long& a, long& b)
- {
--  // return old_modrat(n, m, a, b);
--  return new_modrat(n, m, a, b);
-+  return old_modrat(n, m, a, b);
-+  //return new_modrat(n, m, a, b);
- }
- 
- int old_modrat(long n, long m, long& a, long& b)
diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template
index 75fd264f57be5a..86294212ae64a9 100644
--- a/srcpkgs/eclib/template
+++ b/srcpkgs/eclib/template
@@ -1,6 +1,6 @@
 # Template file for 'eclib'
 pkgname=eclib
-version=20241112
+version=20250122
 revision=1
 build_style=gnu-configure
 configure_args="--with-flint --with-boost"
@@ -10,8 +10,8 @@ maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="GPL-2.0-or-later"
 homepage="https://github.com/JohnCremona/eclib"
 changelog="https://github.com/JohnCremona/eclib/releases"
-distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2"
-checksum=30765c27ca1420141f83517897119d0185fea9b31132392170ddae40b060e46f
+distfiles="https://github.com/JohnCremona/eclib/releases/download/${version}/eclib-${version}.tar.bz2"
+checksum=9f8c2b32e24a4f20d7cc2d336ea30c8ea03b5b0953c2d32adda0c496e7616899
 
 eclib-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} ntl-devel"

From 9bac68e387cf5460453fd29299a34d06102eaa11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 21 Jan 2025 20:11:14 -0300
Subject: [PATCH 09/11] singular: update to 4.4.1.

---
 common/shlibs             | 8 ++++----
 srcpkgs/singular/template | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 09e5acf3fc7625..34eb4ce8b27957 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4245,10 +4245,10 @@ libecl.so.24.5 ecl-24.5.10_1
 libecm.so.1 ecm-7.0.4_3
 libcliquer.so.1 cliquer-1.22_1
 libomalloc-0.9.6.so singular-4.2.1_1
-libSingular-4.4.0.so singular-4.4.0_1
-libfactory-4.4.0.so singular-4.4.0_1
-libpolys-4.4.0.so singular-4.4.0_1
-libsingular_resources-4.4.0.so singular-4.4.0_1
+libSingular-4.4.1.so singular-4.4.1_1
+libfactory-4.4.1.so singular-4.4.1_1
+libpolys-4.4.1.so singular-4.4.1_1
+libsingular_resources-4.4.1.so singular-4.4.1_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
diff --git a/srcpkgs/singular/template b/srcpkgs/singular/template
index aa4899c7bdaab9..310b5a08ec064a 100644
--- a/srcpkgs/singular/template
+++ b/srcpkgs/singular/template
@@ -1,6 +1,6 @@
 # Template file for 'singular'
 pkgname=singular
-version=4.4.0
+version=4.4.1
 revision=1
 _majver=${version%p*}
 build_style=gnu-configure
@@ -20,7 +20,7 @@ maintainer="dkwo <npiazza@disroot.org>, Gonzalo Tornaría <tornaria@cmat.edu.uy>
 license="GPL-2.0-or-later"
 homepage="https://www.singular.uni-kl.de"
 distfiles="https://www.singular.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${_majver//./-}/singular-${version}.tar.gz"
-checksum=c269abbd24c84fe33edc0af1e78b8fec53d8e94338410ac06c2666cfd40d43f2
+checksum=6a4fbaaed05b89c35bff3b1c5e124344a088097f81affe129c9ae619b282b49b
 
 if [ -z "$CROSS_BUILD" ]; then
 	makedepends+=" ntl-devel"

From e0a264fbf5a279d91302932a52ad7582e624906c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 15:08:10 -0300
Subject: [PATCH 10/11] sagemath: rebuild for updates

changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular
---
 .../patches/39368-singular_4.4.1.patch        | 715 ++++++++++++++++++
 srcpkgs/sagemath/patches/get_patches          |   3 +-
 srcpkgs/sagemath/template                     |   2 +-
 3 files changed, 718 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/sagemath/patches/39368-singular_4.4.1.patch

diff --git a/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
new file mode 100644
index 00000000000000..aba16fa1d7ae75
--- /dev/null
+++ b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
@@ -0,0 +1,715 @@
+diff --git a/src/sage/categories/pushout.py b/src/sage/categories/pushout.py
+index a2b5e910257..17f059f967f 100644
+--- a/src/sage/categories/pushout.py
++++ b/src/sage/categories/pushout.py
+@@ -3925,8 +3925,8 @@ class BlackBoxConstructionFunctor(ConstructionFunctor):
+         sage: FS = BlackBoxConstructionFunctor(singular)
+         sage: FS(QQ['t'])                                                               # needs sage.libs.singular
+         polynomial ring, over a field, global ordering
+-        //   coefficients: QQ
+-        //   number of vars : 1
++        // coefficients: QQ...
++        // number of vars : 1
+         //        block   1 : ordering lp
+         //                  : names    t
+         //        block   2 : ordering C
+diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
+index 91f8efcf651..ff424335d56 100644
+--- a/src/sage/interfaces/expect.py
++++ b/src/sage/interfaces/expect.py
+@@ -1328,8 +1328,8 @@ def _synchronize(self, cmd='1+%s;\n'):
+             sage: R.<x> = QQ[]; f = x^3 + x + 1;  g = x^3 - x - 1; r = f.resultant(g); gap(ZZ); singular(R)
+             Integers
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/interface.py b/src/sage/interfaces/interface.py
+index bd1095e8c70..22fb4b8487c 100644
+--- a/src/sage/interfaces/interface.py
++++ b/src/sage/interfaces/interface.py
+@@ -817,8 +817,8 @@ def __reduce__(self):
+             sage: S = singular.ring(0, ('x'))
+             sage: loads(dumps(S))
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
+index d110c17bf16..59d01f4493d 100644
+--- a/src/sage/interfaces/singular.py
++++ b/src/sage/interfaces/singular.py
+@@ -39,8 +39,8 @@
+     sage: R1 = singular.ring(0, '(x,y)', 'dp')
+     sage: R1
+     polynomial ring, over a field, global ordering
+-    //   coefficients: QQ
+-    //   number of vars : 2
++    // coefficients: QQ...
++    // number of vars : 2
+     //        block   1 : ordering dp
+     //                  : names    x y
+     //        block   2 : ordering C
+@@ -220,12 +220,12 @@
+ 
+     sage: singular.lib('polylib.lib')
+     sage: singular.ring(32003, '(a,b,c,d,e,f)', 'lp')
+-            polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/32003
+-            //   number of vars : 6
+-            //        block   1 : ordering lp
+-            //                        : names    a b c d e f
+-            //        block   2 : ordering C
++    polynomial ring, over a field, global ordering
++    // coefficients: ZZ/32003...
++    // number of vars : 6
++    //        block   1 : ordering lp
++    //                        : names    a b c d e f
++    //        block   2 : ordering C
+     sage: I = singular.ideal('cyclic(6)')
+     sage: g = singular('groebner(I)')
+     Traceback (most recent call last):
+@@ -1074,8 +1074,8 @@ def ring(self, char=0, vars='(x)', order='lp', check=None):
+             sage: R = singular.ring(0, '(x,y,z)', 'dp')
+             sage: R
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1153,16 +1153,16 @@ def set_ring(self, R):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: singular.set_ring(R)
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+@@ -1203,15 +1203,15 @@ def current_ring(self):
+             sage: r = PolynomialRing(GF(127),3,'xyz', order='invlex')
+             sage: r._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1430,8 +1430,8 @@ def __copy__(self):
+             sage: cpQ.set_ring()
+             sage: cpQ
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1996,8 +1996,8 @@ def _sage_(self, R=None):
+ 
+             sage: singular('basering')
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 3
++            // coefficients: ZZ...
++            // number of vars : 3
+             //        block   1 : ordering lp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -2087,16 +2087,16 @@ def set_ring(self):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: R.set_ring()
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
+index 67cadf5d35c..87f0b7bab69 100644
+--- a/src/sage/libs/singular/function.pyx
++++ b/src/sage/libs/singular/function.pyx
+@@ -276,8 +276,8 @@ cdef class RingWrap:
+             sage: l = ringlist(P)
+             sage: ring = singular_function("ring")
+             sage: ring(l, ring=P)._output()
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx
+index 1d8dd844385..4f7e288e2ad 100644
+--- a/src/sage/libs/singular/ring.pyx
++++ b/src/sage/libs/singular/ring.pyx
+@@ -159,8 +159,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: ZZ/7(a, b)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: ZZ/7(a, b)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+ 
+     ::
+ 
+@@ -168,8 +173,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: QQ(s, t)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: QQ(s, t)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+     """
+     cdef long cexponent
+     cdef GFInfo* _param
+diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+index adf3df1cf95..bab5935004b 100644
+--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
++++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+@@ -619,8 +619,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+ 
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1182,8 +1182,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1198,8 +1198,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = PolynomialRing(k, 3)                                      # needs sage.rings.finite_rings
+             sage: P._singular_()                                                        # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/3[a]/(a^3-a+1)
+-            //   number of vars : 3
++            // coefficients: ZZ/3[a]/(a^3-a+1)...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1215,8 +1215,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1257,8 +1257,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1272,8 +1272,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R.<x,y> = PolynomialRing(NumberField(w^2 + 1,'s'))                    # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 2
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1281,8 +1281,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(2**8,'a'),10,'x', order='invlex')               # needs sage.rings.finite_rings
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)
+-            //   number of vars : 10
++            // coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)...
++            // number of vars : 10
+             //        block   1 : ordering ip
+             //                  : names    x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
+             //        block   2 : ordering C
+@@ -1290,8 +1290,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 2
++            // coefficients: ZZ/127...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1299,8 +1299,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1308,8 +1308,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='degneglex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1320,8 +1320,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1329,8 +1329,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),'x')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1338,8 +1338,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1347,8 +1347,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1356,8 +1356,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1367,8 +1367,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/pbori/pbori.pyx b/src/sage/rings/polynomial/pbori/pbori.pyx
+index 14a929c3238..404771a2c85 100644
+--- a/src/sage/rings/polynomial/pbori/pbori.pyx
++++ b/src/sage/rings/polynomial/pbori/pbori.pyx
+@@ -1425,8 +1425,8 @@ cdef class BooleanPolynomialRing(BooleanPolynomialRing_base):
+             sage: B.<x,y> = BooleanPolynomialRing(2)
+             sage: B._singular_() # indirect doctest
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_quotient_ring.py b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+index 115647adadf..627765cf8f0 100644
+--- a/src/sage/rings/polynomial/polynomial_quotient_ring.py
++++ b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+@@ -749,8 +749,8 @@ def _singular_init_(self, S=None):
+             sage: Q = P.quo([(x^2 + 1)])
+             sage: singular(Q)        # indirect doctest                                 # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    xbar
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py
+index 60d2dd74b52..10bbc6d6ec0 100644
+--- a/src/sage/rings/polynomial/polynomial_singular_interface.py
++++ b/src/sage/rings/polynomial/polynomial_singular_interface.py
+@@ -62,7 +62,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order):
+         sage: from sage.rings.polynomial.polynomial_singular_interface import _do_singular_init_
+         sage: _do_singular_init_(singular, ZZ, 0, 'X', 'dp')                            # needs sage.libs.singular
+         (polynomial ring, over a domain, global ordering
+-         // coefficients: ZZ
++         // coefficients: ZZ...
+          // number of vars : 1
+          //        block   1 : ordering dp
+          //                  : names    X
+@@ -196,7 +196,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(CC)                                          # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)
++            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -205,7 +205,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(RealField(100))                              # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: Float()
++            // coefficients: Float()...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -215,8 +215,8 @@ def _singular_(self, singular=None):
+             sage: R.<x> = PolynomialRing(NumberField(w^2 + 1, 's'))                     # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 1
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -224,8 +224,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x', implementation='singular')           # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -233,8 +233,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ, 'x', implementation='singular')                # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -242,8 +242,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -251,8 +251,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -260,8 +260,8 @@ def _singular_(self, singular=None):
+             sage: R = Frac(ZZ['a,b'])['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ(a, b)
+-            //   number of vars : 2
++            // coefficients: QQ(a, b)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -270,8 +270,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -279,8 +279,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -288,8 +288,8 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -297,7 +297,7 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            // coefficients: ZZ
++            // coefficients: ZZ...
+             // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+@@ -310,8 +310,8 @@ def _singular_(self, singular=None):
+             sage: S = K['y']
+             sage: singular(S)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/5(x)
+-            //   number of vars : 2
++            // coefficients: ZZ/5(x)...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a y
+             //        block   2 : ordering C
+@@ -353,8 +353,8 @@ def _singular_init_(self, singular=None):
+ 
+             sage: PolynomialRing(QQ,'u_ba')._singular_init_()                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    u_ba
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py
+index a88568248ce..f8ddd0a9652 100644
+--- a/src/sage/rings/polynomial/term_order.py
++++ b/src/sage/rings/polynomial/term_order.py
+@@ -660,7 +660,7 @@ def __init__(self, name='lex', n=0, force=False):
+             sage: R.<x,y,z> = PolynomialRing(QQ, order=T)
+             sage: R._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+@@ -676,7 +676,7 @@ def __init__(self, name='lex', n=0, force=False):
+             False
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering C
+             //        block   2 : ordering dp
+@@ -1661,8 +1661,8 @@ def singular_str(self):
+             '(lp(3),Dp(5),lp(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 10
++            // coefficients: ZZ/127...
++            // number of vars : 10
+             //        block   1 : ordering lp
+             //                  : names    x0 x1 x2
+             //        block   2 : ordering Dp
+@@ -1687,8 +1687,8 @@ def singular_str(self):
+             '(a(1:2),ls(2),a(1:2),ls(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 4
++            // coefficients: QQ...
++            // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1709,7 +1709,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='x', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering C
+             //        block   2 : ordering a
+@@ -1727,7 +1727,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='y', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering c
+             //        block   2 : ordering a
+@@ -1745,7 +1745,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='z', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    z0 z1
+@@ -2183,7 +2183,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(C,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering C
+         //        block   2 : ordering dp
+@@ -2201,7 +2201,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(c,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering c
+         //        block   2 : ordering dp
+diff --git a/src/sage/rings/quotient_ring.py b/src/sage/rings/quotient_ring.py
+index 1043333a63e..45f8147cde9 100644
+--- a/src/sage/rings/quotient_ring.py
++++ b/src/sage/rings/quotient_ring.py
+@@ -1268,8 +1268,8 @@ def _singular_(self, singular=None):
+             sage: S = R.quotient_ring(x^2 + y^2)
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/quotient_ring_element.py b/src/sage/rings/quotient_ring_element.py
+index 6699ae9f74b..9f05c54f21c 100644
+--- a/src/sage/rings/quotient_ring_element.py
++++ b/src/sage/rings/quotient_ring_element.py
+@@ -813,8 +813,8 @@ def _singular_(self, singular=None):
+             sage: Q = P.quo(I)
+             sage: Q._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 571d8939163695..c617fe7e216c57 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-version=10.4
+version=10.5
 
 URL_BASE_PR="https://github.com/sagemath/sage/pull/"
 URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
@@ -42,6 +42,7 @@ get_pr 38749 "pari 2.17"
 get_pr 38962 "eclib 20241112"
 get_pr 39178 "giac 1.9.0.998"
 get_pr 39261 "scipy 1.15"
+get_pr 39368 "singular 4.4.1"
 
 get_pr 38940 "fix flaky simplicial set test"
 
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index 82b7e6deae951a..44706ee35410e1 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,7 +1,7 @@
 # Template file for 'sagemath'
 pkgname=sagemath
 version=10.5
-revision=1
+revision=2
 _pypi_version=${version/.beta/b}
 _pypi_version=${_pypi_version/.rc/rc}
 build_style=python3-pep517

From 1444c52aea791711d61b1261a7f66c621c676c7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Mon, 3 Feb 2025 17:10:48 -0300
Subject: [PATCH 11/11] m4ri: fix overflow on i686

---
 srcpkgs/m4ri/patches/fix-overflow-32bit.patch | 35 +++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 srcpkgs/m4ri/patches/fix-overflow-32bit.patch

diff --git a/srcpkgs/m4ri/patches/fix-overflow-32bit.patch b/srcpkgs/m4ri/patches/fix-overflow-32bit.patch
new file mode 100644
index 00000000000000..5249b0b51cac04
--- /dev/null
+++ b/srcpkgs/m4ri/patches/fix-overflow-32bit.patch
@@ -0,0 +1,35 @@
+diff --git a/m4ri/mmc.h b/m4ri/mmc.h
+index e6db4ca..3e97391 100644
+--- a/m4ri/mmc.h
++++ b/m4ri/mmc.h
+@@ -72,6 +72,10 @@ typedef struct _mm_block {
+  * \return Pointer to allocated memory block.
+  */
+ static inline void *m4ri_mmc_calloc(size_t count, size_t size) {
++  if (size && count > SIZE_MAX/size) {
++      m4ri_die("m4ri_mmc_calloc: overflow in multiplication\n");
++      return NULL; /* unreachable */
++  }
+   size_t total_size = count * size;
+   void *ret         = m4ri_mmc_malloc(total_size);
+   memset((char *)ret, 0, total_size);
+diff --git a/m4ri/mzd.c b/m4ri/mzd.c
+index ba04b7c..ac62c5c 100644
+--- a/m4ri/mzd.c
++++ b/m4ri/mzd.c
+@@ -144,13 +144,12 @@ mzd_t *mzd_init(rci_t r, rci_t c) {
+   mzd_t *A = mzd_t_malloc();
+   A->nrows         = r;
+   A->ncols         = c;
+-  A->width         = (c + m4ri_radix - 1) / m4ri_radix;
++  A->width         = c > 0 ? (c - 1) / m4ri_radix + 1 : 0;
+   A->rowstride     = ((A->width & 1) == 0) ? A->width : A->width + 1;
+   A->high_bitmask  = __M4RI_LEFT_BITMASK(c % m4ri_radix);
+   A->flags         = (A->high_bitmask != m4ri_ffff) ? mzd_flag_nonzero_excess : 0;
+   if (r && c) {
+-    size_t block_words = r * A->rowstride;
+-    A->data = m4ri_mmc_calloc(block_words, sizeof(word));
++    A->data = m4ri_mmc_calloc(r, sizeof(word) * A->rowstride);
+   } else {
+     A->data = NULL;
+   }

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PR PATCH] [Updated] sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
  2025-02-03 17:31 ` tornaria
  2025-02-03 20:11 ` [PR PATCH] [Updated] " tornaria
@ 2025-02-04 17:34 ` tornaria
  2025-02-04 17:39 ` tornaria
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: tornaria @ 2025-02-04 17:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1583 bytes --]

There is an updated pull request by tornaria against master on the void-packages repository

https://github.com/tornaria/void-packages sagemath
https://github.com/void-linux/void-packages/pull/54198

sagemath: update dependencies
Rebuild sagemath for changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular

- **flintlib: update to 3.1.3+p1.**
- **python3-cysignals: update to 1.12.3.**
- **symmetrica: update to 3.1.0.**
- **lcalc: update to 2.1.0.**
- **m4ri: update to 20250128.**
- **m4rie: update to 20250128.**
- **brial: rebuild for m4ri-20250128.**
- **eclib: update to 20250122.**
- **singular: update to 4.4.1.**
- **sagemath: rebuild for updates**

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/54198.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-sagemath-54198.patch --]
[-- Type: text/x-diff, Size: 63219 bytes --]

From cbbec43ffc26900733ab1f124a6947e28b5d1c8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 10:02:24 -0300
Subject: [PATCH 01/10] flintlib: update to 3.1.3+p1.

---
 srcpkgs/flintlib/template | 12 ++++++------
 srcpkgs/flintlib/update   |  8 +++++---
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/flintlib/template b/srcpkgs/flintlib/template
index 465cdf1d0d3f71..7bccdd746a28b6 100644
--- a/srcpkgs/flintlib/template
+++ b/srcpkgs/flintlib/template
@@ -1,7 +1,7 @@
 # Template file for 'flintlib'
 pkgname=flintlib
-version=3.1.2
-revision=2
+version=3.1.3+p1
+revision=1
 build_style=gnu-configure
 configure_args="--prefix=/usr --disable-arch $(vopt_with ntl)
  $(vopt_if openblas --with-blas-include=${XBPS_CROSS_BASE}/usr/include/openblas)"
@@ -9,11 +9,11 @@ makedepends="mpfr-devel $(vopt_if ntl ntl-devel)
  $(vopt_if openblas openblas-devel)"
 short_desc="Fast Library for Number Theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
-license="LGPL-2.1-or-later"
+license="LGPL-3.0-or-later"
 homepage="https://flintlib.org"
-changelog="https://raw.githubusercontent.com/wbhart/flint2/trunk/NEWS"
-distfiles="https://flintlib.org/flint-${version}.tar.gz"
-checksum=fdb3a431a37464834acff3bdc145f4fe8d0f951dd5327c4c6f93f4cbac5c2700
+changelog="https://raw.githubusercontent.com/flintlib/flint/refs/heads/main/doc/source/history.rst"
+distfiles="https://github.com/flintlib/flint/releases/download/v${version/+/-}/flint-${version/+/-}.tar.xz"
+checksum=8d75df8f2347534bd3245ef6f43cb91e43abd152572c6fe0bfffda55ec014920
 
 build_options="ntl openblas"
 desc_option_ntl="enable NTL support"
diff --git a/srcpkgs/flintlib/update b/srcpkgs/flintlib/update
index 21d6ab4bae5b5c..4cdaabc14b20ea 100644
--- a/srcpkgs/flintlib/update
+++ b/srcpkgs/flintlib/update
@@ -1,3 +1,5 @@
-# package was named 'flintlib' because of another package
-pkgname=flint
-site="https://flintlib.org/downloads.html"
+pattern="/archive/refs/tags/v?\K[\d.]+(-(p|rc)[0-9]+)?(?=\.tar\.gz)"
+version=${version/+/.}
+if [[ "$version" != *rc* ]]; then
+	ignore=*rc*
+fi

From 1e5328aadd2e5d43dd223677aed88a33f25f067f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 30 Jan 2025 08:42:56 -0300
Subject: [PATCH 02/10] python3-cysignals: update to 1.12.3.

---
 .../patches/216-fix_custom_signal.patch       | 54 -------------------
 .../patches/222-fix_data_race.patch           | 51 ------------------
 srcpkgs/python3-cysignals/template            |  4 +-
 3 files changed, 2 insertions(+), 107 deletions(-)
 delete mode 100644 srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
 delete mode 100644 srcpkgs/python3-cysignals/patches/222-fix_data_race.patch

diff --git a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch b/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
deleted file mode 100644
index ced6b8732c579c..00000000000000
--- a/srcpkgs/python3-cysignals/patches/216-fix_custom_signal.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/pyproject.toml b/pyproject.toml
-index d30ad23..edcb5c8 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -34,4 +34,4 @@ requires-python = ">=3.9"
- 
- [tool.pytest.ini_options]
- addopts = "--doctest-modules --import-mode importlib"
--norecursedirs = "builddir docs example"
-+testpaths = "src tests"
-diff --git a/src/cysignals/implementation.c b/src/cysignals/implementation.c
-index 20a83d0..18b8144 100644
---- a/src/cysignals/implementation.c
-+++ b/src/cysignals/implementation.c
-@@ -591,7 +591,7 @@ static void _sig_on_interrupt_received(void)
-     do_raise_exception(cysigs.interrupt_received);
-     cysigs.sig_on_count = 0;
-     cysigs.interrupt_received = 0;
--    custom_signal_unblock();
-+    custom_set_pending_signal(0);
- 
- #if HAVE_SIGPROCMASK
-     sigprocmask(SIG_SETMASK, &oldset, NULL);
-diff --git a/tests/test_custom_signals.py b/tests/test_custom_signals.py
-new file mode 100644
-index 0000000..0afc36f
---- /dev/null
-+++ b/tests/test_custom_signals.py
-@@ -0,0 +1,23 @@
-+"""
-+Tests for custom signals.
-+"""
-+
-+import time
-+import pytest
-+
-+def test_clear_pending():
-+    """
-+    Regression test for https://github.com/sagemath/cysignals/pull/216
-+    """
-+
-+    alarm = pytest.importorskip("cysignals.alarm")  # n/a on windows
-+    cypari2 = pytest.importorskip("cypari2")
-+
-+    with pytest.raises(alarm.AlarmInterrupt):
-+        alarm.alarm(0.01)
-+        time.sleep(1)
-+
-+    try:
-+        cypari2.Pari()
-+    except alarm.AlarmInterrupt:
-+        pytest.fail("AlarmInterrupt was not cleared")
diff --git a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch b/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
deleted file mode 100644
index c9fdf3885f5c22..00000000000000
--- a/srcpkgs/python3-cysignals/patches/222-fix_data_race.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Taken from https://github.com/sagemath/cysignals/pull/222
-
-diff --git a/src/cysignals/signals.pyx b/src/cysignals/signals.pyx
-index 72f206e..96a99ad 100644
---- a/src/cysignals/signals.pyx
-+++ b/src/cysignals/signals.pyx
-@@ -25,7 +25,7 @@ See ``tests.pyx`` for extensive tests.
- 
- from libc.signal cimport *
- from libc.stdio cimport freopen, stdin
--from cpython.ref cimport Py_XINCREF, Py_XDECREF
-+from cpython.ref cimport Py_XINCREF, Py_CLEAR
- from cpython.exc cimport (PyErr_Occurred, PyErr_NormalizeException,
-         PyErr_Fetch, PyErr_Restore)
- from cpython.version cimport PY_MAJOR_VERSION
-@@ -204,7 +204,7 @@ cdef int sig_raise_exception "sig_raise_exception"(int sig, const char* msg) exc
-     PyErr_Fetch(&typ, &val, &tb)
-     PyErr_NormalizeException(&typ, &val, &tb)
-     Py_XINCREF(val)
--    Py_XDECREF(cysigs.exc_value)
-+    Py_CLEAR(cysigs.exc_value)
-     cysigs.exc_value = val
-     PyErr_Restore(typ, val, tb)
- 
-@@ -362,8 +362,7 @@ cdef void verify_exc_value() noexcept:
-     """
-     if cysigs.exc_value.ob_refcnt == 1:
-         # No other references => exception is certainly gone
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
-         return
- 
-     if PyErr_Occurred() is not NULL:
-@@ -394,8 +393,7 @@ cdef void verify_exc_value() noexcept:
-         pass
-     else:
-         if <PyObject*>handled is cysigs.exc_value:
--            Py_XDECREF(cysigs.exc_value)
--            cysigs.exc_value = NULL
-+            Py_CLEAR(cysigs.exc_value)
-             return
- 
-     # To be safe, we run the garbage collector because it may clear
-@@ -411,5 +409,4 @@ cdef void verify_exc_value() noexcept:
-     # called again during garbage collection it might have already been set
-     # to NULL; see https://github.com/sagemath/cysignals/issues/126
-     if cysigs.exc_value != NULL and cysigs.exc_value.ob_refcnt == 1:
--        Py_XDECREF(cysigs.exc_value)
--        cysigs.exc_value = NULL
-+        Py_CLEAR(cysigs.exc_value)
diff --git a/srcpkgs/python3-cysignals/template b/srcpkgs/python3-cysignals/template
index b2bb20342806b1..e2216146e4c207 100644
--- a/srcpkgs/python3-cysignals/template
+++ b/srcpkgs/python3-cysignals/template
@@ -1,6 +1,6 @@
 # Template file for 'python3-cysignals'
 pkgname=python3-cysignals
-version=1.12.2
+version=1.12.3
 revision=1
 build_style=python3-pep517
 build_helper=meson
@@ -14,7 +14,7 @@ license="LGPL-3.0-or-later"
 homepage="https://github.com/sagemath/cysignals"
 changelog="https://github.com/sagemath/cysignals/releases"
 distfiles="${PYPI_SITE}/c/cysignals/cysignals-${version}.tar.gz"
-checksum=407db178fb18a91118ca742ede62000b2bee62b617eb49d26fcdad7e9ba2771a
+checksum=89f7626dbf29db5ab3d6eff15a89978f4eb5193c320e9099bcc157dacdefd1eb
 
 # cysignals must be compiled without _FORTIFY_SOURCE
 CFLAGS="-U_FORTIFY_SOURCE"

From 1449695a4bfb49f7280c6e265d5e17c21f6965ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:00:12 -0300
Subject: [PATCH 03/10] symmetrica: update to 3.1.0.

---
 common/shlibs               | 2 +-
 srcpkgs/symmetrica/template | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 998affa4304c10..aaa31e3b212707 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4199,7 +4199,7 @@ libgf2x.so.3 gf2x-1.3.0_1
 libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
-libsymmetrica.so.2 symmetrica-3.0.1_1
+libsymmetrica.so.3 symmetrica-3.1.0_1
 libLfunction.so.1 lcalc-2.0.4_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/symmetrica/template b/srcpkgs/symmetrica/template
index b6b53d3cbf6fe5..f6966e30268b17 100644
--- a/srcpkgs/symmetrica/template
+++ b/srcpkgs/symmetrica/template
@@ -1,15 +1,16 @@
 # Template file for 'symmetrica'
 pkgname=symmetrica
-version=3.0.1
+version=3.1.0
 revision=1
 build_style=gnu-configure
-hostmakedepends="automake libtool"
+hostmakedepends="automake libtool pkg-config"
 short_desc="Collection of C routines for representation theory"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="ISC"
 homepage="https://gitlab.com/sagemath/symmetrica"
+changelog="https://gitlab.com/sagemath/symmetrica/-/releases"
 distfiles="https://gitlab.com/sagemath/symmetrica/-/archive/${version}/symmetrica-${version}.tar.bz2"
-checksum=260028143f3ea3594fed75651e10176d2f53edae5e1af1661d5b82d617e233d6
+checksum=46137328f5dfae50167356ed9bcdf0aadef9dcb70553d3788106dc7c5b890ee8
 
 pre_configure() {
 	autoreconf -fi
@@ -24,7 +25,6 @@ symmetrica-devel_package() {
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
-		vmove "usr/lib/*.a"
 		vmove "usr/lib/*.so"
 	}
 }

From e348d6689e6fe7330c55bbb47fb49c89016142d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 14 Jan 2025 21:14:45 -0300
Subject: [PATCH 04/10] lcalc: update to 2.1.0.

---
 common/shlibs          |  2 +-
 srcpkgs/lcalc/template | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index aaa31e3b212707..9ff6ff161fb410 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4200,7 +4200,7 @@ libntl.so.44 ntl-11.5.1_1
 libflint.so.19 flintlib-3.1.0_1
 libec.so.14 eclib-20241112_1
 libsymmetrica.so.3 symmetrica-3.1.0_1
-libLfunction.so.1 lcalc-2.0.4_1
+libLfunction.so.2 lcalc-2.1.0_1
 liblrcalc.so.2 lrcalc-2.1_1
 libwayland-client++.so.1 libwaylandpp-1.0.0_1
 libwayland-cursor++.so.1 libwaylandpp-1.0.0_1
diff --git a/srcpkgs/lcalc/template b/srcpkgs/lcalc/template
index aaab6d14ead440..71795bbb947a49 100644
--- a/srcpkgs/lcalc/template
+++ b/srcpkgs/lcalc/template
@@ -1,7 +1,7 @@
 # Template file for 'lcalc'
 pkgname=lcalc
-version=2.0.5
-revision=3
+version=2.1.0
+revision=1
 build_style=gnu-configure
 configure_args="--with-pari"
 hostmakedepends="automake libtool pkg-config gengetopt"
@@ -12,7 +12,12 @@ license="GPL-2.0-or-later"
 homepage="https://gitlab.com/sagemath/lcalc"
 changelog="https://gitlab.com/sagemath/lcalc/-/raw/master/doc/ChangeLog"
 distfiles="https://gitlab.com/sagemath/lcalc/-/archive/${version}/lcalc-${version}.tar.bz2"
-checksum=94efc160a2761de75df534707fd2ec53949c5389296d20ddbac1b285fe26d1ad
+checksum=463f26cc42262a90440fcec95a56cc267f00d6ac9870dfe1f4838359696664d5
+
+case $XBPS_TARGET_MACHINE in
+	# avoid numerical noise caused by extended-precision of registers
+	i686*) CXXFLAGS="-mfpmath=sse -msse2" ;;
+esac
 
 pre_configure() {
 	autoreconf -fi

From 67e1e126cee1042ddb016ca29220f5b4cefceef8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 2 Jan 2025 22:22:06 -0300
Subject: [PATCH 05/10] m4ri: update to 20250128.

---
 common/shlibs                                 |  2 +-
 .../m4ri/patches/28-fix-overflow-32bit.patch  | 45 +++++++++++++++++++
 .../patches/m4ri-simd_cflags_in_tests.patch   | 11 -----
 srcpkgs/m4ri/template                         | 21 ++++++---
 4 files changed, 60 insertions(+), 19 deletions(-)
 create mode 100644 srcpkgs/m4ri/patches/28-fix-overflow-32bit.patch
 delete mode 100644 srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch

diff --git a/common/shlibs b/common/shlibs
index 9ff6ff161fb410..200d683469a1ea 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4251,7 +4251,7 @@ libpolys-4.4.0.so singular-4.4.0_1
 libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
-libm4ri-0.0.20200125.so m4ri-20200125_1
+libm4ri.so.1 m4ri-20250128_1
 libm4rie-0.0.20200125.so m4rie-20200125_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
diff --git a/srcpkgs/m4ri/patches/28-fix-overflow-32bit.patch b/srcpkgs/m4ri/patches/28-fix-overflow-32bit.patch
new file mode 100644
index 00000000000000..6ad64573693a63
--- /dev/null
+++ b/srcpkgs/m4ri/patches/28-fix-overflow-32bit.patch
@@ -0,0 +1,45 @@
+From b178ed36bdd841a76b6595edb77631886e099406 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
+Date: Mon, 3 Feb 2025 17:19:37 -0300
+Subject: [PATCH] Fix overflows in `mzd_init()`
+
+---
+ m4ri/mmc.h | 4 ++++
+ m4ri/mzd.c | 5 ++---
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/m4ri/mmc.h b/m4ri/mmc.h
+index e6db4ca..3e97391 100644
+--- a/m4ri/mmc.h
++++ b/m4ri/mmc.h
+@@ -72,6 +72,10 @@ typedef struct _mm_block {
+  * \return Pointer to allocated memory block.
+  */
+ static inline void *m4ri_mmc_calloc(size_t count, size_t size) {
++  if (size && count > SIZE_MAX/size) {
++      m4ri_die("m4ri_mmc_calloc: overflow in multiplication\n");
++      return NULL; /* unreachable */
++  }
+   size_t total_size = count * size;
+   void *ret         = m4ri_mmc_malloc(total_size);
+   memset((char *)ret, 0, total_size);
+diff --git a/m4ri/mzd.c b/m4ri/mzd.c
+index ba04b7c..ac62c5c 100644
+--- a/m4ri/mzd.c
++++ b/m4ri/mzd.c
+@@ -144,13 +144,12 @@ mzd_t *mzd_init(rci_t r, rci_t c) {
+   mzd_t *A = mzd_t_malloc();
+   A->nrows         = r;
+   A->ncols         = c;
+-  A->width         = (c + m4ri_radix - 1) / m4ri_radix;
++  A->width         = c > 0 ? (c - 1) / m4ri_radix + 1 : 0;
+   A->rowstride     = ((A->width & 1) == 0) ? A->width : A->width + 1;
+   A->high_bitmask  = __M4RI_LEFT_BITMASK(c % m4ri_radix);
+   A->flags         = (A->high_bitmask != m4ri_ffff) ? mzd_flag_nonzero_excess : 0;
+   if (r && c) {
+-    size_t block_words = r * A->rowstride;
+-    A->data = m4ri_mmc_calloc(block_words, sizeof(word));
++    A->data = m4ri_mmc_calloc(r, sizeof(word) * A->rowstride);
+   } else {
+     A->data = NULL;
+   }
diff --git a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch b/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
deleted file mode 100644
index ffa64b120fc28f..00000000000000
--- a/srcpkgs/m4ri/patches/m4ri-simd_cflags_in_tests.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tests/Makefile.in	2020-01-25 01:34:59.000000000 -0300
-+++ b/tests/Makefile.in	2021-11-10 08:13:46.505793446 -0300
-@@ -609,7 +609,7 @@
- TOPBUILDDIR = $(builddir)/..
- DEFINES = 
- # include TOPBUILDIR for m4ri_config.h
--AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) @OPENMP_CFLAGS@ @PAPI_CFLAGS@
-+AM_CFLAGS = -I$(TOPSRCDIR) -I$(TOPBUILDDIR) -D_XOPEN_SOURCE=600 $(DEFINES) $(SIMD_CFLAGS) $(OPENMP_CFLAGS) $(PAPI_CFLAGS)
- STAGEDIR := $(realpath -s $(TOPBUILDDIR)/.libs)
- AM_LDFLAGS = -L$(STAGEDIR) -Wl,-rpath,$(STAGEDIR) -lm4ri $(LIBM) @PAPI_LDFLAGS@ @PAPI_LIBS@ -no-install
- test_smallops_SOURCES = test_smallops.c testing.c testing.h
diff --git a/srcpkgs/m4ri/template b/srcpkgs/m4ri/template
index 56e60ed16f5998..2d7041d9591440 100644
--- a/srcpkgs/m4ri/template
+++ b/srcpkgs/m4ri/template
@@ -1,17 +1,24 @@
 # Template file for 'm4ri'
 pkgname=m4ri
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
-configure_args="--enable-openmp ax_cv_have_sse3_ext=no ax_cv_have_ssse3_ext=no"
+# use defaults for cache sizes instead of build machine
+configure_args="--enable-openmp --with-cachesize=0:0:0"
 hostmakedepends="pkg-config"
 makedepends="libgomp-devel libpng-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2)"
-maintainer="Eloi Torrents <eloitorrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4ri"
-distfiles="https://bitbucket.org/malb/m4ri/downloads/${pkgname}-${version}.tar.gz"
-checksum=0dfb34aed351882a0f2281535ea6f81c690a5efeb14edab131d9ba0dffe44863
+homepage="https://github.com/malb/m4ri"
+changelog="https://github.com/malb/m4ri#history"
+distfiles="https://github.com/malb/m4ri/releases/download/${version}/m4ri-${version}.tar.gz"
+checksum=b4098db651483c0e1506c16f79091eba02f41dadbacf1bb25be8eb97e5515f96
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4ri-devel_package() {
 	short_desc+=" - development files"

From e95700a705a125d78929170729dc0c952d227e29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 00:50:12 -0300
Subject: [PATCH 06/10] m4rie: update to 20250128.

---
 common/shlibs          |  2 +-
 srcpkgs/m4rie/template | 21 ++++++++++++++-------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 200d683469a1ea..a4346a49d697d2 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4252,7 +4252,7 @@ libsingular_resources-4.4.0.so singular-4.4.0_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
-libm4rie-0.0.20200125.so m4rie-20200125_1
+libm4rie.so.1 m4rie-20250128_1
 libptytty.so.0 libptytty-2.0_1
 libcoeurl.so.0.3 coeurl-0.3.0_1
 libKPim6PkPass.so.6 kpkpass-24.02.0_1
diff --git a/srcpkgs/m4rie/template b/srcpkgs/m4rie/template
index 0e775df1dc1ce0..f327a02526a0b4 100644
--- a/srcpkgs/m4rie/template
+++ b/srcpkgs/m4rie/template
@@ -1,19 +1,26 @@
 # Template file for 'm4rie'
 pkgname=m4rie
-version=20200125
-revision=2
+version=20250128
+revision=1
 build_style=gnu-configure
+hostmakedepends="pkg-config"
 makedepends="m4ri-devel"
 short_desc="Library for fast arithmetic with dense matrices over GF(2^e)"
-maintainer="Eloi Torrents <eloi.torrentsj@gmail.com>"
+maintainer="Eloi Torrents <eloitor@duck.com>"
 license="GPL-2.0-or-later"
-homepage="https://bitbucket.org/malb/m4rie/wiki/Home"
-distfiles="https://bitbucket.org/malb/m4rie/downloads/m4rie-${version}.tar.gz"
-checksum=7f3107f7cd10f6c22d9663d9536e1af2f551e10183601852a60d760918caf58d
+homepage="https://github.com/malb/m4rie"
+changelog="https://github.com/malb/m4rie#history"
+distfiles="https://github.com/malb/m4rie/releases/download/${version}/m4rie-${version}.tar.gz"
+checksum=96f1adafd50e6a0b51dc3aa1cb56cb6c1361ae7c10d97dc35c3fa70822a55bd7
+
+pre_check() {
+	# the testsuite is very slow when run in parallel!
+	unset makejobs
+}
 
 m4rie-devel_package() {
 	short_desc+=" - development files"
-	depends="${sourcepkg}>=${version}_${revision}"
+	depends="${sourcepkg}>=${version}_${revision} ${makedepends}"
 	pkg_install() {
 		vmove usr/include
 		vmove "usr/lib/*.a"

From af0ef78fc9a6478b751f17b58b8b9a71e43768cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 14:53:06 -0300
Subject: [PATCH 07/10] brial: rebuild for m4ri-20250128.

---
 srcpkgs/brial/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/brial/template b/srcpkgs/brial/template
index 2f8e195a8804ba..3fee9468bdc86d 100644
--- a/srcpkgs/brial/template
+++ b/srcpkgs/brial/template
@@ -1,7 +1,7 @@
 # Template file for 'brial'
 pkgname=brial
 version=1.2.12
-revision=1
+revision=2
 build_style=gnu-configure
 hostmakedepends="pkg-config"
 makedepends="boost-devel m4ri-devel"

From f775b973af72a285c3eefa32bbb8c23d4c33e8ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Thu, 23 Jan 2025 00:49:42 -0300
Subject: [PATCH 08/10] eclib: update to 20250122.

---
 srcpkgs/eclib/patches/fix-32bit-modrat.patch | 15 ---------------
 srcpkgs/eclib/template                       |  6 +++---
 2 files changed, 3 insertions(+), 18 deletions(-)
 delete mode 100644 srcpkgs/eclib/patches/fix-32bit-modrat.patch

diff --git a/srcpkgs/eclib/patches/fix-32bit-modrat.patch b/srcpkgs/eclib/patches/fix-32bit-modrat.patch
deleted file mode 100644
index 14988e0a793fa5..00000000000000
--- a/srcpkgs/eclib/patches/fix-32bit-modrat.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-new_modrat is broken on 32 bit, revert to old_modrat
-
---- a/libsrc/arith.cc
-+++ b/libsrc/arith.cc
-@@ -429,8 +430,8 @@ int new_modrat(long n, long m, long& a, long& b);
- 
- int modrat(long n, long m, long& a, long& b)
- {
--  // return old_modrat(n, m, a, b);
--  return new_modrat(n, m, a, b);
-+  return old_modrat(n, m, a, b);
-+  //return new_modrat(n, m, a, b);
- }
- 
- int old_modrat(long n, long m, long& a, long& b)
diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template
index 75fd264f57be5a..86294212ae64a9 100644
--- a/srcpkgs/eclib/template
+++ b/srcpkgs/eclib/template
@@ -1,6 +1,6 @@
 # Template file for 'eclib'
 pkgname=eclib
-version=20241112
+version=20250122
 revision=1
 build_style=gnu-configure
 configure_args="--with-flint --with-boost"
@@ -10,8 +10,8 @@ maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="GPL-2.0-or-later"
 homepage="https://github.com/JohnCremona/eclib"
 changelog="https://github.com/JohnCremona/eclib/releases"
-distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2"
-checksum=30765c27ca1420141f83517897119d0185fea9b31132392170ddae40b060e46f
+distfiles="https://github.com/JohnCremona/eclib/releases/download/${version}/eclib-${version}.tar.bz2"
+checksum=9f8c2b32e24a4f20d7cc2d336ea30c8ea03b5b0953c2d32adda0c496e7616899
 
 eclib-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} ntl-devel"

From cce94d8ef215cdc826466926a5a7a7394bfe20c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 21 Jan 2025 20:11:14 -0300
Subject: [PATCH 09/10] singular: update to 4.4.1.

---
 common/shlibs             | 8 ++++----
 srcpkgs/singular/template | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index a4346a49d697d2..d402931a0fe9a4 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4245,10 +4245,10 @@ libecl.so.24.5 ecl-24.5.10_1
 libecm.so.1 ecm-7.0.4_3
 libcliquer.so.1 cliquer-1.22_1
 libomalloc-0.9.6.so singular-4.2.1_1
-libSingular-4.4.0.so singular-4.4.0_1
-libfactory-4.4.0.so singular-4.4.0_1
-libpolys-4.4.0.so singular-4.4.0_1
-libsingular_resources-4.4.0.so singular-4.4.0_1
+libSingular-4.4.1.so singular-4.4.1_1
+libfactory-4.4.1.so singular-4.4.1_1
+libpolys-4.4.1.so singular-4.4.1_1
+libsingular_resources-4.4.1.so singular-4.4.1_1
 libbrial.so.3 brial-1.2.10_1
 libbrial_groebner.so.3 brial-1.2.10_1
 libm4ri.so.1 m4ri-20250128_1
diff --git a/srcpkgs/singular/template b/srcpkgs/singular/template
index aa4899c7bdaab9..310b5a08ec064a 100644
--- a/srcpkgs/singular/template
+++ b/srcpkgs/singular/template
@@ -1,6 +1,6 @@
 # Template file for 'singular'
 pkgname=singular
-version=4.4.0
+version=4.4.1
 revision=1
 _majver=${version%p*}
 build_style=gnu-configure
@@ -20,7 +20,7 @@ maintainer="dkwo <npiazza@disroot.org>, Gonzalo Tornaría <tornaria@cmat.edu.uy>
 license="GPL-2.0-or-later"
 homepage="https://www.singular.uni-kl.de"
 distfiles="https://www.singular.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${_majver//./-}/singular-${version}.tar.gz"
-checksum=c269abbd24c84fe33edc0af1e78b8fec53d8e94338410ac06c2666cfd40d43f2
+checksum=6a4fbaaed05b89c35bff3b1c5e124344a088097f81affe129c9ae619b282b49b
 
 if [ -z "$CROSS_BUILD" ]; then
 	makedepends+=" ntl-devel"

From 8e74d956a9e0babb4e77f8b441fe5f42541c6b56 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 3 Jan 2025 15:08:10 -0300
Subject: [PATCH 10/10] sagemath: rebuild for updates

changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular
---
 .../patches/39368-singular_4.4.1.patch        | 715 ++++++++++++++++++
 srcpkgs/sagemath/patches/get_patches          |   3 +-
 srcpkgs/sagemath/template                     |   2 +-
 3 files changed, 718 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/sagemath/patches/39368-singular_4.4.1.patch

diff --git a/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
new file mode 100644
index 00000000000000..aba16fa1d7ae75
--- /dev/null
+++ b/srcpkgs/sagemath/patches/39368-singular_4.4.1.patch
@@ -0,0 +1,715 @@
+diff --git a/src/sage/categories/pushout.py b/src/sage/categories/pushout.py
+index a2b5e910257..17f059f967f 100644
+--- a/src/sage/categories/pushout.py
++++ b/src/sage/categories/pushout.py
+@@ -3925,8 +3925,8 @@ class BlackBoxConstructionFunctor(ConstructionFunctor):
+         sage: FS = BlackBoxConstructionFunctor(singular)
+         sage: FS(QQ['t'])                                                               # needs sage.libs.singular
+         polynomial ring, over a field, global ordering
+-        //   coefficients: QQ
+-        //   number of vars : 1
++        // coefficients: QQ...
++        // number of vars : 1
+         //        block   1 : ordering lp
+         //                  : names    t
+         //        block   2 : ordering C
+diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
+index 91f8efcf651..ff424335d56 100644
+--- a/src/sage/interfaces/expect.py
++++ b/src/sage/interfaces/expect.py
+@@ -1328,8 +1328,8 @@ def _synchronize(self, cmd='1+%s;\n'):
+             sage: R.<x> = QQ[]; f = x^3 + x + 1;  g = x^3 - x - 1; r = f.resultant(g); gap(ZZ); singular(R)
+             Integers
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/interface.py b/src/sage/interfaces/interface.py
+index bd1095e8c70..22fb4b8487c 100644
+--- a/src/sage/interfaces/interface.py
++++ b/src/sage/interfaces/interface.py
+@@ -817,8 +817,8 @@ def __reduce__(self):
+             sage: S = singular.ring(0, ('x'))
+             sage: loads(dumps(S))
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
+index d110c17bf16..59d01f4493d 100644
+--- a/src/sage/interfaces/singular.py
++++ b/src/sage/interfaces/singular.py
+@@ -39,8 +39,8 @@
+     sage: R1 = singular.ring(0, '(x,y)', 'dp')
+     sage: R1
+     polynomial ring, over a field, global ordering
+-    //   coefficients: QQ
+-    //   number of vars : 2
++    // coefficients: QQ...
++    // number of vars : 2
+     //        block   1 : ordering dp
+     //                  : names    x y
+     //        block   2 : ordering C
+@@ -220,12 +220,12 @@
+ 
+     sage: singular.lib('polylib.lib')
+     sage: singular.ring(32003, '(a,b,c,d,e,f)', 'lp')
+-            polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/32003
+-            //   number of vars : 6
+-            //        block   1 : ordering lp
+-            //                        : names    a b c d e f
+-            //        block   2 : ordering C
++    polynomial ring, over a field, global ordering
++    // coefficients: ZZ/32003...
++    // number of vars : 6
++    //        block   1 : ordering lp
++    //                        : names    a b c d e f
++    //        block   2 : ordering C
+     sage: I = singular.ideal('cyclic(6)')
+     sage: g = singular('groebner(I)')
+     Traceback (most recent call last):
+@@ -1074,8 +1074,8 @@ def ring(self, char=0, vars='(x)', order='lp', check=None):
+             sage: R = singular.ring(0, '(x,y,z)', 'dp')
+             sage: R
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1153,16 +1153,16 @@ def set_ring(self, R):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: singular.set_ring(R)
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+@@ -1203,15 +1203,15 @@ def current_ring(self):
+             sage: r = PolynomialRing(GF(127),3,'xyz', order='invlex')
+             sage: r._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 3
++            // coefficients: ZZ/127...
++            // number of vars : 3
+             //        block   1 : ordering ip
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1430,8 +1430,8 @@ def __copy__(self):
+             sage: cpQ.set_ring()
+             sage: cpQ
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1996,8 +1996,8 @@ def _sage_(self, R=None):
+ 
+             sage: singular('basering')
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 3
++            // coefficients: ZZ...
++            // number of vars : 3
+             //        block   1 : ordering lp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -2087,16 +2087,16 @@ def set_ring(self):
+             sage: S = singular.ring('real', '(a,b)', 'lp')
+             sage: singular.current_ring()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: Float()
+-            //   number of vars : 2
++            // coefficients: Float()...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a b
+             //        block   2 : ordering C
+             sage: R.set_ring()
+             sage: singular.current_ring()
+             polynomial ring, over a field, local ordering
+-            //   coefficients: ZZ/7
+-            //   number of vars : 2
++            // coefficients: ZZ/7...
++            // number of vars : 2
+             //        block   1 : ordering ds
+             //                  : names    a b
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
+index 67cadf5d35c..87f0b7bab69 100644
+--- a/src/sage/libs/singular/function.pyx
++++ b/src/sage/libs/singular/function.pyx
+@@ -276,8 +276,8 @@ cdef class RingWrap:
+             sage: l = ringlist(P)
+             sage: ring = singular_function("ring")
+             sage: ring(l, ring=P)._output()
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx
+index 1d8dd844385..4f7e288e2ad 100644
+--- a/src/sage/libs/singular/ring.pyx
++++ b/src/sage/libs/singular/ring.pyx
+@@ -159,8 +159,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: ZZ/7(a, b)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: ZZ/7(a, b)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+ 
+     ::
+ 
+@@ -168,8 +173,13 @@ cdef ring *singular_ring_new(base_ring, n, names, term_order) except NULL:
+         sage: R.<x,y,z> = F[]
+         sage: from sage.libs.singular.function import singular_function
+         sage: sing_print = singular_function('print')
+-        sage: sing_print(R)
+-        'polynomial ring, over a field, global ordering\n// coefficients: QQ(s, t)\n// number of vars : 3\n//        block   1 : ordering dp\n//                  : names    x y z\n//        block   2 : ordering C'
++        sage: print(sing_print(R))
++        polynomial ring, over a field, global ordering
++        // coefficients: QQ(s, t)...
++        // number of vars : 3
++        //        block   1 : ordering dp
++        //                  : names    x y z
++        //        block   2 : ordering C
+     """
+     cdef long cexponent
+     cdef GFInfo* _param
+diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+index adf3df1cf95..bab5935004b 100644
+--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
++++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+@@ -619,8 +619,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+ 
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1182,8 +1182,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1198,8 +1198,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = PolynomialRing(k, 3)                                      # needs sage.rings.finite_rings
+             sage: P._singular_()                                                        # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/3[a]/(a^3-a+1)
+-            //   number of vars : 3
++            // coefficients: ZZ/3[a]/(a^3-a+1)...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1215,8 +1215,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1257,8 +1257,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x,y,z> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 3
++            // coefficients: QQ...
++            // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+             //        block   2 : ordering C
+@@ -1272,8 +1272,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R.<x,y> = PolynomialRing(NumberField(w^2 + 1,'s'))                    # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 2
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1281,8 +1281,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(2**8,'a'),10,'x', order='invlex')               # needs sage.rings.finite_rings
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)
+-            //   number of vars : 10
++            // coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)...
++            // number of vars : 10
+             //        block   1 : ordering ip
+             //                  : names    x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
+             //        block   2 : ordering C
+@@ -1290,8 +1290,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 2
++            // coefficients: ZZ/127...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1299,8 +1299,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='invlex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering ip
+             //                  : names    x0 x1
+             //        block   2 : ordering C
+@@ -1308,8 +1308,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,2,'x', order='degneglex')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1320,8 +1320,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1329,8 +1329,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = PolynomialRing(GF(127),'x')
+             sage: singular(R)                                                           # needs sage.rings.finite_rings
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -1338,8 +1338,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1347,8 +1347,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1356,8 +1356,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.rings.function_field
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -1367,8 +1367,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
+             sage: P.<x> = QQ[]
+             sage: P._singular_init_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/pbori/pbori.pyx b/src/sage/rings/polynomial/pbori/pbori.pyx
+index 14a929c3238..404771a2c85 100644
+--- a/src/sage/rings/polynomial/pbori/pbori.pyx
++++ b/src/sage/rings/polynomial/pbori/pbori.pyx
+@@ -1425,8 +1425,8 @@ cdef class BooleanPolynomialRing(BooleanPolynomialRing_base):
+             sage: B.<x,y> = BooleanPolynomialRing(2)
+             sage: B._singular_() # indirect doctest
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_quotient_ring.py b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+index 115647adadf..627765cf8f0 100644
+--- a/src/sage/rings/polynomial/polynomial_quotient_ring.py
++++ b/src/sage/rings/polynomial/polynomial_quotient_ring.py
+@@ -749,8 +749,8 @@ def _singular_init_(self, S=None):
+             sage: Q = P.quo([(x^2 + 1)])
+             sage: singular(Q)        # indirect doctest                                 # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    xbar
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py
+index 60d2dd74b52..10bbc6d6ec0 100644
+--- a/src/sage/rings/polynomial/polynomial_singular_interface.py
++++ b/src/sage/rings/polynomial/polynomial_singular_interface.py
+@@ -62,7 +62,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order):
+         sage: from sage.rings.polynomial.polynomial_singular_interface import _do_singular_init_
+         sage: _do_singular_init_(singular, ZZ, 0, 'X', 'dp')                            # needs sage.libs.singular
+         (polynomial ring, over a domain, global ordering
+-         // coefficients: ZZ
++         // coefficients: ZZ...
+          // number of vars : 1
+          //        block   1 : ordering dp
+          //                  : names    X
+@@ -196,7 +196,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(CC)                                          # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)
++            // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -205,7 +205,7 @@ def _singular_(self, singular=None):
+             sage: R.<x,y> = PolynomialRing(RealField(100))                              # needs sage.rings.real_mpfr
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.real_mpfr
+             polynomial ring, over a field, global ordering
+-            // coefficients: Float()
++            // coefficients: Float()...
+             // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+@@ -215,8 +215,8 @@ def _singular_(self, singular=None):
+             sage: R.<x> = PolynomialRing(NumberField(w^2 + 1, 's'))                     # needs sage.rings.number_field
+             sage: singular(R)                                                           # needs sage.libs.singular sage.rings.number_field
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ[s]/(s^2+1)
+-            //   number of vars : 1
++            // coefficients: QQ[s]/(s^2+1)...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -224,8 +224,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x', implementation='singular')           # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -233,8 +233,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ, 'x', implementation='singular')                # needs sage.libs.singular
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering dp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -242,8 +242,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(QQ,'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -251,8 +251,8 @@ def _singular_(self, singular=None):
+             sage: R = PolynomialRing(GF(127), 'x')
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 1
++            // coefficients: ZZ/127...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+             //        block   2 : ordering C
+@@ -260,8 +260,8 @@ def _singular_(self, singular=None):
+             sage: R = Frac(ZZ['a,b'])['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ(a, b)
+-            //   number of vars : 2
++            // coefficients: QQ(a, b)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -270,8 +270,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(1024)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/(2^10)
+-            //   number of vars : 2
++            // coefficients: ZZ/(2^10)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -279,8 +279,8 @@ def _singular_(self, singular=None):
+             sage: R = IntegerModRing(15)['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a ring (with zero-divisors), global ordering
+-            //   coefficients: ZZ/...(15)
+-            //   number of vars : 2
++            // coefficients: ZZ/(15)...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -288,8 +288,8 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x,y']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            //   coefficients: ZZ
+-            //   number of vars : 2
++            // coefficients: ZZ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+@@ -297,7 +297,7 @@ def _singular_(self, singular=None):
+             sage: R = ZZ['x']
+             sage: singular(R)                                                           # needs sage.libs.singular
+             polynomial ring, over a domain, global ordering
+-            // coefficients: ZZ
++            // coefficients: ZZ...
+             // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    x
+@@ -310,8 +310,8 @@ def _singular_(self, singular=None):
+             sage: S = K['y']
+             sage: singular(S)                                                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/5(x)
+-            //   number of vars : 2
++            // coefficients: ZZ/5(x)...
++            // number of vars : 2
+             //        block   1 : ordering lp
+             //                  : names    a y
+             //        block   2 : ordering C
+@@ -353,8 +353,8 @@ def _singular_init_(self, singular=None):
+ 
+             sage: PolynomialRing(QQ,'u_ba')._singular_init_()                           # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 1
++            // coefficients: QQ...
++            // number of vars : 1
+             //        block   1 : ordering lp
+             //                  : names    u_ba
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py
+index a88568248ce..f8ddd0a9652 100644
+--- a/src/sage/rings/polynomial/term_order.py
++++ b/src/sage/rings/polynomial/term_order.py
+@@ -660,7 +660,7 @@ def __init__(self, name='lex', n=0, force=False):
+             sage: R.<x,y,z> = PolynomialRing(QQ, order=T)
+             sage: R._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering dp
+             //                  : names    x y z
+@@ -676,7 +676,7 @@ def __init__(self, name='lex', n=0, force=False):
+             False
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 3
+             //        block   1 : ordering C
+             //        block   2 : ordering dp
+@@ -1661,8 +1661,8 @@ def singular_str(self):
+             '(lp(3),Dp(5),lp(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/127
+-            //   number of vars : 10
++            // coefficients: ZZ/127...
++            // number of vars : 10
+             //        block   1 : ordering lp
+             //                  : names    x0 x1 x2
+             //        block   2 : ordering Dp
+@@ -1687,8 +1687,8 @@ def singular_str(self):
+             '(a(1:2),ls(2),a(1:2),ls(2))'
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 4
++            // coefficients: QQ...
++            // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    x0 x1
+             //                  : weights   1  1
+@@ -1709,7 +1709,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='x', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering C
+             //        block   2 : ordering a
+@@ -1727,7 +1727,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='y', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering c
+             //        block   2 : ordering a
+@@ -1745,7 +1745,7 @@ def singular_str(self):
+             sage: P = PolynomialRing(QQ, 4, names='z', order=T)
+             sage: P._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            // coefficients: QQ
++            // coefficients: QQ...
+             // number of vars : 4
+             //        block   1 : ordering a
+             //                  : names    z0 z1
+@@ -2183,7 +2183,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(C,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering C
+         //        block   2 : ordering dp
+@@ -2201,7 +2201,7 @@ def termorder_from_singular(S):
+         sage: # needs sage.libs.singular
+         sage: singular.ring(0, '(x,y,z,w)', '(c,dp(2),lp(2))')
+         polynomial ring, over a field, global ordering
+-        // coefficients: QQ
++        // coefficients: QQ...
+         // number of vars : 4
+         //        block   1 : ordering c
+         //        block   2 : ordering dp
+diff --git a/src/sage/rings/quotient_ring.py b/src/sage/rings/quotient_ring.py
+index 1043333a63e..45f8147cde9 100644
+--- a/src/sage/rings/quotient_ring.py
++++ b/src/sage/rings/quotient_ring.py
+@@ -1268,8 +1268,8 @@ def _singular_(self, singular=None):
+             sage: S = R.quotient_ring(x^2 + y^2)
+             sage: S._singular_()                                                        # needs sage.libs.singular
+             polynomial ring, over a field, global ordering
+-            //   coefficients: QQ
+-            //   number of vars : 2
++            // coefficients: QQ...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
+diff --git a/src/sage/rings/quotient_ring_element.py b/src/sage/rings/quotient_ring_element.py
+index 6699ae9f74b..9f05c54f21c 100644
+--- a/src/sage/rings/quotient_ring_element.py
++++ b/src/sage/rings/quotient_ring_element.py
+@@ -813,8 +813,8 @@ def _singular_(self, singular=None):
+             sage: Q = P.quo(I)
+             sage: Q._singular_()
+             polynomial ring, over a field, global ordering
+-            //   coefficients: ZZ/2
+-            //   number of vars : 2
++            // coefficients: ZZ/2...
++            // number of vars : 2
+             //        block   1 : ordering dp
+             //                  : names    x y
+             //        block   2 : ordering C
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 571d8939163695..c617fe7e216c57 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-version=10.4
+version=10.5
 
 URL_BASE_PR="https://github.com/sagemath/sage/pull/"
 URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
@@ -42,6 +42,7 @@ get_pr 38749 "pari 2.17"
 get_pr 38962 "eclib 20241112"
 get_pr 39178 "giac 1.9.0.998"
 get_pr 39261 "scipy 1.15"
+get_pr 39368 "singular 4.4.1"
 
 get_pr 38940 "fix flaky simplicial set test"
 
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index 82b7e6deae951a..44706ee35410e1 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,7 +1,7 @@
 # Template file for 'sagemath'
 pkgname=sagemath
 version=10.5
-revision=1
+revision=2
 _pypi_version=${version/.beta/b}
 _pypi_version=${_pypi_version/.rc/rc}
 build_style=python3-pep517

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
                   ` (2 preceding siblings ...)
  2025-02-04 17:34 ` tornaria
@ 2025-02-04 17:39 ` tornaria
  2025-02-05  9:55 ` [PR PATCH] [Merged]: " leahneukirchen
  2025-02-08 16:39 ` dkwo
  5 siblings, 0 replies; 7+ messages in thread
From: tornaria @ 2025-02-04 17:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 310 bytes --]

New comment by tornaria on void-packages repository

https://github.com/void-linux/void-packages/pull/54198#issuecomment-2634645359

Comment:
@leahneukirchen this is good to go, I've been using these for a while. The last force-push was only to squash the m4ri fix for i686 (which is already merged upstream).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PR PATCH] [Merged]: sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
                   ` (3 preceding siblings ...)
  2025-02-04 17:39 ` tornaria
@ 2025-02-05  9:55 ` leahneukirchen
  2025-02-08 16:39 ` dkwo
  5 siblings, 0 replies; 7+ messages in thread
From: leahneukirchen @ 2025-02-05  9:55 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1424 bytes --]

There's a merged pull request on the void-packages repository

sagemath: update dependencies
https://github.com/void-linux/void-packages/pull/54198

Description:
Rebuild sagemath for changed sonames: symmetrica, lcalc, m4ri, m4rie, brial, singular

- **flintlib: update to 3.1.3+p1.**
- **python3-cysignals: update to 1.12.3.**
- **symmetrica: update to 3.1.0.**
- **lcalc: update to 2.1.0.**
- **m4ri: update to 20250128.**
- **m4rie: update to 20250128.**
- **brial: rebuild for m4ri-20250128.**
- **eclib: update to 20250122.**
- **singular: update to 4.4.1.**
- **sagemath: rebuild for updates**

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: sagemath: update dependencies
  2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
                   ` (4 preceding siblings ...)
  2025-02-05  9:55 ` [PR PATCH] [Merged]: " leahneukirchen
@ 2025-02-08 16:39 ` dkwo
  5 siblings, 0 replies; 7+ messages in thread
From: dkwo @ 2025-02-08 16:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 489 bytes --]

New comment by dkwo on void-packages repository

https://github.com/void-linux/void-packages/pull/54198#issuecomment-2645834615

Comment:
sorry for the delay.  all builds and checks fine on aarch64.

just one remark: to make a few doctests pass (6, all related to ipython
notebook) from installed sage, i had to install the checkdepends as well.

if this is already the case, it could be a reason to drop more makedepends
from depends, such as compilers and devel stuff, as we discussed.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-02-08 16:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-03 13:24 [PR PATCH] sagemath: update dependencies tornaria
2025-02-03 17:31 ` tornaria
2025-02-03 20:11 ` [PR PATCH] [Updated] " tornaria
2025-02-04 17:34 ` tornaria
2025-02-04 17:39 ` tornaria
2025-02-05  9:55 ` [PR PATCH] [Merged]: " leahneukirchen
2025-02-08 16:39 ` dkwo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).