Github messages for voidlinux
 help / color / mirror / Atom feed
From: tornaria <tornaria@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] [BETA] sagemath: update to 10.4.beta5
Date: Mon, 13 May 2024 03:00:51 +0200	[thread overview]
Message-ID: <20240513010051.3735521DA6@inbox.vuxu.org> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-49571@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 1359 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/49571

[BETA] sagemath: update to 10.4.beta5
<!-- Uncomment relevant sections and delete options which are not applicable -->

- 10.4.b4: switch to build from the pypi sdist

@dkwo tracking here sagemath 10.4 prerelease

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

<!--
#### 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/49571.patch is attached

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

From 3c73709f630c6063e90b64eb081c7aa1ec6ab4f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 10 May 2024 12:29:21 -0300
Subject: [PATCH 01/10] ecl: update to 24.5.10.

---
 common/shlibs        | 2 +-
 srcpkgs/ecl/template | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index aed2d02e32d6ba..80038425c8a020 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4153,7 +4153,7 @@ libcxsparse.so.4 SuiteSparse-6.0.1_1
 libspqr.so.4 SuiteSparse-7.2.0_1
 libsuitesparseconfig.so.7 SuiteSparse-7.0.1_1
 libumfpack.so.6 SuiteSparse-6.0.1_1
-libecl.so.23.9 ecl-23.9.9_1
+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
diff --git a/srcpkgs/ecl/template b/srcpkgs/ecl/template
index c657934737ea46..444d75ec3038f2 100644
--- a/srcpkgs/ecl/template
+++ b/srcpkgs/ecl/template
@@ -1,6 +1,6 @@
 # Template file for 'ecl'
 pkgname=ecl
-version=23.9.9
+version=24.5.10
 revision=1
 build_style=gnu-configure
 configure_args="--enable-gmp=system --enable-boehm=system
@@ -14,7 +14,7 @@ license="LGPL-2.1-or-later"
 homepage="https://ecl.common-lisp.dev/"
 changelog="https://gitlab.com/embeddable-common-lisp/ecl/-/raw/develop/CHANGELOG"
 distfiles="https://ecl.common-lisp.dev/static/files/release/ecl-${version}.tgz"
-checksum=c51bdab4ca6c1173dd3fe9cfe9727bcefb97bb0a3d6434b627ca6bdaeb33f880
+checksum=e4ea65bb1861e0e495386bfa8bc673bd014e96d3cf9d91e9038f91435cbe622b
 
 if [ "$CROSS_BUILD" ]; then
 	# Depend on system ecl

From 7478dd0022edebb21eea154385cb071d5e8e3ed0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 10 May 2024 16:11:00 -0300
Subject: [PATCH 02/10] maxima: rebuild for ecl

---
 srcpkgs/maxima/template | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/srcpkgs/maxima/template b/srcpkgs/maxima/template
index eae9cad3a85e99..9259b48f50822b 100644
--- a/srcpkgs/maxima/template
+++ b/srcpkgs/maxima/template
@@ -1,7 +1,7 @@
 # Template file for 'maxima'
 pkgname=maxima
 version=5.47.0
-revision=3
+revision=4
 build_style=gnu-configure
 configure_args="$(vopt_enable clisp) $(vopt_enable sbcl) $(vopt_enable ecl)
  makeinfo_found=true"
@@ -24,6 +24,8 @@ nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima
 if [ "$build_option_sbcl" ]; then
 	# binary-sbcl/maxima uses libgmp but this won't show up in objdump
 	shlib_requires=libgmp.so.10
+	# build standalone executable
+	configure_args+=" --enable-sbcl-exec"
 fi
 
 build_options="clisp sbcl ecl"

From 668656be54912c42b0a50ad76d5556836ee7eec5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 15 Mar 2024 12:59:54 -0300
Subject: [PATCH 03/10] gap: update to 4.13.0.

---
 common/shlibs        |  2 +-
 srcpkgs/gap/template | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 80038425c8a020..53213300347d73 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4104,7 +4104,7 @@ liblinbox.so.0 linbox-1.6.3_1
 libpari-gmp-tls.so.8 pari-2.15.0_1
 libtree-sitter.so.0 tree-sitter-0.19.0_1
 libplanarity.so.0 planarity-3.0.1.1_1
-libgap.so.8 gap-4.12.0_1
+libgap.so.9 gap-4.13.0_1
 libgtkdatabox.so.1 gtkdatabox3-1.0.0_1
 libxcvt.so.0 libxcvt-0.1.1_1
 libgf2x.so.3 gf2x-1.3.0_1
diff --git a/srcpkgs/gap/template b/srcpkgs/gap/template
index 63d1194d45ddc9..d6c106c4ce0a77 100644
--- a/srcpkgs/gap/template
+++ b/srcpkgs/gap/template
@@ -1,6 +1,6 @@
 # Template file for 'gap'
 pkgname=gap
-version=4.12.2
+version=4.13.0
 revision=1
 build_style=gnu-configure
 makedepends="gmp-devel zlib-devel readline-devel"
@@ -11,11 +11,15 @@ license="GPL-2.0-or-later"
 homepage="https://www.gap-system.org/"
 changelog="https://raw.githubusercontent.com/gap-system/gap/master/CHANGES.md"
 distfiles="https://github.com/gap-system/gap/releases/download/v${version}/gap-${version}.tar.gz"
-checksum=672308745eb78a222494ee8dd6786edd5bc331456fcc6456ac064bdb28d587a8
+checksum=cc76ecbe33d6719450a593e613fb87e9e4247faa876f632dd0f97c398f92265d
 
 if [ "$XBPS_CHECK_PKGS" = full ]; then
-	# not sure about this -- takes about 25 minutes
-	make_check_target=teststandard
+	do_check() {
+		# disable failing test
+		rm -f tst/teststandard/testLuxPahlings/example_4.4.18.tst
+		# about 5 minutes single core
+		./gap tst/teststandard.g
+	}
 fi
 
 _GAPROOT=/usr/share/gap/

From ddd8d37f2824d687c9858d1b731617f925918a6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Wed, 8 May 2024 09:20:46 -0300
Subject: [PATCH 04/10] python3-conway-polynomials: update to 0.10.

---
 srcpkgs/python3-conway-polynomials/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/python3-conway-polynomials/template b/srcpkgs/python3-conway-polynomials/template
index 11766521e26db7..2724d49767eb8c 100644
--- a/srcpkgs/python3-conway-polynomials/template
+++ b/srcpkgs/python3-conway-polynomials/template
@@ -1,6 +1,6 @@
 # Template file for 'python3-conway-polynomials'
 pkgname=python3-conway-polynomials
-version=0.9
+version=0.10
 revision=1
 build_style=python3-pep517
 make_check_args="--doctest-modules --doctest-glob=README.rst"
@@ -12,5 +12,5 @@ maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="Public Domain, GPL-3.0-or-later"
 homepage="https://github.com/sagemath/conway-polynomials"
 changelog="https://github.com/sagemath/conway-polynomials/raw/master/NEWS"
-distfiles="${PYPI_SITE}/c/conway-polynomials/conway-polynomials-${version}.tar.gz"
-checksum=6ed2300609bce79f0175d5b8546858eec02854f8be3237db8d1449ccccc1c581
+distfiles="${PYPI_SITE}/c/conway-polynomials/conway_polynomials-${version}.tar.gz"
+checksum=4f619f64f81a3eb16c4e26c5a284feeec27a6f4aad647643e79af289801ae0f3

From 4380f05ad1994228faa176b85bc92220ef767159 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 9 Apr 2024 19:51:09 -0300
Subject: [PATCH 05/10] eclib: update to 20240408.

---
 srcpkgs/eclib/patches/fix-32bit-Euler.patch | 11 +++++++++++
 srcpkgs/eclib/template                      |  6 +++---
 2 files changed, 14 insertions(+), 3 deletions(-)
 create mode 100644 srcpkgs/eclib/patches/fix-32bit-Euler.patch

diff --git a/srcpkgs/eclib/patches/fix-32bit-Euler.patch b/srcpkgs/eclib/patches/fix-32bit-Euler.patch
new file mode 100644
index 00000000000000..44de9c31a06aaa
--- /dev/null
+++ b/srcpkgs/eclib/patches/fix-32bit-Euler.patch
@@ -0,0 +1,11 @@
+--- a/libsrc/interface.cc
++++ b/libsrc/interface.cc
+@@ -103,7 +103,7 @@ void Compute_Euler(RR& y)
+ 
+   l = RR::precision();
+ 
+-  x = 1 + static_cast<long>((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2));
++  x = 1 + static_cast<long>((0.25 * (l - 3)) * (64 * LOG2));
+   n = 1 + static_cast<long>(3.591 * x);
+ 
+   a=x;
diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template
index 9043aa465a9ff5..dd22d4e6de6f31 100644
--- a/srcpkgs/eclib/template
+++ b/srcpkgs/eclib/template
@@ -1,7 +1,7 @@
 # Template file for 'eclib'
 pkgname=eclib
-version=20231212
-revision=2
+version=20240408
+revision=1
 build_style=gnu-configure
 configure_args="--with-flint --with-boost"
 makedepends="pari-devel ntl-devel flintlib-devel boost-devel"
@@ -11,7 +11,7 @@ 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=32d116a3e359b0de4f6486c2bb6188bb8b553c8b833f618cc2596484e8b6145a
+checksum=3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c
 
 eclib-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} ntl-devel"

From 8e40a321fbfee28ee1872eca85986e050d8d9c45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 10 May 2024 16:13:08 -0300
Subject: [PATCH 06/10] sagemath: rebuild for ecl and gap

Also patch for eclib and conway-polynomials updates.
---
 .../patches/37590-gap_4.13_part_1.patch       | 724 ++++++++++++++++++
 .../patches/37624-gap_4.13_part_2.patch       |  14 +
 .../patches/37882-eclib_20040408.patch        | 116 +++
 .../patches/37883-gap_4.13_part_3.patch       |  48 ++
 .../patches/37884-gap_4.13_part_4.patch       | 177 +++++
 ...37949-conway-polynomials_0.10_part_1.patch |  24 +
 ...37967-conway-polynomials_0.10_part_2.patch |  74 ++
 srcpkgs/sagemath/patches/get_patches          |  19 +-
 srcpkgs/sagemath/template                     |   2 +-
 9 files changed, 1195 insertions(+), 3 deletions(-)
 create mode 100644 srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
 create mode 100644 srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
 create mode 100644 srcpkgs/sagemath/patches/37882-eclib_20040408.patch
 create mode 100644 srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
 create mode 100644 srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch
 create mode 100644 srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
 create mode 100644 srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch

diff --git a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
new file mode 100644
index 00000000000000..8e86d2a94a40ba
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
@@ -0,0 +1,724 @@
+diff --git a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
+index 101cbcdb4e7..fe465251bfc 100644
+--- a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
++++ b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
+@@ -65,13 +65,13 @@ We can access a lot of information about groups, such as:
+     Subgroup generated by [(1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+     Subgroup generated by [(2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
+     Subgroup generated by [(1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(2,8)(3,7)(4,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(2,8)(3,7)(4,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
+-    Subgroup generated by [(2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
++    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group)
+ 
+ In the previous cell we once again did a for loop over a set of objects
+ rather than just a list of numbers.  This can be very powerful.
+diff --git a/src/doc/en/thematic_tutorials/group_theory.rst b/src/doc/en/thematic_tutorials/group_theory.rst
+index e9e6b23953f..dd0afcbef0c 100644
+--- a/src/doc/en/thematic_tutorials/group_theory.rst
++++ b/src/doc/en/thematic_tutorials/group_theory.rst
+@@ -591,8 +591,8 @@ subgroups. ::
+      Subgroup generated by [(1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group),
+      Subgroup generated by [(1,6,11,16)(2,7,12,17)(3,8,13,18)(4,9,14,19)(5,10,15,20), (1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group),
+      Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group),
+-     Subgroup generated by [(1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group),
+-     Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group)]
++     Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20)] of (Cyclic group of order 20 as a permutation group),
++     Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)] of (Cyclic group of order 20 as a permutation group)]
+ 
+ Be careful, this command uses some more advanced ideas and will not
+ usually list *all* of the subgroups of a group. Here we are relying on
+@@ -651,16 +651,16 @@ suitable `g`. As an illustration, the code below:
+      Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
+      Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+      Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
+      Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
+-     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group)]
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
++     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group)]
+ 
+     sage: print("An order two subgroup:\n{}".format(sg[1].list()))
+     An order two subgroup:
+diff --git a/src/sage/categories/finite_groups.py b/src/sage/categories/finite_groups.py
+index f6866485e93..70cc029e389 100644
+--- a/src/sage/categories/finite_groups.py
++++ b/src/sage/categories/finite_groups.py
+@@ -48,7 +48,7 @@ class ParentMethods:
+ 
+         def semigroup_generators(self):
+             """
+-            Returns semigroup generators for self.
++            Return semigroup generators for ``self``.
+ 
+             For finite groups, the group generators are also semigroup
+             generators. Hence, this default implementation calls
+@@ -58,7 +58,7 @@ def semigroup_generators(self):
+ 
+                 sage: A = AlternatingGroup(4)
+                 sage: A.semigroup_generators()
+-                Family ((2,3,4), (1,2,3))
++                Family ((1,2,3), (2,3,4))
+             """
+             return self.group_generators()
+ 
+@@ -74,7 +74,7 @@ def monoid_generators(self):
+ 
+                 sage: A = AlternatingGroup(4)
+                 sage: A.monoid_generators()
+-                Family ((2,3,4), (1,2,3))
++                Family ((1,2,3), (2,3,4))
+             """
+             return self.group_generators()
+ 
+@@ -113,7 +113,7 @@ def some_elements(self):
+ 
+                 sage: A = AlternatingGroup(4)
+                 sage: A.some_elements()
+-                Family ((2,3,4), (1,2,3))
++                Family ((1,2,3), (2,3,4))
+             """
+             return self.group_generators()
+ 
+diff --git a/src/sage/categories/groups.py b/src/sage/categories/groups.py
+index 445ba111c09..22f02ae4b30 100644
+--- a/src/sage/categories/groups.py
++++ b/src/sage/categories/groups.py
+@@ -102,7 +102,7 @@ def group_generators(self):
+ 
+                 sage: A = AlternatingGroup(4)                                           # needs sage.groups
+                 sage: A.group_generators()                                              # needs sage.groups
+-                Family ((2,3,4), (1,2,3))
++                Family ((1,2,3), (2,3,4))
+             """
+             from sage.sets.family import Family
+             try:
+@@ -124,7 +124,7 @@ def monoid_generators(self):
+                 sage: # needs sage.groups
+                 sage: A = AlternatingGroup(4)
+                 sage: A.monoid_generators()
+-                Family ((2,3,4), (1,2,3))
++                Family ((1,2,3), (2,3,4))
+                 sage: F.<x,y> = FreeGroup()
+                 sage: F.monoid_generators()
+                 Family (x, y, x^-1, y^-1)
+diff --git a/src/sage/categories/monoids.py b/src/sage/categories/monoids.py
+index 28474bd17b6..a4340621bbe 100644
+--- a/src/sage/categories/monoids.py
++++ b/src/sage/categories/monoids.py
+@@ -565,7 +565,7 @@ def algebra_generators(self):
+ 
+                     sage: A10 = AlternatingGroup(10)                                    # needs sage.groups
+                     sage: GroupAlgebras(QQ).example(A10).algebra_generators()           # needs sage.groups sage.modules
+-                    Family ((8,9,10), (1,2,3,4,5,6,7,8,9))
++                    Family ((1,2,3,4,5,6,7,8,9), (8,9,10))
+ 
+                     sage: A = DihedralGroup(3).algebra(QQ); A                           # needs sage.groups sage.modules
+                     Algebra of Dihedral group of order 6 as a permutation group
+diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py
+index bbe793b3625..f98bfe0cde5 100644
+--- a/src/sage/groups/abelian_gps/abelian_group.py
++++ b/src/sage/groups/abelian_gps/abelian_group.py
+@@ -1132,7 +1132,7 @@ def permutation_group(self):
+             sage: G = AbelianGroup(2,[2,3]); G
+             Multiplicative Abelian group isomorphic to C2 x C3
+             sage: G.permutation_group()                                                 # needs sage.groups
+-            Permutation Group with generators [(3,4,5), (1,2)]
++            Permutation Group with generators [(1,2), (3,4,5)]
+ 
+         TESTS:
+ 
+diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py
+index 6ae81844f98..b081f1e1c4e 100644
+--- a/src/sage/groups/abelian_gps/abelian_group_element.py
++++ b/src/sage/groups/abelian_gps/abelian_group_element.py
+@@ -101,7 +101,7 @@ def as_permutation(self):
+             Multiplicative Abelian group isomorphic to C2 x C3 x C4
+             sage: a,b,c = G.gens()
+             sage: Gp = G.permutation_group(); Gp                                        # needs sage.groups
+-            Permutation Group with generators [(6,7,8,9), (3,4,5), (1,2)]
++            Permutation Group with generators [(1,2), (3,4,5), (6,7,8,9)]
+             sage: a.as_permutation()                                                    # needs sage.libs.gap
+             (1,2)
+             sage: ap = a.as_permutation(); ap                                           # needs sage.libs.gap
+diff --git a/src/sage/groups/additive_abelian/additive_abelian_group.py b/src/sage/groups/additive_abelian/additive_abelian_group.py
+index c0a90f0c110..5f389fcfb81 100644
+--- a/src/sage/groups/additive_abelian/additive_abelian_group.py
++++ b/src/sage/groups/additive_abelian/additive_abelian_group.py
+@@ -451,7 +451,7 @@ def permutation_group(self):
+ 
+             sage: G = AdditiveAbelianGroup([2, 3])
+             sage: G.permutation_group()                                                 # needs sage.groups
+-            Permutation Group with generators [(3,4,5), (1,2)]
++            Permutation Group with generators [(1,2), (3,4,5)]
+ 
+         TESTS:
+ 
+diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py
+index e390cbbf288..901b0083b49 100644
+--- a/src/sage/groups/class_function.py
++++ b/src/sage/groups/class_function.py
+@@ -717,7 +717,7 @@ def restrict(self, H):
+             Character of Symmetric group of order 5! as a permutation group
+             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
+             sage: chi.restrict(H)
+-            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
++            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
+              (Symmetric group of order 5! as a permutation group)
+             sage: chi.restrict(H).values()
+             [3, -3, -3, -1, 0, 0]
+@@ -744,7 +744,7 @@ def induct(self, G):
+             sage: G = SymmetricGroup(5)
+             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
+             sage: xi = H.trivial_character(); xi
+-            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
++            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
+              (Symmetric group of order 5! as a permutation group)
+             sage: xi.induct(G)
+             Character of Symmetric group of order 5! as a permutation group
+@@ -1425,7 +1425,7 @@ def restrict(self, H):
+             Character of Symmetric group of order 5! as a permutation group
+             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
+             sage: chi.restrict(H)
+-            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
++            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
+              (Symmetric group of order 5! as a permutation group)
+             sage: chi.restrict(H).values()
+             [3, -3, -3, -1, 0, 0]
+@@ -1457,7 +1457,7 @@ def induct(self, G):
+             sage: G = SymmetricGroup(5)
+             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
+             sage: xi = H.trivial_character(); xi
+-            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
++            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
+              (Symmetric group of order 5! as a permutation group)
+             sage: xi.induct(G)
+             Character of Symmetric group of order 5! as a permutation group
+diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py
+index 208758282b2..4ee53ba4f06 100644
+--- a/src/sage/groups/perm_gps/permgroup.py
++++ b/src/sage/groups/perm_gps/permgroup.py
+@@ -478,6 +478,26 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True,
+             sage: TestSuite(PermutationGroup([[]])).run()
+             sage: TestSuite(PermutationGroup([])).run()
+             sage: TestSuite(PermutationGroup([(0,1)])).run()
++
++        Check that :issue:`37590` is fixed::
++
++            sage: lgg = libgap.eval("Group((1,2,3,4,5),(4,5,6))")
++            sage: P = PermutationGroup(gap_group=lgg)
++            sage: h = P.hom(codomain=P, im_gens=P.gens())
++            sage: h
++            Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)]
++            sage: P.gens()
++            ((1,2,3,4,5), (4,5,6))
++            sage: P.gap().GeneratorsOfGroup()
++            [ (1,2,3,4,5), (4,5,6) ]
++
++            sage: gg = gap.eval("Group((1,2,3,4,5),(4,5,6))")
++            sage: P = PermutationGroup(gap_group=gg)
++            sage: P.gens()
++            ((1,2,3,4,5), (4,5,6))
++            sage: h = P.hom(codomain=P, im_gens=P.gens())
++            sage: h
++            Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)]
+         """
+         if (gens is None and gap_group is None):
+             raise ValueError("you must specify gens or gap_group")
+@@ -496,6 +516,7 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True,
+ 
+         if isinstance(gap_group, LibGapElement):
+             self._libgap = gap_group
++            canonicalize = False
+ 
+         # Handle the case where only the GAP group is specified.
+         if gens is None:
+@@ -1828,7 +1849,7 @@ def stabilizer(self, point, action="OnPoints"):
+ 
+             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4,10)]])
+             sage: G.stabilizer(10)
+-            Subgroup generated by [(2,3,4), (1,2)(3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)])
++            Subgroup generated by [(1,2)(3,4), (2,3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)])
+             sage: G.stabilizer(1) == G.subgroup(['(2,3)(4,10)', '(2,10,3)'])
+             True
+             sage: G = PermutationGroup([[(2,3,4)],[(6,7)]])
+@@ -2430,7 +2451,6 @@ def fitting_subgroup(self):
+             sage: G.fitting_subgroup()
+             Subgroup generated by [(1,2)(3,4), (1,3)(2,4)] of
+              (Permutation Group with generators [(1,2), (1,2,3,4)])
+-
+         """
+         return self.subgroup(gap_group=self._libgap_().FittingSubgroup())
+ 
+@@ -2445,7 +2465,7 @@ def solvable_radical(self):
+ 
+             sage: G = SymmetricGroup(4)
+             sage: G.solvable_radical()
+-            Subgroup generated by [(1,2), (1,2,3,4)] of
++            Subgroup generated by [(1,2,3,4), (1,2)] of
+              (Symmetric group of order 4! as a permutation group)
+             sage: G = SymmetricGroup(5)
+             sage: G.solvable_radical()
+@@ -2581,7 +2601,7 @@ def conjugate(self, g):
+             sage: G = DihedralGroup(6)
+             sage: a = PermutationGroupElement("(1,2,3,4)")
+             sage: G.conjugate(a)
+-            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
++            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
+ 
+         The element performing the conjugation can be specified in
+         several ways.  ::
+@@ -2589,15 +2609,15 @@ def conjugate(self, g):
+             sage: G = DihedralGroup(6)
+             sage: strng = "(1,2,3,4)"
+             sage: G.conjugate(strng)
+-            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
++            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
+             sage: G = DihedralGroup(6)
+             sage: lst = [2,3,4,1]
+             sage: G.conjugate(lst)
+-            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
++            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
+             sage: G = DihedralGroup(6)
+             sage: cycles = [(1,2,3,4)]
+             sage: G.conjugate(cycles)
+-            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
++            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
+ 
+         Conjugation is a group automorphism, so conjugate groups
+         will be isomorphic. ::
+@@ -2671,24 +2691,24 @@ def direct_product(self, other, maps=True):
+ 
+             sage: G = CyclicPermutationGroup(4)
+             sage: D = G.direct_product(G, False); D
+-            Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++            Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+             sage: D,iota1,iota2,pr1,pr2 = G.direct_product(G)
+             sage: D; iota1; iota2; pr1; pr2
+-            Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++            Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+             Permutation group morphism:
+               From: Cyclic group of order 4 as a permutation group
+-              To:   Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++              To:   Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+               Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 )
+             Permutation group morphism:
+               From: Cyclic group of order 4 as a permutation group
+-              To:   Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++              To:   Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+               Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 )
+             Permutation group morphism:
+-              From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++              From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+               To:   Cyclic group of order 4 as a permutation group
+               Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 )
+             Permutation group morphism:
+-              From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
++              From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
+               To:   Cyclic group of order 4 as a permutation group
+               Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 )
+             sage: g = D([(1,3),(2,4)]); g
+@@ -2934,7 +2954,7 @@ def holomorph(self):
+             sage: D4 = DihedralGroup(4)
+             sage: H = D4.holomorph()
+             sage: H.gens()
+-            ((3,8)(4,7), (2,3,5,8), (2,5)(3,8), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5))
++            ((2,3,5,8), (2,5)(3,8), (3,8)(4,7), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5))
+             sage: G = H.subgroup([H.gens()[0],H.gens()[1],H.gens()[2]])
+             sage: N = H.subgroup([H.gens()[3],H.gens()[4]])
+             sage: N.is_normal(H)
+@@ -2954,7 +2974,6 @@ def holomorph(self):
+ 
+         - Kevin Halasz (2012-08-14)
+         """
+-
+         libgap.eval('G := Group({})'.format(list(self.gens())))
+         libgap.eval('aut := AutomorphismGroup(G)')
+         libgap.eval('alpha := InverseGeneralMapping(NiceMonomorphism(aut))')
+@@ -3137,7 +3156,7 @@ def quotient(self, N, **kwds):
+             sage: G.quotient(N)
+             Permutation Group with generators [(1,2)]
+             sage: G.quotient(G)
+-            Permutation Group with generators [()]
++            Permutation Group with generators [(), ()]
+         """
+         Q = self._libgap_() / N._libgap_()
+         # Return Q as a permutation group
+@@ -3599,13 +3618,13 @@ def conjugacy_classes_subgroups(self):
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
+              Subgroup generated by [(2,4)] of
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
+-             Subgroup generated by [(1,2)(3,4), (1,4)(2,3)] of
++             Subgroup generated by [(1,4)(2,3), (1,2)(3,4)] of
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
+              Subgroup generated by [(2,4), (1,3)(2,4)] of
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
+              Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
+-             Subgroup generated by [(2,4), (1,2)(3,4), (1,4)(2,3)] of
++             Subgroup generated by [(1,4)(2,3), (1,2)(3,4), (2,4)] of
+               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])]
+ 
+         ::
+@@ -3618,7 +3637,7 @@ def conjugacy_classes_subgroups(self):
+               (Symmetric group of order 3! as a permutation group),
+              Subgroup generated by [(1,2,3)] of
+               (Symmetric group of order 3! as a permutation group),
+-             Subgroup generated by [(2,3), (1,2,3)] of
++             Subgroup generated by [(1,2,3), (2,3)] of
+               (Symmetric group of order 3! as a permutation group)]
+ 
+         AUTHORS:
+@@ -3640,7 +3659,7 @@ def subgroups(self):
+         with one element on through up to the whole group.
+         Conjugacy classes of subgroups are contiguous in the list.
+ 
+-        .. warning::
++        .. WARNING::
+ 
+             For even relatively small groups this method can
+             take a very long time to execute, or create vast
+@@ -3671,7 +3690,7 @@ def subgroups(self):
+               (Symmetric group of order 3! as a permutation group),
+              Subgroup generated by [(1,2,3)] of
+               (Symmetric group of order 3! as a permutation group),
+-             Subgroup generated by [(2,3), (1,2,3)] of
++             Subgroup generated by [(1,2,3), (2,3)] of
+               (Symmetric group of order 3! as a permutation group)]
+ 
+             sage: G = CyclicPermutationGroup(14)
+@@ -3682,8 +3701,8 @@ def subgroups(self):
+               (Cyclic group of order 14 as a permutation group),
+              Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of
+               (Cyclic group of order 14 as a permutation group),
+-             Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
+-                                    (1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of
++             Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14),
++                                    (1,2,3,4,5,6,7,8,9,10,11,12,13,14)] of
+               (Cyclic group of order 14 as a permutation group)]
+ 
+         AUTHOR:
+@@ -4049,15 +4068,15 @@ def normalizer(self, g):
+             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
+             sage: g = G([(1,3)])
+             sage: G.normalizer(g)
+-            Subgroup generated by [(2,4), (1,3)] of
++            Subgroup generated by [(1,3), (2,4)] of
+              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
+             sage: g = G([(1,2,3,4)])
+             sage: G.normalizer(g)
+-            Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of
++            Subgroup generated by  [(1,2,3,4), (1,3)(2,4), (2,4)] of
+              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
+             sage: H = G.subgroup([G([(1,2,3,4)])])
+             sage: G.normalizer(H)
+-            Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of
++            Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of
+              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
+         """
+         return self.subgroup(gap_group=self._libgap_().Normalizer(g))
+@@ -4071,7 +4090,7 @@ def centralizer(self, g):
+             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
+             sage: g = G([(1,3)])
+             sage: G.centralizer(g)
+-            Subgroup generated by [(2,4), (1,3)] of
++            Subgroup generated by [(1,3), (2,4)] of
+              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
+             sage: g = G([(1,2,3,4)])
+             sage: G.centralizer(g)
+@@ -4715,7 +4734,7 @@ def composition_series(self):
+             sage: G.composition_series()
+             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
+-             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
++             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
+              Subgroup generated by [()] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
+@@ -4746,7 +4765,7 @@ def derived_series(self):
+             sage: G.derived_series()
+             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
+-             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
++             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
+         """
+         libgap.set_seed()
+@@ -4770,7 +4789,7 @@ def lower_central_series(self):
+             sage: G.lower_central_series()
+             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
+-             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
++             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
+               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
+         """
+         libgap.set_seed()
+@@ -5123,7 +5142,8 @@ def __richcmp__(self, other, op):
+             sage: G
+             Symmetric group of order 6! as a permutation group
+             sage: G3
+-            Subgroup generated by [(1,2), (1,2,3,4,5,6)] of (Symmetric group of order 6! as a permutation group)
++            Subgroup generated by [(1,2,3,4,5,6), (1,2)] of
++             (Symmetric group of order 6! as a permutation group)
+             sage: G is G3
+             False
+             sage: G == G3 # as permutation groups
+diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py
+index 222ee36f6da..6b42e654234 100644
+--- a/src/sage/groups/perm_gps/permgroup_named.py
++++ b/src/sage/groups/perm_gps/permgroup_named.py
+@@ -449,7 +449,7 @@ def young_subgroup(self, comp):
+             sage: S = SymmetricGroup(8)
+             sage: c = Composition([2,2,2,2])
+             sage: S.young_subgroup(c)
+-            Subgroup generated by [(7,8), (5,6), (3,4), (1,2)] of
++            Subgroup generated by [(1,2), (3,4), (5,6), (7,8)] of
+              (Symmetric group of order 8! as a permutation group)
+ 
+             sage: S = SymmetricGroup(['a','b','c'])
+@@ -706,6 +706,16 @@ def __init__(self, domain=None):
+ 
+             sage: groups.permutation.Alternating(6)
+             Alternating group of order 6!/2 as a permutation group
++
++        Check that alternating groups have their generators in the correct
++        order (:issue:`37590`)::
++
++            sage: A = AlternatingGroup(6)
++            sage: A.gens()
++            ((1,2,3,4,5), (4,5,6))
++            sage: A.gap().GeneratorsOfGroup()
++            [ (1,2,3,4,5), (4,5,6) ]
++            sage: h = A.hom(codomain=A, im_gens=A.gens())
+         """
+         PermutationGroup_symalt.__init__(self, gap_group='AlternatingGroup(%s)' % len(domain), domain=domain)
+ 
+@@ -3084,8 +3094,8 @@ def __init__(self, q, name='a'):
+         EXAMPLES::
+ 
+             sage: SuzukiGroup(8)                                                        # needs sage.rings.finite_rings
+-            Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64),
+-            (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)]
++            Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56),
++             (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)]
+             sage: print(SuzukiGroup(8))                                                 # needs sage.rings.finite_rings
+             The Suzuki group over Finite Field in a of size 2^3
+ 
+@@ -3101,8 +3111,8 @@ def __init__(self, q, name='a'):
+         TESTS::
+ 
+             sage: groups.permutation.Suzuki(8)                                          # needs sage.rings.finite_rings
+-            Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64),
+-            (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)]
++            Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56),
++             (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)]
+ 
+         REFERENCES:
+ 
+diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx
+index 1ef3cbaf681..805bb9fe8ae 100644
+--- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx
++++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx
+@@ -2116,7 +2116,7 @@ cdef class Polynomial_rational_flint(Polynomial):
+             sage: G = f.galois_group(); G
+             Transitive group number 5 of degree 4
+             sage: G.gens()
+-            ((1,2), (1,2,3,4))
++            ((1,2,3,4), (1,2))
+             sage: G.order()
+             24
+ 
+diff --git a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
+index 25efca28dce..028dd8cb33c 100644
+--- a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
++++ b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
+@@ -95,7 +95,7 @@
+      Subgroup generated by [(1,2)] of (Symmetric group of order 3! as a permutation group),
+      Subgroup generated by [(1,3)] of (Symmetric group of order 3! as a permutation group),
+      Subgroup generated by [(1,2,3)] of (Symmetric group of order 3! as a permutation group),
+-     Subgroup generated by [(2,3), (1,2,3)] of (Symmetric group of order 3! as a permutation group)]
++     Subgroup generated by [(1,2,3), (2,3)] of (Symmetric group of order 3! as a permutation group)]
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+diff --git a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
+index 036b0a390c0..b1ecf0d8d48 100644
+--- a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
++++ b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
+@@ -271,10 +271,10 @@
+      ((1,4),),
+      ((1,2)(3,4),),
+      ((1,3)(2,4),),
+-     ((2,3), (1,4)(2,3)),
+-     ((1,2,4,3), (1,4)(2,3)),
+-     ((1,2)(3,4), (1,4)(2,3)),
+-     ((2,3), (1,2,4,3), (1,4)(2,3))]
++     ((1,4)(2,3), (2,3)),
++     ((1,4)(2,3), (1,2,4,3)),
++     ((1,4)(2,3), (1,2)(3,4)),
++     ((1,4)(2,3), (2,3), (1,2,4,3))]
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+diff --git a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
+index abff8d3189c..dbc7bca8d96 100644
+--- a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
++++ b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
+@@ -164,15 +164,14 @@
+     sage: H = DihedralGroup(4)
+     sage: results = G.direct_product(H)
+     sage: results[0]
+-    Permutation Group with generators [(4,5,6,7), (4,7)(5,6), (1,2,3)]
++    Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+     sage: results[1]
+     Permutation group morphism:
+       From: Cyclic group of order 3 as a permutation group
+-      To:   Permutation Group with generators
+-            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
++      To:   Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
+       Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 )
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+@@ -180,16 +179,14 @@
+     sage: results[2]
+     Permutation group morphism:
+       From: Dihedral group of order 8 as a permutation group
+-      To:   Permutation Group with generators
+-            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
++      To:   Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
+       Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 )
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+     sage: results[3]
+     Permutation group morphism:
+-      From: Permutation Group with generators
+-            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
++      From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
+       To:   Cyclic group of order 3 as a permutation group
+       Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 )
+ 
+@@ -197,8 +194,7 @@
+ 
+     sage: results[4]
+     Permutation group morphism:
+-      From: Permutation Group with generators
+-            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
++      From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
+       To:   Dihedral group of order 8 as a permutation group
+       Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 )
+ 
+diff --git a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
+index 0051f206528..cd78b147ca3 100644
+--- a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
++++ b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
+@@ -65,12 +65,12 @@
+     sage: uniqS2
+     [Permutation Group with generators [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+      Permutation Group with generators [(1,7)(2,6)(3,5)(8,18)(9,17)(10,16)(11,15)(12,14), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+-     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17)],
+-     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18)],
++     Permutation Group with generators [(1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
++     Permutation Group with generators [(1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+      Permutation Group with generators [(1,3)(4,18)(5,17)(6,16)(7,15)(8,14)(9,13)(10,12), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+      Permutation Group with generators [(1,9)(2,8)(3,7)(4,6)(10,18)(11,17)(12,16)(13,15), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+-     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16)],
+-     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10)],
++     Permutation Group with generators [(1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
++     Permutation Group with generators [(1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
+      Permutation Group with generators [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]]
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+@@ -83,8 +83,8 @@
+     sage: G = DihedralGroup(18)
+     sage: S3 = G.sylow_subgroup(3); S3
+     Subgroup generated by
+-    [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
+-     (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]
++    [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
++     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]
+     of (Dihedral group of order 36 as a permutation group)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+@@ -92,8 +92,8 @@
+     sage: uniqS3 = all_sylow(G, 3)
+     sage: uniqS3
+     [Permutation Group with generators
+-    [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
+-    (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]]
++     [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
++      (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]]
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+@@ -117,8 +117,8 @@
+     sage: S3 = G.sylow_subgroup(3)
+     sage: N2 = G.normalizer(S2); N2
+     Subgroup generated by
+-    [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
+-     (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]
++    [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18),
++     (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11)]
+     of (Dihedral group of order 36 as a permutation group)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+@@ -129,11 +129,12 @@
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+     sage: N3 = G.normalizer(S3); N3
+-    Subgroup generated by [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
+-    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18),
+-    (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
+-    (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] of (Dihedral group of
+-    order 36 as a permutation group)
++    Subgroup generated by
++    [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
++     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
++     (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
++     (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)]
++    of (Dihedral group of order 36 as a permutation group)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
+@@ -154,10 +155,10 @@
+     sage: N = G.normalizer(H)
+     sage: N
+     Subgroup generated by
+-    [(1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11),
+-    (1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13),
+-    (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] of (Dihedral group of
+-    order 36 as a permutation group)
++    [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13),
++     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
++     (1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11)]
++    of (Dihedral group of order 36 as a permutation group)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
+ 
diff --git a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
new file mode 100644
index 00000000000000..46541442bc9a7d
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
@@ -0,0 +1,14 @@
+diff --git a/src/sage/interfaces/gap3.py b/src/sage/interfaces/gap3.py
+index e73308e014e..de2a7fe4289 100644
+--- a/src/sage/interfaces/gap3.py
++++ b/src/sage/interfaces/gap3.py
+@@ -752,7 +752,8 @@ def _latex_(self):
+         r"""
+         EXAMPLES::
+ 
+-            sage: s = gap("[[1,2], [3/4, 5/6]]")
++            sage: # optional - gap3
++            sage: s = gap3("[[1,2], [3/4, 5/6]]")
+             sage: s._latex_()
+             '\\left(\\begin{array}{rr} 1&2\\\\ 3/4&\\frac{5}{6}\\\\ \\end{array}\\right)'
+             sage: latex(s)
diff --git a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch
new file mode 100644
index 00000000000000..819ee8e63ac476
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch
@@ -0,0 +1,116 @@
+diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py
+index 7b2b07b1f3f..6c15997c09f 100644
+--- a/src/sage/libs/eclib/interface.py
++++ b/src/sage/libs/eclib/interface.py
+@@ -728,7 +728,7 @@ class mwrank_MordellWeil(SageObject):
+         P1 = [-3:0:1]     is generator number 1
+         saturating up to 20...Saturation index bound (for points of good reduction)  = 3
+         Reducing saturation bound from given value 20 to computed index bound 3
+-        Tamagawa index primes are [ 2 ]
++        Tamagawa index primes are [ 2 ]...
+         Checking saturation at [ 2 3 ]
+         Checking 2-saturation
+         Points were proved 2-saturated (max q used = 7)
+@@ -738,7 +738,7 @@ class mwrank_MordellWeil(SageObject):
+         P2 = [-2:3:1]     is generator number 2
+         saturating up to 20...Saturation index bound (for points of good reduction)  = 4
+         Reducing saturation bound from given value 20 to computed index bound 4
+-        Tamagawa index primes are [ 2 ]
++        Tamagawa index primes are [ 2 ]...
+         Checking saturation at [ 2 3 ]
+         Checking 2-saturation
+         possible kernel vector = [1,1]
+@@ -753,7 +753,7 @@ class mwrank_MordellWeil(SageObject):
+         P3 = [-14:25:8]   is generator number 3
+         saturating up to 20...Saturation index bound (for points of good reduction)  = 3
+         Reducing saturation bound from given value 20 to computed index bound 3
+-        Tamagawa index primes are [ 2 ]
++        Tamagawa index primes are [ 2 ]...
+         Checking saturation at [ 2 3 ]
+         Checking 2-saturation
+         Points were proved 2-saturated (max q used = 11)
+@@ -908,7 +908,7 @@ def process(self, v, saturation_bound=0):
+             saturating basis...Saturation index bound (for points of good reduction)  = 93
+             Only p-saturating for p up to given value 2.
+             The resulting points may not be p-saturated for p between this and the computed index bound 93
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 ]
+             Checking 2-saturation
+             possible kernel vector = [1,0,0]
+@@ -930,7 +930,7 @@ def process(self, v, saturation_bound=0):
+             saturating basis...Saturation index bound (for points of good reduction)  = 46
+             Only p-saturating for p up to given value 3.
+             The resulting points may not be p-saturated for p between this and the computed index bound 46
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
+@@ -954,7 +954,7 @@ def process(self, v, saturation_bound=0):
+             saturating basis...Saturation index bound (for points of good reduction)  = 15
+             Only p-saturating for p up to given value 5.
+             The resulting points may not be p-saturated for p between this and the computed index bound 15
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 5 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
+@@ -978,7 +978,7 @@ def process(self, v, saturation_bound=0):
+             0.417143558758384
+             sage: EQ.saturate()   # points are now saturated
+             saturating basis...Saturation index bound (for points of good reduction)  = 3
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
+@@ -1189,7 +1189,7 @@ def saturate(self, max_prime=-1, min_prime=2):
+ 
+             sage: EQ.saturate()   # points are now saturated
+             saturating basis...Saturation index bound (for points of good reduction) = 3
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
+@@ -1217,7 +1217,7 @@ def saturate(self, max_prime=-1, min_prime=2):
+ 
+             sage: EQ.saturate()
+             saturating basis...Saturation index bound (for points of good reduction) = 3
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
+diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx
+index bc475f907b6..c685c329926 100644
+--- a/src/sage/libs/eclib/mwrank.pyx
++++ b/src/sage/libs/eclib/mwrank.pyx
+@@ -590,7 +590,7 @@ cdef class _mw:
+             P1 = [-3:0:1]         is generator number 1
+             saturating up to 20...Saturation index bound (for points of good reduction)  = 3
+             Reducing saturation bound from given value 20 to computed index bound 3
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 7)
+@@ -600,7 +600,7 @@ cdef class _mw:
+             P2 = [-2:3:1]         is generator number 2
+             saturating up to 20...Saturation index bound (for points of good reduction)  = 4
+             Reducing saturation bound from given value 20 to computed index bound 4
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             possible kernel vector = [1,1]
+@@ -615,7 +615,7 @@ cdef class _mw:
+             P3 = [-14:25:8]       is generator number 3
+             saturating up to 20...Saturation index bound (for points of good reduction)  = 3
+             Reducing saturation bound from given value 20 to computed index bound 3
+-            Tamagawa index primes are [ 2 ]
++            Tamagawa index primes are [ 2 ]...
+             Checking saturation at [ 2 3 ]
+             Checking 2-saturation
+             Points were proved 2-saturated (max q used = 11)
diff --git a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
new file mode 100644
index 00000000000000..d22922704ecffa
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
@@ -0,0 +1,48 @@
+diff --git a/src/sage/groups/libgap_wrapper.pyx b/src/sage/groups/libgap_wrapper.pyx
+index 0cf0e8bfb31..ddba766e94d 100644
+--- a/src/sage/groups/libgap_wrapper.pyx
++++ b/src/sage/groups/libgap_wrapper.pyx
+@@ -602,14 +602,11 @@ cdef class ElementLibGAP(MultiplicativeGroupElement):
+             sage: from sage.groups.libgap_group import GroupLibGAP
+             sage: G = GroupLibGAP(libgap.FreeGroup('a', 'b'))
+             sage: g = G.gen(0) * G.gen(1)
+-            sage: g._latex_()
+-            "ab%\n"
+-        """
+-        try:
+-            return self.gap().LaTeX()
+-        except ValueError:
+-            from sage.misc.latex import latex
+-            return latex(self._repr_())
++            sage: latex(g)
++            \text{\texttt{a*b}}
++        """
++        from sage.misc.latex import latex
++        return latex(self._repr_())
+ 
+     cpdef _mul_(left, right):
+         """
+diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py
+index ee5861ac785..2e49e4c106f 100644
+--- a/src/sage/interfaces/gap.py
++++ b/src/sage/interfaces/gap.py
+@@ -1562,16 +1562,10 @@ def _latex_(self):
+ 
+             sage: s = gap("[[1,2], [3/4, 5/6]]")
+             sage: latex(s)
+-            \left(\begin{array}{rr} 1&2\\ 3/4&\frac{5}{6}\\ \end{array}\right)
++            \left[\left[1, 2\right], \left[\frac{3}{4}, \frac{5}{6}\right]\right]
+         """
+-        P = self._check_valid()
+-        try:
+-            s = P.eval('LaTeXObj(%s)' % self.name())
+-            s = s.replace('\\\\', '\\').replace('"', '')
+-            s = s.replace('%\\n', ' ')
+-            return s
+-        except RuntimeError:
+-            return str(self)
++        from sage.misc.latex import latex
++        return latex(self._sage_())
+ 
+     @cached_method
+     def _tab_completion(self):
diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch
new file mode 100644
index 00000000000000..dfa924c8d3b6a1
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch
@@ -0,0 +1,177 @@
+diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py
+index d87a7a782a7..7df091d3ca9 100644
+--- a/src/sage/algebras/fusion_rings/fusion_double.py
++++ b/src/sage/algebras/fusion_rings/fusion_double.py
+@@ -132,7 +132,7 @@ class FusionDouble(CombinatorialFreeModule):
+         sage: G = SmallPermutationGroup(16,9)
+         sage: F = FusionDouble(G, prefix="b",inject_variables=True)
+         sage: b13^2 # long time (4s)
+-        b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27
++        b0 + b3 + b4
+ 
+     """
+     @staticmethod
+diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py
+index 7b7bbf827af..0864dc30af2 100644
+--- a/src/sage/categories/simplicial_sets.py
++++ b/src/sage/categories/simplicial_sets.py
+@@ -593,9 +593,9 @@ def _canonical_twisting_operator(self):
+                     sage: X = simplicial_sets.Torus()
+                     sage: d = X._canonical_twisting_operator()
+                     sage: d
+-                    {(s_0 v_0, sigma_1): f3, (sigma_1, s_0 v_0): f2*f3^-1, (sigma_1, sigma_1): f2}
++                    {(s_0 v_0, sigma_1): f2, (sigma_1, s_0 v_0): f1*f2^-1, (sigma_1, sigma_1): f1}
+                     sage: list(d.values())[0].parent()
+-                    Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring
++                    Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring
+                     sage: Y = simplicial_sets.RealProjectiveSpace(2)
+                     sage: d2 = Y._canonical_twisting_operator()
+                     sage: d2
+@@ -675,10 +675,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment
+                     sage: X = simplicial_sets.Torus()
+                     sage: C = X.twisted_chain_complex()
+                     sage: C.differential(1)
+-                    [      f3 - 1 f2*f3^-1 - 1       f2 - 1]
++                    [      f2 - 1 f1*f2^-1 - 1       f1 - 1]
+                     sage: C.differential(2)
+-                    [       1 f2*f3^-1]
+-                    [      f3        1]
++                    [       1 f1*f2^-1]
++                    [      f2        1]
+                     [      -1       -1]
+                     sage: C.differential(3)
+                     []
+@@ -843,29 +843,29 @@ def twisted_homology(self, n, reduced=False):
+ 
+                     sage: Y = simplicial_sets.Torus()
+                     sage: Y.twisted_homology(1)
+-                    Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
++                    Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
+                     Generated by the rows of the matrix:
+                     [           1            0            0            0            0]
+                     [           0            1            0            0            0]
+                     [           0            0            1            0            0]
+                     [           0            0            0            1            0]
+                     [           0            0            0            0            1]
++                    [f1*f1inv - 1            0            0            0            0]
++                    [           0 f1*f1inv - 1            0            0            0]
++                    [           0            0 f1*f1inv - 1            0            0]
++                    [           0            0            0 f1*f1inv - 1            0]
++                    [           0            0            0            0 f1*f1inv - 1]
+                     [f2*f2inv - 1            0            0            0            0]
+                     [           0 f2*f2inv - 1            0            0            0]
+                     [           0            0 f2*f2inv - 1            0            0]
+                     [           0            0            0 f2*f2inv - 1            0]
+                     [           0            0            0            0 f2*f2inv - 1]
+-                    [f3*f3inv - 1            0            0            0            0]
+-                    [           0 f3*f3inv - 1            0            0            0]
+-                    [           0            0 f3*f3inv - 1            0            0]
+-                    [           0            0            0 f3*f3inv - 1            0]
+-                    [           0            0            0            0 f3*f3inv - 1]
+                     sage: Y.twisted_homology(2)
+-                    Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
++                    Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
+                     Generated by the rows of the matrix:
+                     []
+                     sage: Y.twisted_homology(1, reduced=True)
+-                    Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
++                    Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
+                     Generated by the rows of the matrix:
+                     [1 0 0 0 0]
+                     [0 1 0 0 0]
+diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py
+index a6ef6bb7395..b5a4b3a1edc 100644
+--- a/src/sage/groups/finitely_presented.py
++++ b/src/sage/groups/finitely_presented.py
+@@ -1344,8 +1344,8 @@ def abelianization_map(self):
+             sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4])
+             sage: H.abelianization_map()
+             Group morphism:
+-                From: Finitely presented group  < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 >
+-                To:   Finitely presented group  < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, f3^-1*f4^-1*f3*f4, f2^4, f3^4 >
++              From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 >
++              To:   Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >
+             sage: g = FreeGroup(0) / []
+             sage: g.abelianization_map()
+             Group endomorphism of Finitely presented group  <  |  >
+@@ -1394,10 +1394,10 @@ def abelianization_to_algebra(self, ring=QQ):
+             Defining g0, g1, g2, g3
+             sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4])
+             sage: H.abelianization_to_algebra()
+-            (Finitely presented group  < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4,
+-                                                      f3^-1*f4^-1*f3*f4, f2^4, f3^4 >,
+-             Multivariate Laurent Polynomial Ring in f2, f3, f4 over Rational Field,
+-             [f2^4 - 1, f3^4 - 1], [f2^-1*f3^-2, f3^-2, f4, f3])
++            (Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >,
++             Multivariate Laurent Polynomial Ring in f1, f2, f3 over Rational Field,
++             [f1^4 - 1, f2^4 - 1],
++             [f1^3*f2^2, f2^2, f3, f2])
+             sage: g=FreeGroup(0) / []
+             sage: g.abelianization_to_algebra()
+             (Finitely presented group  <  |  >, Rational Field, [], [])
+@@ -1673,7 +1673,7 @@ def abelian_alexander_matrix(self, ring=QQ, simplified=True):
+             []
+             sage: G = FreeGroup(3)/[(2, 1, 1), (1, 2, 2, 3, 3)]
+             sage: A, ideal = G.abelian_alexander_matrix(simplified=True); A
+-            [-f3^2 - f3^4 - f3^6         f3^3 + f3^6]
++            [-f1^2 - f1^4 - f1^6         f1^3 + f1^6]
+             sage: g = FreeGroup(1) / []
+             sage: g.abelian_alexander_matrix()
+             ([], [])
+@@ -1773,11 +1773,11 @@ def characteristic_varieties(self, ring=QQ, matrix_ideal=None, groebner=False):
+              3: Ideal (1) of Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring}
+             sage: G = FreeGroup(2)/[(1,2,1,-2,-1,-2)]
+             sage: G.characteristic_varieties()
+-            {0: Ideal (0) of Univariate Laurent Polynomial Ring in f2 over Rational Field,
+-             1: Ideal (-1 + 2*f2 - 2*f2^2 + f2^3) of Univariate Laurent Polynomial Ring in f2 over Rational Field,
+-             2: Ideal (1) of Univariate Laurent Polynomial Ring in f2 over Rational Field}
++            {0: Ideal (0) of Univariate Laurent Polynomial Ring in f1 over Rational Field,
++             1: Ideal (-1 + 2*f1 - 2*f1^2 + f1^3) of Univariate Laurent Polynomial Ring in f1 over Rational Field,
++             2: Ideal (1) of Univariate Laurent Polynomial Ring in f1 over Rational Field}
+             sage: G.characteristic_varieties(groebner=True)
+-            {0: [0], 1: [-1 + f2, 1 - f2 + f2^2], 2: []}
++            {0: [0], 1: [-1 + f1, 1 - f1 + f1^2], 2: []}
+             sage: G = FreeGroup(2)/[3 * (1, ), 2 * (2, )]
+             sage: G.characteristic_varieties(groebner=True)
+             {0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2],  2: []}
+diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py
+index c000d2cf105..765626e1752 100644
+--- a/src/sage/groups/perm_gps/permgroup_named.py
++++ b/src/sage/groups/perm_gps/permgroup_named.py
+@@ -3451,16 +3451,14 @@ class SmallPermutationGroup(PermutationGroup_generic):
+         sage: G = SmallPermutationGroup(12,4); G
+         Group of order 12 and GAP Id 4 as a permutation group
+         sage: G.gens()
+-        ((1,2)(3,5)(4,10)(6,8)(7,12)(9,11),
+-         (1,3)(2,5)(4,7)(6,9)(8,11)(10,12),
+-         (1,4,8)(2,6,10)(3,7,11)(5,9,12))
++        ((4,5), (1,2), (3,4,5))
+         sage: G.character_table()                                                       # needs sage.rings.number_field
+         [ 1  1  1  1  1  1]
+-        [ 1 -1 -1  1  1 -1]
++        [ 1 -1  1 -1  1 -1]
+         [ 1 -1  1  1 -1  1]
+-        [ 1  1 -1  1 -1 -1]
+-        [ 2  0 -2 -1  0  1]
+-        [ 2  0  2 -1  0 -1]
++        [ 1  1  1 -1 -1 -1]
++        [ 2  0 -1 -2  0  1]
++        [ 2  0 -1  2  0 -1]
+         sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n))
+         sage: all(SmallPermutationGroup(n,k).id() == [n,k]
+         ....:     for n in [1..64] for k in [1..numgps(n)])
+@@ -3469,11 +3467,11 @@ class SmallPermutationGroup(PermutationGroup_generic):
+         sage: H.is_abelian()
+         False
+         sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()]
+-        [Subgroup generated by [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)] of
++        [Subgroup generated by [(1,3), (2,3)] of
+           (Group of order 6 and GAP Id 1 as a permutation group),
+-         Subgroup generated by [(1,2)(3,6)(4,5)] of
++         Subgroup generated by [(2,3)] of
+           (Group of order 6 and GAP Id 1 as a permutation group),
+-         Subgroup generated by [(1,3,5)(2,4,6), (1,5,3)(2,6,4)] of
++         Subgroup generated by [(1,2,3)] of
+           (Group of order 6 and GAP Id 1 as a permutation group)]
+     """
+ 
diff --git a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
new file mode 100644
index 00000000000000..5bf9212b0fd865
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
@@ -0,0 +1,24 @@
+diff --git a/src/sage/databases/conway.py b/src/sage/databases/conway.py
+index b1f76292ce8..54912a2471c 100644
+--- a/src/sage/databases/conway.py
++++ b/src/sage/databases/conway.py
+@@ -138,11 +138,16 @@ def __len__(self):
+         """
+         Return the number of polynomials in this database.
+ 
+-        TESTS::
++        TESTS:
++
++        The database currently contains `35357` polynomials, but due to
++        :issue:`35357` it will be extended by Conway polynomials of
++        degrees `1`, `2` and `3` for primes between `65537` and `110000`,
++        thus leading to a new total of `47090` entries::
+ 
+             sage: c = ConwayPolynomials()
+-            sage: len(c)
+-            35357
++            sage: len(c) in [35357, 47090]
++            True
+         """
+         try:
+             return self._len
diff --git a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch
new file mode 100644
index 00000000000000..5220db9f572a38
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch
@@ -0,0 +1,74 @@
+diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py
+index 9889808b35d..99e3e8c81fa 100644
+--- a/src/sage/schemes/elliptic_curves/ell_point.py
++++ b/src/sage/schemes/elliptic_curves/ell_point.py
+@@ -1818,6 +1818,17 @@ def weil_pairing(self, Q, n, algorithm=None):
+             sage: z.multiplicative_order()
+             360
+ 
++        Another larger example::
++
++            sage: F = GF(65537^2, modulus=[3,-1,1], name='a')
++            sage: F.inject_variables()
++            Defining a
++            sage: E = EllipticCurve(F, [0,1])
++            sage: P = E(22, 28891)
++            sage: Q = E(-93, 2728*a + 64173)
++            sage: P.weil_pairing(Q, 7282, algorithm='sage')
++            53278*a + 36700
++
+         An example over a number field::
+ 
+             sage: # needs sage.rings.number_field
+@@ -1833,16 +1844,20 @@ def weil_pairing(self, Q, n, algorithm=None):
+ 
+         TESTS:
+ 
+-        Check that the original Sage implementation still works::
++        Check that the original Sage implementation still works and
++        that the result coincides with the PARI implementation::
+ 
+             sage: # needs sage.rings.finite_rings
+             sage: GF(65537^2).inject_variables()
+             Defining z2
+             sage: E = EllipticCurve(GF(65537^2), [0,1])
+-            sage: P = E(22, 28891)
+-            sage: Q = E(-93, 40438*z2 + 31573)
+-            sage: P.weil_pairing(Q, 7282, algorithm='sage')
+-            19937*z2 + 65384
++            sage: R, S = E.torsion_basis(7282)
++            sage: a, b = ZZ.random_element(), ZZ.random_element()
++            sage: P = a*R + b*S
++            sage: c, d = ZZ.random_element(), ZZ.random_element()
++            sage: Q = c*R + d*S
++            sage: P.weil_pairing(Q, 7282, algorithm='sage') == P.weil_pairing(Q, 7282, algorithm='pari')
++            True
+ 
+         Passing an unknown ``algorithm=`` argument should fail::
+ 
+@@ -2047,19 +2062,19 @@ def tate_pairing(self, Q, n, k, q=None):
+             sage: Px.weil_pairing(Qx, 41)^e == num/den
+             True
+ 
+-        TESTS:
+-
+-        Check that the PARI output matches the original Sage implementation::
++        An example over a large base field::
+ 
+-            sage: # needs sage.rings.finite_rings
+-            sage: GF(65537^2).inject_variables()
++            sage: F = GF(65537^2, modulus=[3,46810,1], name='z2')
++            sage: F.inject_variables()
+             Defining z2
+-            sage: E = EllipticCurve(GF(65537^2), [0,1])
++            sage: E = EllipticCurve(F, [0,1])
+             sage: P = E(22, 28891)
+             sage: Q = E(-93, 40438*z2 + 31573)
+             sage: P.tate_pairing(Q, 7282, 2)
+             34585*z2 + 4063
+ 
++        TESTS:
++
+         The point ``P (self)`` must have ``n`` torsion::
+ 
+             sage: P.tate_pairing(Q, 163, 2)
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 56057bbd4a397b..291824adc2549e 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -20,6 +20,21 @@ get_pr() {
 # run from patches dir
 cd $(dirname "$0")
 
-# needs review
-get_pr 37492 "singular 4.3.2p16"
+# merged in 10.4.beta1
+get_pr 37590 "gap 4.13 part 1"
+get_pr 37624 "gap 4.13 part 2"
+
+# merged in 10.4.beta2
 get_pr 37763 "scipy 1.13"
+get_pr 37882 "eclib 20040408"
+get_pr 37883 "gap 4.13 part 3"
+
+# merged in 10.4.beta5
+get_pr 37492 "singular 4.3.2p16"
+
+# positive review
+get_pr 37949 "conway-polynomials 0.10 part 1"
+get_pr 37967 "conway-polynomials 0.10 part 2"
+
+# needs review
+get_pr 37884 "gap 4.13 part 4"
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index 8b4bf7dfa441bb..faefc4b91a84e1 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,7 +1,7 @@
 # Template file for 'sagemath'
 pkgname=sagemath
 version=10.3
-revision=2
+revision=3
 build_wrksrc=pkgs/sagemath-standard
 build_style=python3-pep517
 make_build_args="--skip-dependency-check"

From 28e1ac2dcd8b36950f234d1a7fd956b1fc6a4cbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 29 Mar 2024 16:03:47 -0300
Subject: [PATCH 07/10] python3-sympy: update to 1.12.1rc1.

---
 .../python3-sympy/patches/00.python3.12.patch | 140 ------------------
 .../python3-sympy/patches/01.python3.12.patch |  27 ----
 srcpkgs/python3-sympy/template                |  17 ++-
 3 files changed, 11 insertions(+), 173 deletions(-)
 delete mode 100644 srcpkgs/python3-sympy/patches/00.python3.12.patch
 delete mode 100644 srcpkgs/python3-sympy/patches/01.python3.12.patch

diff --git a/srcpkgs/python3-sympy/patches/00.python3.12.patch b/srcpkgs/python3-sympy/patches/00.python3.12.patch
deleted file mode 100644
index 092f7dcab2fed5..00000000000000
--- a/srcpkgs/python3-sympy/patches/00.python3.12.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From f517c26fe421f03ea2aa20d7babb4df422753c5f Mon Sep 17 00:00:00 2001
-From: Sangyub Lee <sylee957@gmail.com>
-Date: Tue, 30 May 2023 10:38:29 +0900
-Subject: [PATCH 1/3] Fix deprecation issues with python 3.12 ast lib
-
----
- sympy/parsing/sympy_parser.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py
-index 7e3a0e8067ce..5cda6b61ad69 100644
---- a/sympy/parsing/sympy_parser.py
-+++ b/sympy/parsing/sympy_parser.py
-@@ -1135,7 +1135,7 @@ def visit_Compare(self, node):
-             new_node = ast.Call(
-                 func=ast.Name(id=sympy_class, ctx=ast.Load()),
-                 args=[left, right],
--                keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))],
-+                keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                 starargs=None,
-                 kwargs=None
-             )
-@@ -1168,7 +1168,7 @@ def visit_BinOp(self, node):
-                 right = ast.Call(
-                     func=ast.Name(id='Mul', ctx=ast.Load()),
-                     args=[ast.UnaryOp(op=ast.USub(), operand=ast.Num(1)), right],
--                    keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))],
-+                    keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-                 )
-@@ -1179,7 +1179,7 @@ def visit_BinOp(self, node):
-                     left = ast.Call(
-                     func=ast.Name(id='Pow', ctx=ast.Load()),
-                     args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))],
--                    keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))],
-+                    keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-                 )
-@@ -1187,7 +1187,7 @@ def visit_BinOp(self, node):
-                     right = ast.Call(
-                     func=ast.Name(id='Pow', ctx=ast.Load()),
-                     args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))],
--                    keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))],
-+                    keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-                 )
-@@ -1197,7 +1197,7 @@ def visit_BinOp(self, node):
-             new_node = ast.Call(
-                 func=ast.Name(id=sympy_class, ctx=ast.Load()),
-                 args=[left, right],
--                keywords=[ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load()))],
-+                keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                 starargs=None,
-                 kwargs=None
-             )
-@@ -1212,7 +1212,7 @@ def visit_BinOp(self, node):
-     def visit_Call(self, node):
-         new_node = self.generic_visit(node)
-         if isinstance(node.func, ast.Name) and node.func.id in self.functions:
--            new_node.keywords.append(ast.keyword(arg='evaluate', value=ast.NameConstant(value=False, ctx=ast.Load())))
-+            new_node.keywords.append(ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load())))
-         return new_node
- 
- 
-
-From 34de3853a9486e23294d28b932d5978e237bc19c Mon Sep 17 00:00:00 2001
-From: Sangyub Lee <sylee957@gmail.com>
-Date: Tue, 30 May 2023 13:17:17 +0900
-Subject: [PATCH 2/3] Replace ast.Num
-
----
- sympy/parsing/sympy_parser.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py
-index 5cda6b61ad69..4a45a9d5bff8 100644
---- a/sympy/parsing/sympy_parser.py
-+++ b/sympy/parsing/sympy_parser.py
-@@ -1167,7 +1167,7 @@ def visit_BinOp(self, node):
-             if isinstance(node.op, ast.Sub):
-                 right = ast.Call(
-                     func=ast.Name(id='Mul', ctx=ast.Load()),
--                    args=[ast.UnaryOp(op=ast.USub(), operand=ast.Num(1)), right],
-+                    args=[ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1)), right],
-                     keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-@@ -1178,7 +1178,7 @@ def visit_BinOp(self, node):
-                     rev = True
-                     left = ast.Call(
-                     func=ast.Name(id='Pow', ctx=ast.Load()),
--                    args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))],
-+                    args=[left, ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1))],
-                     keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-@@ -1186,7 +1186,7 @@ def visit_BinOp(self, node):
-                 else:
-                     right = ast.Call(
-                     func=ast.Name(id='Pow', ctx=ast.Load()),
--                    args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Num(1))],
-+                    args=[right, ast.UnaryOp(op=ast.USub(), operand=ast.Constant(1))],
-                     keywords=[ast.keyword(arg='evaluate', value=ast.Constant(value=False, ctx=ast.Load()))],
-                     starargs=None,
-                     kwargs=None
-
-From eae2a0810829682417ba17e30812faa949121cc2 Mon Sep 17 00:00:00 2001
-From: Sangyub Lee <sylee957@gmail.com>
-Date: Tue, 30 May 2023 13:53:44 +0900
-Subject: [PATCH 3/3] Fix additional deprecation warnings
-
----
- sympy/parsing/ast_parser.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sympy/parsing/ast_parser.py b/sympy/parsing/ast_parser.py
-index c828ed31a19b..95a773d5bec6 100644
---- a/sympy/parsing/ast_parser.py
-+++ b/sympy/parsing/ast_parser.py
-@@ -23,7 +23,7 @@
- from sympy.core.sympify import SympifyError
- 
- from ast import parse, NodeTransformer, Call, Name, Load, \
--    fix_missing_locations, Str, Tuple
-+    fix_missing_locations, Constant, Tuple
- 
- class Transform(NodeTransformer):
- 
-@@ -52,7 +52,7 @@ def visit_Name(self, node):
-         elif node.id in ['True', 'False']:
-             return node
-         return fix_missing_locations(Call(func=Name('Symbol', Load()),
--                args=[Str(node.id)], keywords=[]))
-+                args=[Constant(node.id)], keywords=[]))
- 
-     def visit_Lambda(self, node):
-         args = [self.visit(arg) for arg in node.args.args]
diff --git a/srcpkgs/python3-sympy/patches/01.python3.12.patch b/srcpkgs/python3-sympy/patches/01.python3.12.patch
deleted file mode 100644
index 6e1df83e8db26d..00000000000000
--- a/srcpkgs/python3-sympy/patches/01.python3.12.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 4b82eae46164afb468bb8995d87cbc643dc9e7a6 Mon Sep 17 00:00:00 2001
-From: Pablo Galindo <pablogsal@gmail.com>
-Date: Fri, 9 Jun 2023 11:22:20 +0100
-Subject: [PATCH 1/4] Fix factorial parsing for Python 3.12
-
-Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
----
- .mailmap                      | 1 +
- sympy/parsing/sympy_parser.py | 5 ++++-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/sympy/parsing/sympy_parser.py b/sympy/parsing/sympy_parser.py
-index 7e3a0e8067ce..1c89f0d25b9a 100644
---- a/sympy/parsing/sympy_parser.py
-+++ b/sympy/parsing/sympy_parser.py
-@@ -627,7 +627,10 @@ def factorial_notation(tokens: List[TOKEN], local_dict: DICT, global_dict: DICT)
-     result: List[TOKEN] = []
-     nfactorial = 0
-     for toknum, tokval in tokens:
--        if toknum == ERRORTOKEN:
-+        if toknum == OP and tokval == "!":
-+            # In Python 3.12 "!" are OP instead of ERRORTOKEN
-+            nfactorial += 1
-+        elif toknum == ERRORTOKEN:
-             op = tokval
-             if op == '!':
-                 nfactorial += 1
diff --git a/srcpkgs/python3-sympy/template b/srcpkgs/python3-sympy/template
index e767f7543c3be3..a370ce4ef82256 100644
--- a/srcpkgs/python3-sympy/template
+++ b/srcpkgs/python3-sympy/template
@@ -1,18 +1,23 @@
 # Template file for 'python3-sympy'
 pkgname=python3-sympy
-version=1.12
-revision=2
-build_style=python3-module
-hostmakedepends="python3-setuptools"
+version=1.12.1rc1
+revision=1
+build_style=python3-pep517
+hostmakedepends="python3-setuptools python3-wheel"
 depends="python3-mpmath"
-checkdepends="python3-mpmath"
+checkdepends="$depends python3-pytest python3-pytest-xdist gcc-fortran
+ python3-Cython python3-devel python3-ipython python3-lxml python3-matplotlib
+ python3-numexpr python3-numpy python3-scipy"
 short_desc="Computer algebra system for Python3"
 maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="BSD-3-Clause"
 homepage="https://sympy.org/"
 changelog="https://github.com/sympy/sympy/wiki/Release-Notes"
 distfiles="${PYPI_SITE}/s/sympy/sympy-${version}.tar.gz"
-checksum=ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8
+checksum=96c4bc7655b3418129c5ac47903c4d81bdecb49c9a1752fdca118c921fbc47a6
+
+# slow tests are broken
+make_check_args="-m not(slow)"
 
 post_install() {
 	vman doc/man/isympy.1

From 6cca9ac436d98aa56fe792b48a76be571e697a2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Mon, 22 Apr 2024 16:57:26 -0300
Subject: [PATCH 08/10] eclib: update to git 92e8733

---
 srcpkgs/eclib/patches/fix-32bit-Euler.patch | 11 -----------
 srcpkgs/eclib/template                      | 13 ++++++++++---
 2 files changed, 10 insertions(+), 14 deletions(-)
 delete mode 100644 srcpkgs/eclib/patches/fix-32bit-Euler.patch

diff --git a/srcpkgs/eclib/patches/fix-32bit-Euler.patch b/srcpkgs/eclib/patches/fix-32bit-Euler.patch
deleted file mode 100644
index 44de9c31a06aaa..00000000000000
--- a/srcpkgs/eclib/patches/fix-32bit-Euler.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/libsrc/interface.cc
-+++ b/libsrc/interface.cc
-@@ -103,7 +103,7 @@ void Compute_Euler(RR& y)
- 
-   l = RR::precision();
- 
--  x = 1 + static_cast<long>((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2));
-+  x = 1 + static_cast<long>((0.25 * (l - 3)) * (64 * LOG2));
-   n = 1 + static_cast<long>(3.591 * x);
- 
-   a=x;
diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template
index dd22d4e6de6f31..91fdc49d26a877 100644
--- a/srcpkgs/eclib/template
+++ b/srcpkgs/eclib/template
@@ -1,7 +1,8 @@
 # Template file for 'eclib'
 pkgname=eclib
-version=20240408
+version=20240408+git
 revision=1
+_gitrev=92e8733beb0e533f65ea42a05c29894c19de9b67
 build_style=gnu-configure
 configure_args="--with-flint --with-boost"
 makedepends="pari-devel ntl-devel flintlib-devel boost-devel"
@@ -10,8 +11,14 @@ 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=3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c
+#distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2"
+distfiles="https://github.com/JohnCremona/eclib/archive/$_gitrev.tar.gz"
+checksum=8223c1f9d0d1f049f148595c35665241fea295be821e46e326632adef093bd92
+
+hostmakedepends+=" autoconf automake libtool"
+post_patch() {
+	./autogen.sh
+}
 
 eclib-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} ntl-devel"

From fea5142fe0e962177ec1f149d18b9027beb427ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Wed, 27 Mar 2024 12:56:01 -0300
Subject: [PATCH 09/10] sagemath: update to 10.4.beta5.

---
 .../patches/37492-singular_4.3.2p16.patch     | 229 ------
 .../patches/37590-gap_4.13_part_1.patch       | 724 ------------------
 .../patches/37624-gap_4.13_part_2.patch       |  14 -
 .../sagemath/patches/37645-fix_doctest.patch  | 215 ++++++
 .../sagemath/patches/37763-scipy_1.13.patch   |  13 -
 .../patches/37882-eclib_20040408.patch        | 116 ---
 .../patches/37883-gap_4.13_part_3.patch       |  48 --
 ...4.13_part_4.patch => 37884-gap_4.13.patch} |   0
 .../patches/37885-cython_warnings.patch       |  12 +
 .../patches/37894-fix_build_deps.patch        |  17 +
 srcpkgs/sagemath/patches/get_patches          |  30 +-
 srcpkgs/sagemath/template                     |  23 +-
 12 files changed, 266 insertions(+), 1175 deletions(-)
 delete mode 100644 srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch
 delete mode 100644 srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
 delete mode 100644 srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
 create mode 100644 srcpkgs/sagemath/patches/37645-fix_doctest.patch
 delete mode 100644 srcpkgs/sagemath/patches/37763-scipy_1.13.patch
 delete mode 100644 srcpkgs/sagemath/patches/37882-eclib_20040408.patch
 delete mode 100644 srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
 rename srcpkgs/sagemath/patches/{37884-gap_4.13_part_4.patch => 37884-gap_4.13.patch} (100%)
 create mode 100644 srcpkgs/sagemath/patches/37885-cython_warnings.patch
 create mode 100644 srcpkgs/sagemath/patches/37894-fix_build_deps.patch

diff --git a/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch b/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch
deleted file mode 100644
index 6913f39b865ea1..00000000000000
--- a/srcpkgs/sagemath/patches/37492-singular_4.3.2p16.patch
+++ /dev/null
@@ -1,229 +0,0 @@
-diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
-index 9c9b8ffb8b9..12a9aa582a6 100644
---- a/src/sage/interfaces/singular.py
-+++ b/src/sage/interfaces/singular.py
-@@ -1211,14 +1211,14 @@ def current_ring(self):
-             polynomial ring, over a field, global ordering
-             //   coefficients: ZZ/127
-             //   number of vars : 3
--            //        block   1 : ordering rp
-+            //        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
--            //        block   1 : ordering rp
-+            //        block   1 : ordering ip
-             //                  : names    x y z
-             //        block   2 : ordering C
-         """
-@@ -2040,6 +2040,9 @@ def _sage_(self, R=None):
-         elif typ == 'intvec':
-             from sage.modules.free_module_element import vector
-             return vector([sage.rings.integer.Integer(str(e)) for e in self])
-+        elif typ == 'bigintvec':
-+            from sage.modules.free_module_element import vector
-+            return vector([sage.rings.rational.Rational(str(e)) for e in self])
-         elif typ == 'intmat':
-             from sage.matrix.constructor import matrix
-             from sage.rings.integer_ring import ZZ
-diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd
-index e36216d6395..855c95b00bd 100644
---- a/src/sage/libs/singular/decl.pxd
-+++ b/src/sage/libs/singular/decl.pxd
-@@ -243,7 +243,7 @@ cdef extern from "singular/Singular/libsingular.h":
-         ringorder_s
-         ringorder_lp
-         ringorder_dp
--        ringorder_rp
-+        ringorder_ip
-         ringorder_Dp
-         ringorder_wp
-         ringorder_Wp
-@@ -291,6 +291,10 @@ cdef extern from "singular/Singular/libsingular.h":
-         int row
-         int col
- 
-+    cdef cppclass bigintmat:
-+        int (*length)()
-+        number* (*get)(int i)
-+
-     # omalloc bins
- 
-     ctypedef struct omBin "omBin_s"
-@@ -921,6 +925,7 @@ cdef extern from "singular/Singular/libsingular.h":
-     cdef int MATRIX_CMD
-     cdef int LIST_CMD
-     cdef int INTVEC_CMD
-+    cdef int BIGINTVEC_CMD
-     cdef int NONE
-     cdef int RESOLUTION_CMD
-     cdef int PACKAGE_CMD
-diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
-index ac4bde0c20b..8284cb921a3 100644
---- a/src/sage/libs/singular/function.pyx
-+++ b/src/sage/libs/singular/function.pyx
-@@ -98,7 +98,7 @@ from sage.rings.polynomial.multi_polynomial_sequence import PolynomialSequence_g
- from sage.libs.singular.decl cimport *
- from sage.libs.singular.option import opt_ctx
- from sage.libs.singular.polynomial cimport singular_vector_maximal_component
--from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec
-+from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec, si2sa_bigintvec
- from sage.libs.singular.singular import error_messages
- 
- from sage.interfaces.singular import get_docstring
-@@ -954,6 +954,8 @@ cdef class Converter(SageObject):
-             return si2sa(<number *>to_convert.data, self._singular_ring, self._sage_ring.base_ring())
-         elif rtyp == INTVEC_CMD:
-             return si2sa_intvec(<intvec *> to_convert.data)
-+        elif rtyp == BIGINTVEC_CMD:
-+            return si2sa_bigintvec(<bigintmat *> to_convert.data)
-         elif rtyp == STRING_CMD:
-             # TODO: Need to determine what kind of data can be returned by a
-             # STRING_CMD--is it just ASCII strings or can it be an arbitrary
-@@ -1231,7 +1233,7 @@ cdef class SingularFunction(SageObject):
-             Traceback (most recent call last):
-             ...
-             RuntimeError: error in Singular function call 'size':
--            Wrong number of arguments (got 2 arguments, arity code is 302)
-+            Wrong number of arguments (got 2 arguments, arity code is 303)
-             sage: size('foobar', ring=P)
-             6
- 
-@@ -1634,17 +1636,17 @@ def singular_function(name):
-         Traceback (most recent call last):
-         ...
-         RuntimeError: error in Singular function call 'factorize':
--        Wrong number of arguments (got 0 arguments, arity code is 305)
-+        Wrong number of arguments (got 0 arguments, arity code is 306)
-         sage: factorize(f, 1, 2)
-         Traceback (most recent call last):
-         ...
-         RuntimeError: error in Singular function call 'factorize':
--        Wrong number of arguments (got 3 arguments, arity code is 305)
-+        Wrong number of arguments (got 3 arguments, arity code is 306)
-         sage: factorize(f, 1, 2, 3)
-         Traceback (most recent call last):
-         ...
-         RuntimeError: error in Singular function call 'factorize':
--        Wrong number of arguments (got 4 arguments, arity code is 305)
-+        Wrong number of arguments (got 4 arguments, arity code is 306)
- 
-     The Singular function ``list`` can be called with any number of
-     arguments::
-diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx
-index 494fd2c0caf..7b05d63e7c7 100644
---- a/src/sage/libs/singular/ring.pyx
-+++ b/src/sage/libs/singular/ring.pyx
-@@ -24,7 +24,7 @@ from sage.libs.gmp.mpz cimport mpz_init_set_ui
- from sage.libs.singular.decl cimport ring, currRing
- from sage.libs.singular.decl cimport rChangeCurrRing, rComplete, rDelete, idInit
- from sage.libs.singular.decl cimport omAlloc0, omStrDup, omAlloc
--from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_rp, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t
-+from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_ip, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t
- from sage.libs.singular.decl cimport prCopyR
- from sage.libs.singular.decl cimport n_unknown, n_algExt, n_transExt, n_Z, n_Zn,  n_Znm, n_Z2m
- from sage.libs.singular.decl cimport n_coeffType
-@@ -60,7 +60,7 @@ order_dict = {
-     "dp": ringorder_dp,
-     "Dp": ringorder_Dp,
-     "lp": ringorder_lp,
--    "rp": ringorder_rp,
-+    "ip": ringorder_ip,
-     "ds": ringorder_ds,
-     "Ds": ringorder_Ds,
-     "ls": ringorder_ls,
-diff --git a/src/sage/libs/singular/singular.pxd b/src/sage/libs/singular/singular.pxd
-index d943a1018a2..f398d27a1fa 100644
---- a/src/sage/libs/singular/singular.pxd
-+++ b/src/sage/libs/singular/singular.pxd
-@@ -1,4 +1,4 @@
--from sage.libs.singular.decl cimport ring, poly, number, intvec
-+from sage.libs.singular.decl cimport ring, poly, number, intvec, bigintmat
- from sage.libs.singular.function cimport Resolution
- 
- from sage.rings.rational cimport Rational
-@@ -29,6 +29,7 @@ cdef object   si2sa_ZZmod(number *n, ring *_ring, object base) noexcept
- cdef object   si2sa_NF(number *n, ring *_ring, object base) noexcept
- 
- cdef object si2sa_intvec(intvec *v) noexcept
-+cdef object si2sa_bigintvec(bigintmat *v) noexcept
- 
- # dispatches to all the above.
- cdef object si2sa(number *n, ring *_ring, object base) noexcept
-diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx
-index cf0124e0a35..0e5c7774e80 100644
---- a/src/sage/libs/singular/singular.pyx
-+++ b/src/sage/libs/singular/singular.pyx
-@@ -1699,6 +1699,25 @@ cdef object si2sa_intvec(intvec *v) noexcept:
-         l.append(v.get(r))
-     return tuple(l)
- 
-+cdef object si2sa_bigintvec(bigintmat *v) noexcept:
-+    r"""
-+    create a sage tuple from a singular vector of big integers
-+
-+    INPUT:
-+
-+    - ``v`` -- a (pointer to) singular bigintmat
-+
-+    OUTPUT:
-+
-+    a sage tuple
-+    """
-+    cdef int r
-+    cdef list l = list()
-+    for r in range(v.length()):
-+        n = v.get(r)
-+        l.append(si2sa_QQ(n, &n, currRing))
-+    return tuple(l)
-+
- # ==============
- # Initialisation
- # ==============
-diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
-index 70386eb0b50..b18c53de177 100644
---- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
-+++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
-@@ -1285,7 +1285,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
-             polynomial ring, over a field, global ordering
-             //   coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)
-             //   number of vars : 10
--            //        block   1 : ordering rp
-+            //        block   1 : ordering ip
-             //                  : names    x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
-             //        block   2 : ordering C
- 
-@@ -1294,7 +1294,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
-             polynomial ring, over a field, global ordering
-             //   coefficients: ZZ/127
-             //   number of vars : 2
--            //        block   1 : ordering rp
-+            //        block   1 : ordering ip
-             //                  : names    x0 x1
-             //        block   2 : ordering C
- 
-@@ -1303,7 +1303,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
-             polynomial ring, over a field, global ordering
-             //   coefficients: QQ
-             //   number of vars : 2
--            //        block   1 : ordering rp
-+            //        block   1 : ordering ip
-             //                  : names    x0 x1
-             //        block   2 : ordering C
- 
-diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py
-index 48e49ac89fa..65e68681485 100644
---- a/src/sage/rings/polynomial/term_order.py
-+++ b/src/sage/rings/polynomial/term_order.py
-@@ -388,7 +388,7 @@
- 
- singular_name_mapping = {
-     'lex'           : 'lp',
--    'invlex'        : 'rp',
-+    'invlex'        : 'ip',
-     'degrevlex'     : 'dp',
-     'deglex'        : 'Dp',
-     'neglex'        : 'ls',
diff --git a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
deleted file mode 100644
index 8e86d2a94a40ba..00000000000000
--- a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch
+++ /dev/null
@@ -1,724 +0,0 @@
-diff --git a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
-index 101cbcdb4e7..fe465251bfc 100644
---- a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
-+++ b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst
-@@ -65,13 +65,13 @@ We can access a lot of information about groups, such as:
-     Subgroup generated by [(1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
-     Subgroup generated by [(2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
-     Subgroup generated by [(1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(2,8)(3,7)(4,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(2,8)(3,7)(4,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
--    Subgroup generated by [(2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group)
-+    Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group)
- 
- In the previous cell we once again did a for loop over a set of objects
- rather than just a list of numbers.  This can be very powerful.
-diff --git a/src/doc/en/thematic_tutorials/group_theory.rst b/src/doc/en/thematic_tutorials/group_theory.rst
-index e9e6b23953f..dd0afcbef0c 100644
---- a/src/doc/en/thematic_tutorials/group_theory.rst
-+++ b/src/doc/en/thematic_tutorials/group_theory.rst
-@@ -591,8 +591,8 @@ subgroups. ::
-      Subgroup generated by [(1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group),
-      Subgroup generated by [(1,6,11,16)(2,7,12,17)(3,8,13,18)(4,9,14,19)(5,10,15,20), (1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group),
-      Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group),
--     Subgroup generated by [(1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group),
--     Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group)]
-+     Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20)] of (Cyclic group of order 20 as a permutation group),
-+     Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)] of (Cyclic group of order 20 as a permutation group)]
- 
- Be careful, this command uses some more advanced ideas and will not
- usually list *all* of the subgroups of a group. Here we are relying on
-@@ -651,16 +651,16 @@ suitable `g`. As an illustration, the code below:
-      Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
-      Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
-      Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
-      Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group),
--     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group)]
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group),
-+     Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group)]
- 
-     sage: print("An order two subgroup:\n{}".format(sg[1].list()))
-     An order two subgroup:
-diff --git a/src/sage/categories/finite_groups.py b/src/sage/categories/finite_groups.py
-index f6866485e93..70cc029e389 100644
---- a/src/sage/categories/finite_groups.py
-+++ b/src/sage/categories/finite_groups.py
-@@ -48,7 +48,7 @@ class ParentMethods:
- 
-         def semigroup_generators(self):
-             """
--            Returns semigroup generators for self.
-+            Return semigroup generators for ``self``.
- 
-             For finite groups, the group generators are also semigroup
-             generators. Hence, this default implementation calls
-@@ -58,7 +58,7 @@ def semigroup_generators(self):
- 
-                 sage: A = AlternatingGroup(4)
-                 sage: A.semigroup_generators()
--                Family ((2,3,4), (1,2,3))
-+                Family ((1,2,3), (2,3,4))
-             """
-             return self.group_generators()
- 
-@@ -74,7 +74,7 @@ def monoid_generators(self):
- 
-                 sage: A = AlternatingGroup(4)
-                 sage: A.monoid_generators()
--                Family ((2,3,4), (1,2,3))
-+                Family ((1,2,3), (2,3,4))
-             """
-             return self.group_generators()
- 
-@@ -113,7 +113,7 @@ def some_elements(self):
- 
-                 sage: A = AlternatingGroup(4)
-                 sage: A.some_elements()
--                Family ((2,3,4), (1,2,3))
-+                Family ((1,2,3), (2,3,4))
-             """
-             return self.group_generators()
- 
-diff --git a/src/sage/categories/groups.py b/src/sage/categories/groups.py
-index 445ba111c09..22f02ae4b30 100644
---- a/src/sage/categories/groups.py
-+++ b/src/sage/categories/groups.py
-@@ -102,7 +102,7 @@ def group_generators(self):
- 
-                 sage: A = AlternatingGroup(4)                                           # needs sage.groups
-                 sage: A.group_generators()                                              # needs sage.groups
--                Family ((2,3,4), (1,2,3))
-+                Family ((1,2,3), (2,3,4))
-             """
-             from sage.sets.family import Family
-             try:
-@@ -124,7 +124,7 @@ def monoid_generators(self):
-                 sage: # needs sage.groups
-                 sage: A = AlternatingGroup(4)
-                 sage: A.monoid_generators()
--                Family ((2,3,4), (1,2,3))
-+                Family ((1,2,3), (2,3,4))
-                 sage: F.<x,y> = FreeGroup()
-                 sage: F.monoid_generators()
-                 Family (x, y, x^-1, y^-1)
-diff --git a/src/sage/categories/monoids.py b/src/sage/categories/monoids.py
-index 28474bd17b6..a4340621bbe 100644
---- a/src/sage/categories/monoids.py
-+++ b/src/sage/categories/monoids.py
-@@ -565,7 +565,7 @@ def algebra_generators(self):
- 
-                     sage: A10 = AlternatingGroup(10)                                    # needs sage.groups
-                     sage: GroupAlgebras(QQ).example(A10).algebra_generators()           # needs sage.groups sage.modules
--                    Family ((8,9,10), (1,2,3,4,5,6,7,8,9))
-+                    Family ((1,2,3,4,5,6,7,8,9), (8,9,10))
- 
-                     sage: A = DihedralGroup(3).algebra(QQ); A                           # needs sage.groups sage.modules
-                     Algebra of Dihedral group of order 6 as a permutation group
-diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py
-index bbe793b3625..f98bfe0cde5 100644
---- a/src/sage/groups/abelian_gps/abelian_group.py
-+++ b/src/sage/groups/abelian_gps/abelian_group.py
-@@ -1132,7 +1132,7 @@ def permutation_group(self):
-             sage: G = AbelianGroup(2,[2,3]); G
-             Multiplicative Abelian group isomorphic to C2 x C3
-             sage: G.permutation_group()                                                 # needs sage.groups
--            Permutation Group with generators [(3,4,5), (1,2)]
-+            Permutation Group with generators [(1,2), (3,4,5)]
- 
-         TESTS:
- 
-diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py
-index 6ae81844f98..b081f1e1c4e 100644
---- a/src/sage/groups/abelian_gps/abelian_group_element.py
-+++ b/src/sage/groups/abelian_gps/abelian_group_element.py
-@@ -101,7 +101,7 @@ def as_permutation(self):
-             Multiplicative Abelian group isomorphic to C2 x C3 x C4
-             sage: a,b,c = G.gens()
-             sage: Gp = G.permutation_group(); Gp                                        # needs sage.groups
--            Permutation Group with generators [(6,7,8,9), (3,4,5), (1,2)]
-+            Permutation Group with generators [(1,2), (3,4,5), (6,7,8,9)]
-             sage: a.as_permutation()                                                    # needs sage.libs.gap
-             (1,2)
-             sage: ap = a.as_permutation(); ap                                           # needs sage.libs.gap
-diff --git a/src/sage/groups/additive_abelian/additive_abelian_group.py b/src/sage/groups/additive_abelian/additive_abelian_group.py
-index c0a90f0c110..5f389fcfb81 100644
---- a/src/sage/groups/additive_abelian/additive_abelian_group.py
-+++ b/src/sage/groups/additive_abelian/additive_abelian_group.py
-@@ -451,7 +451,7 @@ def permutation_group(self):
- 
-             sage: G = AdditiveAbelianGroup([2, 3])
-             sage: G.permutation_group()                                                 # needs sage.groups
--            Permutation Group with generators [(3,4,5), (1,2)]
-+            Permutation Group with generators [(1,2), (3,4,5)]
- 
-         TESTS:
- 
-diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py
-index e390cbbf288..901b0083b49 100644
---- a/src/sage/groups/class_function.py
-+++ b/src/sage/groups/class_function.py
-@@ -717,7 +717,7 @@ def restrict(self, H):
-             Character of Symmetric group of order 5! as a permutation group
-             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
-             sage: chi.restrict(H)
--            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
-+            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
-              (Symmetric group of order 5! as a permutation group)
-             sage: chi.restrict(H).values()
-             [3, -3, -3, -1, 0, 0]
-@@ -744,7 +744,7 @@ def induct(self, G):
-             sage: G = SymmetricGroup(5)
-             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
-             sage: xi = H.trivial_character(); xi
--            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
-+            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
-              (Symmetric group of order 5! as a permutation group)
-             sage: xi.induct(G)
-             Character of Symmetric group of order 5! as a permutation group
-@@ -1425,7 +1425,7 @@ def restrict(self, H):
-             Character of Symmetric group of order 5! as a permutation group
-             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
-             sage: chi.restrict(H)
--            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
-+            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
-              (Symmetric group of order 5! as a permutation group)
-             sage: chi.restrict(H).values()
-             [3, -3, -3, -1, 0, 0]
-@@ -1457,7 +1457,7 @@ def induct(self, G):
-             sage: G = SymmetricGroup(5)
-             sage: H = G.subgroup([(1,2,3), (1,2), (4,5)])
-             sage: xi = H.trivial_character(); xi
--            Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of
-+            Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of
-              (Symmetric group of order 5! as a permutation group)
-             sage: xi.induct(G)
-             Character of Symmetric group of order 5! as a permutation group
-diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py
-index 208758282b2..4ee53ba4f06 100644
---- a/src/sage/groups/perm_gps/permgroup.py
-+++ b/src/sage/groups/perm_gps/permgroup.py
-@@ -478,6 +478,26 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True,
-             sage: TestSuite(PermutationGroup([[]])).run()
-             sage: TestSuite(PermutationGroup([])).run()
-             sage: TestSuite(PermutationGroup([(0,1)])).run()
-+
-+        Check that :issue:`37590` is fixed::
-+
-+            sage: lgg = libgap.eval("Group((1,2,3,4,5),(4,5,6))")
-+            sage: P = PermutationGroup(gap_group=lgg)
-+            sage: h = P.hom(codomain=P, im_gens=P.gens())
-+            sage: h
-+            Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)]
-+            sage: P.gens()
-+            ((1,2,3,4,5), (4,5,6))
-+            sage: P.gap().GeneratorsOfGroup()
-+            [ (1,2,3,4,5), (4,5,6) ]
-+
-+            sage: gg = gap.eval("Group((1,2,3,4,5),(4,5,6))")
-+            sage: P = PermutationGroup(gap_group=gg)
-+            sage: P.gens()
-+            ((1,2,3,4,5), (4,5,6))
-+            sage: h = P.hom(codomain=P, im_gens=P.gens())
-+            sage: h
-+            Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)]
-         """
-         if (gens is None and gap_group is None):
-             raise ValueError("you must specify gens or gap_group")
-@@ -496,6 +516,7 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True,
- 
-         if isinstance(gap_group, LibGapElement):
-             self._libgap = gap_group
-+            canonicalize = False
- 
-         # Handle the case where only the GAP group is specified.
-         if gens is None:
-@@ -1828,7 +1849,7 @@ def stabilizer(self, point, action="OnPoints"):
- 
-             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4,10)]])
-             sage: G.stabilizer(10)
--            Subgroup generated by [(2,3,4), (1,2)(3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)])
-+            Subgroup generated by [(1,2)(3,4), (2,3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)])
-             sage: G.stabilizer(1) == G.subgroup(['(2,3)(4,10)', '(2,10,3)'])
-             True
-             sage: G = PermutationGroup([[(2,3,4)],[(6,7)]])
-@@ -2430,7 +2451,6 @@ def fitting_subgroup(self):
-             sage: G.fitting_subgroup()
-             Subgroup generated by [(1,2)(3,4), (1,3)(2,4)] of
-              (Permutation Group with generators [(1,2), (1,2,3,4)])
--
-         """
-         return self.subgroup(gap_group=self._libgap_().FittingSubgroup())
- 
-@@ -2445,7 +2465,7 @@ def solvable_radical(self):
- 
-             sage: G = SymmetricGroup(4)
-             sage: G.solvable_radical()
--            Subgroup generated by [(1,2), (1,2,3,4)] of
-+            Subgroup generated by [(1,2,3,4), (1,2)] of
-              (Symmetric group of order 4! as a permutation group)
-             sage: G = SymmetricGroup(5)
-             sage: G.solvable_radical()
-@@ -2581,7 +2601,7 @@ def conjugate(self, g):
-             sage: G = DihedralGroup(6)
-             sage: a = PermutationGroupElement("(1,2,3,4)")
-             sage: G.conjugate(a)
--            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
-+            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
- 
-         The element performing the conjugation can be specified in
-         several ways.  ::
-@@ -2589,15 +2609,15 @@ def conjugate(self, g):
-             sage: G = DihedralGroup(6)
-             sage: strng = "(1,2,3,4)"
-             sage: G.conjugate(strng)
--            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
-+            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
-             sage: G = DihedralGroup(6)
-             sage: lst = [2,3,4,1]
-             sage: G.conjugate(lst)
--            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
-+            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
-             sage: G = DihedralGroup(6)
-             sage: cycles = [(1,2,3,4)]
-             sage: G.conjugate(cycles)
--            Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)]
-+            Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)]
- 
-         Conjugation is a group automorphism, so conjugate groups
-         will be isomorphic. ::
-@@ -2671,24 +2691,24 @@ def direct_product(self, other, maps=True):
- 
-             sage: G = CyclicPermutationGroup(4)
-             sage: D = G.direct_product(G, False); D
--            Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+            Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-             sage: D,iota1,iota2,pr1,pr2 = G.direct_product(G)
-             sage: D; iota1; iota2; pr1; pr2
--            Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+            Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-             Permutation group morphism:
-               From: Cyclic group of order 4 as a permutation group
--              To:   Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+              To:   Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-               Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 )
-             Permutation group morphism:
-               From: Cyclic group of order 4 as a permutation group
--              To:   Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+              To:   Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-               Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 )
-             Permutation group morphism:
--              From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+              From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-               To:   Cyclic group of order 4 as a permutation group
-               Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 )
-             Permutation group morphism:
--              From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)]
-+              From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)]
-               To:   Cyclic group of order 4 as a permutation group
-               Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 )
-             sage: g = D([(1,3),(2,4)]); g
-@@ -2934,7 +2954,7 @@ def holomorph(self):
-             sage: D4 = DihedralGroup(4)
-             sage: H = D4.holomorph()
-             sage: H.gens()
--            ((3,8)(4,7), (2,3,5,8), (2,5)(3,8), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5))
-+            ((2,3,5,8), (2,5)(3,8), (3,8)(4,7), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5))
-             sage: G = H.subgroup([H.gens()[0],H.gens()[1],H.gens()[2]])
-             sage: N = H.subgroup([H.gens()[3],H.gens()[4]])
-             sage: N.is_normal(H)
-@@ -2954,7 +2974,6 @@ def holomorph(self):
- 
-         - Kevin Halasz (2012-08-14)
-         """
--
-         libgap.eval('G := Group({})'.format(list(self.gens())))
-         libgap.eval('aut := AutomorphismGroup(G)')
-         libgap.eval('alpha := InverseGeneralMapping(NiceMonomorphism(aut))')
-@@ -3137,7 +3156,7 @@ def quotient(self, N, **kwds):
-             sage: G.quotient(N)
-             Permutation Group with generators [(1,2)]
-             sage: G.quotient(G)
--            Permutation Group with generators [()]
-+            Permutation Group with generators [(), ()]
-         """
-         Q = self._libgap_() / N._libgap_()
-         # Return Q as a permutation group
-@@ -3599,13 +3618,13 @@ def conjugacy_classes_subgroups(self):
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
-              Subgroup generated by [(2,4)] of
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
--             Subgroup generated by [(1,2)(3,4), (1,4)(2,3)] of
-+             Subgroup generated by [(1,4)(2,3), (1,2)(3,4)] of
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
-              Subgroup generated by [(2,4), (1,3)(2,4)] of
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
-              Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]),
--             Subgroup generated by [(2,4), (1,2)(3,4), (1,4)(2,3)] of
-+             Subgroup generated by [(1,4)(2,3), (1,2)(3,4), (2,4)] of
-               (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])]
- 
-         ::
-@@ -3618,7 +3637,7 @@ def conjugacy_classes_subgroups(self):
-               (Symmetric group of order 3! as a permutation group),
-              Subgroup generated by [(1,2,3)] of
-               (Symmetric group of order 3! as a permutation group),
--             Subgroup generated by [(2,3), (1,2,3)] of
-+             Subgroup generated by [(1,2,3), (2,3)] of
-               (Symmetric group of order 3! as a permutation group)]
- 
-         AUTHORS:
-@@ -3640,7 +3659,7 @@ def subgroups(self):
-         with one element on through up to the whole group.
-         Conjugacy classes of subgroups are contiguous in the list.
- 
--        .. warning::
-+        .. WARNING::
- 
-             For even relatively small groups this method can
-             take a very long time to execute, or create vast
-@@ -3671,7 +3690,7 @@ def subgroups(self):
-               (Symmetric group of order 3! as a permutation group),
-              Subgroup generated by [(1,2,3)] of
-               (Symmetric group of order 3! as a permutation group),
--             Subgroup generated by [(2,3), (1,2,3)] of
-+             Subgroup generated by [(1,2,3), (2,3)] of
-               (Symmetric group of order 3! as a permutation group)]
- 
-             sage: G = CyclicPermutationGroup(14)
-@@ -3682,8 +3701,8 @@ def subgroups(self):
-               (Cyclic group of order 14 as a permutation group),
-              Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of
-               (Cyclic group of order 14 as a permutation group),
--             Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
--                                    (1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of
-+             Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14),
-+                                    (1,2,3,4,5,6,7,8,9,10,11,12,13,14)] of
-               (Cyclic group of order 14 as a permutation group)]
- 
-         AUTHOR:
-@@ -4049,15 +4068,15 @@ def normalizer(self, g):
-             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
-             sage: g = G([(1,3)])
-             sage: G.normalizer(g)
--            Subgroup generated by [(2,4), (1,3)] of
-+            Subgroup generated by [(1,3), (2,4)] of
-              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
-             sage: g = G([(1,2,3,4)])
-             sage: G.normalizer(g)
--            Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of
-+            Subgroup generated by  [(1,2,3,4), (1,3)(2,4), (2,4)] of
-              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
-             sage: H = G.subgroup([G([(1,2,3,4)])])
-             sage: G.normalizer(H)
--            Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of
-+            Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of
-              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
-         """
-         return self.subgroup(gap_group=self._libgap_().Normalizer(g))
-@@ -4071,7 +4090,7 @@ def centralizer(self, g):
-             sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
-             sage: g = G([(1,3)])
-             sage: G.centralizer(g)
--            Subgroup generated by [(2,4), (1,3)] of
-+            Subgroup generated by [(1,3), (2,4)] of
-              (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])
-             sage: g = G([(1,2,3,4)])
-             sage: G.centralizer(g)
-@@ -4715,7 +4734,7 @@ def composition_series(self):
-             sage: G.composition_series()
-             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
--             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
-+             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
-              Subgroup generated by [()] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
-@@ -4746,7 +4765,7 @@ def derived_series(self):
-             sage: G.derived_series()
-             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
--             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
-+             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
-         """
-         libgap.set_seed()
-@@ -4770,7 +4789,7 @@ def lower_central_series(self):
-             sage: G.lower_central_series()
-             [Subgroup generated by [(3,4), (1,2,3)(4,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)]),
--             Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of
-+             Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of
-               (Permutation Group with generators [(3,4), (1,2,3)(4,5)])]
-         """
-         libgap.set_seed()
-@@ -5123,7 +5142,8 @@ def __richcmp__(self, other, op):
-             sage: G
-             Symmetric group of order 6! as a permutation group
-             sage: G3
--            Subgroup generated by [(1,2), (1,2,3,4,5,6)] of (Symmetric group of order 6! as a permutation group)
-+            Subgroup generated by [(1,2,3,4,5,6), (1,2)] of
-+             (Symmetric group of order 6! as a permutation group)
-             sage: G is G3
-             False
-             sage: G == G3 # as permutation groups
-diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py
-index 222ee36f6da..6b42e654234 100644
---- a/src/sage/groups/perm_gps/permgroup_named.py
-+++ b/src/sage/groups/perm_gps/permgroup_named.py
-@@ -449,7 +449,7 @@ def young_subgroup(self, comp):
-             sage: S = SymmetricGroup(8)
-             sage: c = Composition([2,2,2,2])
-             sage: S.young_subgroup(c)
--            Subgroup generated by [(7,8), (5,6), (3,4), (1,2)] of
-+            Subgroup generated by [(1,2), (3,4), (5,6), (7,8)] of
-              (Symmetric group of order 8! as a permutation group)
- 
-             sage: S = SymmetricGroup(['a','b','c'])
-@@ -706,6 +706,16 @@ def __init__(self, domain=None):
- 
-             sage: groups.permutation.Alternating(6)
-             Alternating group of order 6!/2 as a permutation group
-+
-+        Check that alternating groups have their generators in the correct
-+        order (:issue:`37590`)::
-+
-+            sage: A = AlternatingGroup(6)
-+            sage: A.gens()
-+            ((1,2,3,4,5), (4,5,6))
-+            sage: A.gap().GeneratorsOfGroup()
-+            [ (1,2,3,4,5), (4,5,6) ]
-+            sage: h = A.hom(codomain=A, im_gens=A.gens())
-         """
-         PermutationGroup_symalt.__init__(self, gap_group='AlternatingGroup(%s)' % len(domain), domain=domain)
- 
-@@ -3084,8 +3094,8 @@ def __init__(self, q, name='a'):
-         EXAMPLES::
- 
-             sage: SuzukiGroup(8)                                                        # needs sage.rings.finite_rings
--            Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64),
--            (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)]
-+            Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56),
-+             (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)]
-             sage: print(SuzukiGroup(8))                                                 # needs sage.rings.finite_rings
-             The Suzuki group over Finite Field in a of size 2^3
- 
-@@ -3101,8 +3111,8 @@ def __init__(self, q, name='a'):
-         TESTS::
- 
-             sage: groups.permutation.Suzuki(8)                                          # needs sage.rings.finite_rings
--            Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64),
--            (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)]
-+            Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56),
-+             (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)]
- 
-         REFERENCES:
- 
-diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx
-index 1ef3cbaf681..805bb9fe8ae 100644
---- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx
-+++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx
-@@ -2116,7 +2116,7 @@ cdef class Polynomial_rational_flint(Polynomial):
-             sage: G = f.galois_group(); G
-             Transitive group number 5 of degree 4
-             sage: G.gens()
--            ((1,2), (1,2,3,4))
-+            ((1,2,3,4), (1,2))
-             sage: G.order()
-             24
- 
-diff --git a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
-index 25efca28dce..028dd8cb33c 100644
---- a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
-+++ b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py
-@@ -95,7 +95,7 @@
-      Subgroup generated by [(1,2)] of (Symmetric group of order 3! as a permutation group),
-      Subgroup generated by [(1,3)] of (Symmetric group of order 3! as a permutation group),
-      Subgroup generated by [(1,2,3)] of (Symmetric group of order 3! as a permutation group),
--     Subgroup generated by [(2,3), (1,2,3)] of (Symmetric group of order 3! as a permutation group)]
-+     Subgroup generated by [(1,2,3), (2,3)] of (Symmetric group of order 3! as a permutation group)]
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-diff --git a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
-index 036b0a390c0..b1ecf0d8d48 100644
---- a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
-+++ b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py
-@@ -271,10 +271,10 @@
-      ((1,4),),
-      ((1,2)(3,4),),
-      ((1,3)(2,4),),
--     ((2,3), (1,4)(2,3)),
--     ((1,2,4,3), (1,4)(2,3)),
--     ((1,2)(3,4), (1,4)(2,3)),
--     ((2,3), (1,2,4,3), (1,4)(2,3))]
-+     ((1,4)(2,3), (2,3)),
-+     ((1,4)(2,3), (1,2,4,3)),
-+     ((1,4)(2,3), (1,2)(3,4)),
-+     ((1,4)(2,3), (2,3), (1,2,4,3))]
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-diff --git a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
-index abff8d3189c..dbc7bca8d96 100644
---- a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
-+++ b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py
-@@ -164,15 +164,14 @@
-     sage: H = DihedralGroup(4)
-     sage: results = G.direct_product(H)
-     sage: results[0]
--    Permutation Group with generators [(4,5,6,7), (4,7)(5,6), (1,2,3)]
-+    Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-     sage: results[1]
-     Permutation group morphism:
-       From: Cyclic group of order 3 as a permutation group
--      To:   Permutation Group with generators
--            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
-+      To:   Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
-       Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 )
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
-@@ -180,16 +179,14 @@
-     sage: results[2]
-     Permutation group morphism:
-       From: Dihedral group of order 8 as a permutation group
--      To:   Permutation Group with generators
--            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
-+      To:   Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
-       Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 )
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-     sage: results[3]
-     Permutation group morphism:
--      From: Permutation Group with generators
--            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
-+      From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
-       To:   Cyclic group of order 3 as a permutation group
-       Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 )
- 
-@@ -197,8 +194,7 @@
- 
-     sage: results[4]
-     Permutation group morphism:
--      From: Permutation Group with generators
--            [(4,5,6,7), (4,7)(5,6), (1,2,3)]
-+      From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)]
-       To:   Dihedral group of order 8 as a permutation group
-       Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 )
- 
-diff --git a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
-index 0051f206528..cd78b147ca3 100644
---- a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
-+++ b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py
-@@ -65,12 +65,12 @@
-     sage: uniqS2
-     [Permutation Group with generators [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-      Permutation Group with generators [(1,7)(2,6)(3,5)(8,18)(9,17)(10,16)(11,15)(12,14), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
--     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17)],
--     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18)],
-+     Permutation Group with generators [(1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-+     Permutation Group with generators [(1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-      Permutation Group with generators [(1,3)(4,18)(5,17)(6,16)(7,15)(8,14)(9,13)(10,12), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-      Permutation Group with generators [(1,9)(2,8)(3,7)(4,6)(10,18)(11,17)(12,16)(13,15), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
--     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16)],
--     Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10)],
-+     Permutation Group with generators [(1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-+     Permutation Group with generators [(1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)],
-      Permutation Group with generators [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]]
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
-@@ -83,8 +83,8 @@
-     sage: G = DihedralGroup(18)
-     sage: S3 = G.sylow_subgroup(3); S3
-     Subgroup generated by
--    [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
--     (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]
-+    [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
-+     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]
-     of (Dihedral group of order 36 as a permutation group)
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
-@@ -92,8 +92,8 @@
-     sage: uniqS3 = all_sylow(G, 3)
-     sage: uniqS3
-     [Permutation Group with generators
--    [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
--    (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]]
-+     [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
-+      (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]]
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-@@ -117,8 +117,8 @@
-     sage: S3 = G.sylow_subgroup(3)
-     sage: N2 = G.normalizer(S2); N2
-     Subgroup generated by
--    [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
--     (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]
-+    [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18),
-+     (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11)]
-     of (Dihedral group of order 36 as a permutation group)
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
-@@ -129,11 +129,12 @@
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-     sage: N3 = G.normalizer(S3); N3
--    Subgroup generated by [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
--    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18),
--    (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
--    (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] of (Dihedral group of
--    order 36 as a permutation group)
-+    Subgroup generated by
-+    [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6),
-+     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
-+     (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11),
-+     (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)]
-+    of (Dihedral group of order 36 as a permutation group)
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
-@@ -154,10 +155,10 @@
-     sage: N = G.normalizer(H)
-     sage: N
-     Subgroup generated by
--    [(1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11),
--    (1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13),
--    (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] of (Dihedral group of
--    order 36 as a permutation group)
-+    [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13),
-+     (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18),
-+     (1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11)]
-+    of (Dihedral group of order 36 as a permutation group)
- 
- ~~~~~~~~~~~~~~~~~~~~~~ ::
- 
diff --git a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
deleted file mode 100644
index 46541442bc9a7d..00000000000000
--- a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/sage/interfaces/gap3.py b/src/sage/interfaces/gap3.py
-index e73308e014e..de2a7fe4289 100644
---- a/src/sage/interfaces/gap3.py
-+++ b/src/sage/interfaces/gap3.py
-@@ -752,7 +752,8 @@ def _latex_(self):
-         r"""
-         EXAMPLES::
- 
--            sage: s = gap("[[1,2], [3/4, 5/6]]")
-+            sage: # optional - gap3
-+            sage: s = gap3("[[1,2], [3/4, 5/6]]")
-             sage: s._latex_()
-             '\\left(\\begin{array}{rr} 1&2\\\\ 3/4&\\frac{5}{6}\\\\ \\end{array}\\right)'
-             sage: latex(s)
diff --git a/srcpkgs/sagemath/patches/37645-fix_doctest.patch b/srcpkgs/sagemath/patches/37645-fix_doctest.patch
new file mode 100644
index 00000000000000..7a0b70e7cb7df1
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37645-fix_doctest.patch
@@ -0,0 +1,215 @@
+diff --git a/src/sage/doctest/test.py b/src/sage/doctest/test.py
+index cb2cecc0b8b..735fa47ec42 100644
+--- a/src/sage/doctest/test.py
++++ b/src/sage/doctest/test.py
+@@ -54,7 +54,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 tolerance.rst
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print(":-(")    # abs tol 0.1
+     Expected:
+@@ -62,7 +62,7 @@
+     Got:
+         :-(
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("1.0 2.0 3.0")  # abs tol 0.1
+     Expected:
+@@ -70,7 +70,7 @@
+     Got:
+         1.0 2.0 3.0
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("Hello")  # abs tol 0.1
+     Expected:
+@@ -78,7 +78,7 @@
+     Got:
+         Hello
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("1.0")  # abs tol 0.1
+     Expected:
+@@ -86,7 +86,7 @@
+     Got:
+         1.0
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("Hello 1.1")  # abs tol 0.1
+     Expected:
+@@ -94,7 +94,7 @@
+     Got:
+         Hello 1.1
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("Hello 1.0")  # rel tol 1e-6
+     Expected:
+@@ -104,7 +104,7 @@
+     Tolerance exceeded:
+         0.999999 vs 1.0, tolerance 2e-6 > 1e-6
+     **********************************************************************
+-    File "tolerance.rst", line ..., in sage.doctest.tests.tolerance
++    File "tolerance.rst", line ..., in ...tolerance
+     Failed example:
+         print("Hello 1.0")  # rel tol 1e-6
+     Expected:
+@@ -124,7 +124,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 initial.rst
+     **********************************************************************
+-    File "initial.rst", line 4, in sage.doctest.tests.initial
++    File "initial.rst", line 4, in ...initial
+     Failed example:
+         a = binomiak(10,5)  # random to test that we still get the exception
+     Exception raised:
+@@ -132,7 +132,7 @@
+         ...
+         NameError: name 'binomiak' is not defined
+     **********************************************************************
+-    File "initial.rst", line 14, in sage.doctest.tests.initial
++    File "initial.rst", line 14, in ...initial
+     Failed example:
+         binomial(10,5)
+     Expected:
+@@ -155,7 +155,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 initial.rst
+     **********************************************************************
+-    File "initial.rst", line 4, in sage.doctest.tests.initial
++    File "initial.rst", line 4, in ...initial
+     Failed example:
+         a = binomiak(10,5)  # random to test that we still get the exception
+     Exception raised:
+@@ -200,7 +200,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 keyboardinterrupt.rst
+     **********************************************************************
+-    File "keyboardinterrupt.rst", line 11, in sage.doctest.tests.keyboardinterrupt
++    File "keyboardinterrupt.rst", line 11, in ...keyboardinterrupt
+     Failed example:
+         raise KeyboardInterrupt
+     Exception raised:
+@@ -302,7 +302,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 fail_and_die.rst
+     **********************************************************************
+-    File "fail_and_die.rst", line 5, in sage.doctest.tests.fail_and_die
++    File "fail_and_die.rst", line 5, in ...fail_and_die
+     Failed example:
+         this_gives_a_NameError
+     Exception raised:
+@@ -327,7 +327,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 sig_on.rst
+     **********************************************************************
+-    File "sig_on.rst", line 6, in sage.doctest.tests.sig_on
++    File "sig_on.rst", line 6, in ...sig_on
+     Failed example:
+         sig_on_count() # check sig_on/off pairings (virtual doctest)
+     Expected:
+@@ -336,7 +336,7 @@
+         1
+     **********************************************************************
+     1 item had failures:
+-       1 of   5 in sage.doctest.tests.sig_on
++       1 of   5 in ...sig_on
+         [3 tests, 1 failure, ...]
+     ----------------------------------------------------------------------
+     sage -t --warn-long 0.0 --random-seed=0 sig_on.rst  # 1 doctest failed
+@@ -356,7 +356,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst
+     **********************************************************************
+-    File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure
++    File "simple_failure.rst", line 7, in ...simple_failure
+     Failed example:
+         a * b
+     Expected:
+@@ -365,7 +365,7 @@
+         15
+     **********************************************************************
+     1 item had failures:
+-       1 of   5 in sage.doctest.tests.simple_failure
++       1 of   5 in ...simple_failure
+         [4 tests, 1 failure, ...]
+     ----------------------------------------------------------------------
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst  # 1 doctest failed
+@@ -381,7 +381,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst
+     **********************************************************************
+-    File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure
++    File "simple_failure.rst", line 7, in ...simple_failure
+     Failed example:
+         a * b
+     Expected:
+@@ -390,7 +390,7 @@
+         15
+     **********************************************************************
+     1 item had failures:
+-       1 of   5 in sage.doctest.tests.simple_failure
++       1 of   5 in ...simple_failure
+         [4 tests, 1 failure, ...]
+     ----------------------------------------------------------------------
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst  # 1 doctest failed
+@@ -406,7 +406,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst
+     **********************************************************************
+-    File "simple_failure.rst", line 7, in sage.doctest.tests.simple_failure
++    File "simple_failure.rst", line 7, in ...simple_failure
+     Failed example:
+         a * b
+     Expected:
+@@ -424,7 +424,7 @@
+     Returning to doctests...
+     **********************************************************************
+     1 item had failures:
+-       1 of   5 in sage.doctest.tests.simple_failure
++       1 of   5 in ...simple_failure
+         [4 tests, 1 failure, ...]
+     ----------------------------------------------------------------------
+     sage -t --warn-long 0.0 --random-seed=0 simple_failure.rst  # 1 doctest failed
+@@ -553,7 +553,7 @@
+     Doctesting 1 file.
+     sage -t --warn-long 0.0 --random-seed=0 random_seed.rst
+     **********************************************************************
+-    File "random_seed.rst", line 3, in sage.doctest.tests.random_seed
++    File "random_seed.rst", line 3, in ...random_seed
+     Failed example:
+         randint(5, 10)
+     Expected:
+@@ -562,7 +562,7 @@
+         5
+     **********************************************************************
+     1 item had failures:
+-       1 of   2 in sage.doctest.tests.random_seed
++       1 of   2 in ...random_seed
+         [1 test, 1 failure, ...s]
+     ----------------------------------------------------------------------
+     sage -t --warn-long 0.0 --random-seed=0 random_seed.rst  # 1 doctest failed
+diff --git a/src/sage/misc/package_dir.py b/src/sage/misc/package_dir.py
+index 16c78d18462..06cb64c0dee 100644
+--- a/src/sage/misc/package_dir.py
++++ b/src/sage/misc/package_dir.py
+@@ -113,7 +113,7 @@ def read_distribution(src_file):
+ 
+         sage: from sage.env import SAGE_SRC
+         sage: from sage.misc.package_dir import read_distribution
+-        sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'tdlib.pyx'))
++        sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'tdlib.pyx'))  # needs tdlib
+         'sagemath-tdlib'
+         sage: read_distribution(os.path.join(SAGE_SRC, 'sage', 'graphs', 'graph_decompositions', 'modular_decomposition.py'))
+         ''
diff --git a/srcpkgs/sagemath/patches/37763-scipy_1.13.patch b/srcpkgs/sagemath/patches/37763-scipy_1.13.patch
deleted file mode 100644
index 219c6bdc323f7e..00000000000000
--- a/srcpkgs/sagemath/patches/37763-scipy_1.13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/sage/matrix/matrix_double_dense.pyx b/src/sage/matrix/matrix_double_dense.pyx
-index 6877a924de2..a01defad999 100644
---- a/src/sage/matrix/matrix_double_dense.pyx
-+++ b/src/sage/matrix/matrix_double_dense.pyx
-@@ -3683,7 +3683,7 @@ cdef class Matrix_double_dense(Matrix_numpy_dense):
-             sage: A = matrix(CDF, 2, [1,2+I,3*I,4]); A                                  # needs sage.symbolic
-             [        1.0 2.0 + 1.0*I]
-             [      3.0*I         4.0]
--            sage: A.exp()  # tol 1.1e-14                                                # needs sage.symbolic
-+            sage: A.exp()  # tol 3e-14                                                  # needs sage.symbolic
-             [-19.614602953804912 + 12.517743846762578*I   3.7949636449582176 + 28.88379930658099*I]
-             [ -32.383580980922254 + 21.88423595789845*I   2.269633004093535 + 44.901324827684824*I]
- 
diff --git a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch
deleted file mode 100644
index 819ee8e63ac476..00000000000000
--- a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py
-index 7b2b07b1f3f..6c15997c09f 100644
---- a/src/sage/libs/eclib/interface.py
-+++ b/src/sage/libs/eclib/interface.py
-@@ -728,7 +728,7 @@ class mwrank_MordellWeil(SageObject):
-         P1 = [-3:0:1]     is generator number 1
-         saturating up to 20...Saturation index bound (for points of good reduction)  = 3
-         Reducing saturation bound from given value 20 to computed index bound 3
--        Tamagawa index primes are [ 2 ]
-+        Tamagawa index primes are [ 2 ]...
-         Checking saturation at [ 2 3 ]
-         Checking 2-saturation
-         Points were proved 2-saturated (max q used = 7)
-@@ -738,7 +738,7 @@ class mwrank_MordellWeil(SageObject):
-         P2 = [-2:3:1]     is generator number 2
-         saturating up to 20...Saturation index bound (for points of good reduction)  = 4
-         Reducing saturation bound from given value 20 to computed index bound 4
--        Tamagawa index primes are [ 2 ]
-+        Tamagawa index primes are [ 2 ]...
-         Checking saturation at [ 2 3 ]
-         Checking 2-saturation
-         possible kernel vector = [1,1]
-@@ -753,7 +753,7 @@ class mwrank_MordellWeil(SageObject):
-         P3 = [-14:25:8]   is generator number 3
-         saturating up to 20...Saturation index bound (for points of good reduction)  = 3
-         Reducing saturation bound from given value 20 to computed index bound 3
--        Tamagawa index primes are [ 2 ]
-+        Tamagawa index primes are [ 2 ]...
-         Checking saturation at [ 2 3 ]
-         Checking 2-saturation
-         Points were proved 2-saturated (max q used = 11)
-@@ -908,7 +908,7 @@ def process(self, v, saturation_bound=0):
-             saturating basis...Saturation index bound (for points of good reduction)  = 93
-             Only p-saturating for p up to given value 2.
-             The resulting points may not be p-saturated for p between this and the computed index bound 93
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 ]
-             Checking 2-saturation
-             possible kernel vector = [1,0,0]
-@@ -930,7 +930,7 @@ def process(self, v, saturation_bound=0):
-             saturating basis...Saturation index bound (for points of good reduction)  = 46
-             Only p-saturating for p up to given value 3.
-             The resulting points may not be p-saturated for p between this and the computed index bound 46
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
-@@ -954,7 +954,7 @@ def process(self, v, saturation_bound=0):
-             saturating basis...Saturation index bound (for points of good reduction)  = 15
-             Only p-saturating for p up to given value 5.
-             The resulting points may not be p-saturated for p between this and the computed index bound 15
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 5 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
-@@ -978,7 +978,7 @@ def process(self, v, saturation_bound=0):
-             0.417143558758384
-             sage: EQ.saturate()   # points are now saturated
-             saturating basis...Saturation index bound (for points of good reduction)  = 3
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
-@@ -1189,7 +1189,7 @@ def saturate(self, max_prime=-1, min_prime=2):
- 
-             sage: EQ.saturate()   # points are now saturated
-             saturating basis...Saturation index bound (for points of good reduction) = 3
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
-@@ -1217,7 +1217,7 @@ def saturate(self, max_prime=-1, min_prime=2):
- 
-             sage: EQ.saturate()
-             saturating basis...Saturation index bound (for points of good reduction) = 3
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
-diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx
-index bc475f907b6..c685c329926 100644
---- a/src/sage/libs/eclib/mwrank.pyx
-+++ b/src/sage/libs/eclib/mwrank.pyx
-@@ -590,7 +590,7 @@ cdef class _mw:
-             P1 = [-3:0:1]         is generator number 1
-             saturating up to 20...Saturation index bound (for points of good reduction)  = 3
-             Reducing saturation bound from given value 20 to computed index bound 3
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 7)
-@@ -600,7 +600,7 @@ cdef class _mw:
-             P2 = [-2:3:1]         is generator number 2
-             saturating up to 20...Saturation index bound (for points of good reduction)  = 4
-             Reducing saturation bound from given value 20 to computed index bound 4
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             possible kernel vector = [1,1]
-@@ -615,7 +615,7 @@ cdef class _mw:
-             P3 = [-14:25:8]       is generator number 3
-             saturating up to 20...Saturation index bound (for points of good reduction)  = 3
-             Reducing saturation bound from given value 20 to computed index bound 3
--            Tamagawa index primes are [ 2 ]
-+            Tamagawa index primes are [ 2 ]...
-             Checking saturation at [ 2 3 ]
-             Checking 2-saturation
-             Points were proved 2-saturated (max q used = 11)
diff --git a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
deleted file mode 100644
index d22922704ecffa..00000000000000
--- a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/src/sage/groups/libgap_wrapper.pyx b/src/sage/groups/libgap_wrapper.pyx
-index 0cf0e8bfb31..ddba766e94d 100644
---- a/src/sage/groups/libgap_wrapper.pyx
-+++ b/src/sage/groups/libgap_wrapper.pyx
-@@ -602,14 +602,11 @@ cdef class ElementLibGAP(MultiplicativeGroupElement):
-             sage: from sage.groups.libgap_group import GroupLibGAP
-             sage: G = GroupLibGAP(libgap.FreeGroup('a', 'b'))
-             sage: g = G.gen(0) * G.gen(1)
--            sage: g._latex_()
--            "ab%\n"
--        """
--        try:
--            return self.gap().LaTeX()
--        except ValueError:
--            from sage.misc.latex import latex
--            return latex(self._repr_())
-+            sage: latex(g)
-+            \text{\texttt{a*b}}
-+        """
-+        from sage.misc.latex import latex
-+        return latex(self._repr_())
- 
-     cpdef _mul_(left, right):
-         """
-diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py
-index ee5861ac785..2e49e4c106f 100644
---- a/src/sage/interfaces/gap.py
-+++ b/src/sage/interfaces/gap.py
-@@ -1562,16 +1562,10 @@ def _latex_(self):
- 
-             sage: s = gap("[[1,2], [3/4, 5/6]]")
-             sage: latex(s)
--            \left(\begin{array}{rr} 1&2\\ 3/4&\frac{5}{6}\\ \end{array}\right)
-+            \left[\left[1, 2\right], \left[\frac{3}{4}, \frac{5}{6}\right]\right]
-         """
--        P = self._check_valid()
--        try:
--            s = P.eval('LaTeXObj(%s)' % self.name())
--            s = s.replace('\\\\', '\\').replace('"', '')
--            s = s.replace('%\\n', ' ')
--            return s
--        except RuntimeError:
--            return str(self)
-+        from sage.misc.latex import latex
-+        return latex(self._sage_())
- 
-     @cached_method
-     def _tab_completion(self):
diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch b/srcpkgs/sagemath/patches/37884-gap_4.13.patch
similarity index 100%
rename from srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch
rename to srcpkgs/sagemath/patches/37884-gap_4.13.patch
diff --git a/srcpkgs/sagemath/patches/37885-cython_warnings.patch b/srcpkgs/sagemath/patches/37885-cython_warnings.patch
new file mode 100644
index 00000000000000..fa4b648cfc1577
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37885-cython_warnings.patch
@@ -0,0 +1,12 @@
+diff --git a/src/sage_setup/command/sage_build_cython.py b/src/sage_setup/command/sage_build_cython.py
+index f4b1357c543..3435c196d49 100644
+--- a/src/sage_setup/command/sage_build_cython.py
++++ b/src/sage_setup/command/sage_build_cython.py
+@@ -226,6 +226,7 @@ def run(self):
+                 compiler_directives=self.cython_directives,
+                 compile_time_env=self.compile_time_env,
+                 create_extension=self.create_extension,
++                show_all_warnings=True,
+                 # Debugging
+                 gdb_debug=self.debug,
+                 output_dir=os.path.join(self.build_lib, "sage"),
diff --git a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch
new file mode 100644
index 00000000000000..2ebdec289ebc57
--- /dev/null
+++ b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch
@@ -0,0 +1,17 @@
+diff --git a/src/pyproject.toml b/src/pyproject.toml
+index 781af00a8d7..f70304534d9 100644
+--- a/src/pyproject.toml
++++ b/src/pyproject.toml
+@@ -11,12 +11,9 @@ requires = [
+     # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748
+     'cython >=3.0, != 3.0.3, <4.0',
+     'gmpy2 ~=2.1.b999',
+-    'jupyter_core >=4.6.3',
+     'memory_allocator',
+     'numpy >=1.19',
+     'pkgconfig',
+-    # pplpy 0.8.4 and earlier do not declare dependencies correctly (see https://github.com/sagemath/sage/issues/30922)
+-    'pplpy >=0.8.6',
+ ]
+ build-backend = "setuptools.build_meta"
+ 
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 291824adc2549e..3f1f98807149d2 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -6,7 +6,7 @@ URL_BASE_PR="https://github.com/sagemath/sage/pull/"
 URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
 
 case "$1" in
-	-n)  DO=echo ;;
+	-n)  dry=true ;;
 esac
 
 # get_pr <PR number> <description> [ext]
@@ -14,27 +14,25 @@ get_pr() {
 	pr=$1
 	desc=$(echo "$2" | sed -e 's/ /_/g')
 	ext=${3-diff}
-	$DO wget "$URL_BASE_PR$pr.$ext" -O "$pr-$desc.patch"
+	url="$URL_BASE_PR$pr.$ext"
+	out="$pr-$desc.patch"
+	echo "curl -sL \"$url\" | filterdiff ... > \"$pr-$desc.patch\""
+	if [ -z "$dry" ]; then
+		curl -sL "$url" |
+			filterdiff -p1 -x src/setup.py -x build/* |
+			cat > "$pr-$desc.patch"
+	fi
 }
 
 # run from patches dir
 cd $(dirname "$0")
 
-# merged in 10.4.beta1
-get_pr 37590 "gap 4.13 part 1"
-get_pr 37624 "gap 4.13 part 2"
-
-# merged in 10.4.beta2
-get_pr 37763 "scipy 1.13"
-get_pr 37882 "eclib 20040408"
-get_pr 37883 "gap 4.13 part 3"
-
-# merged in 10.4.beta5
-get_pr 37492 "singular 4.3.2p16"
-
-# positive review
+# merged in 10.4.beta6
+get_pr 37894 "fix build deps"
 get_pr 37949 "conway-polynomials 0.10 part 1"
 get_pr 37967 "conway-polynomials 0.10 part 2"
 
 # needs review
-get_pr 37884 "gap 4.13 part 4"
+get_pr 37645 "fix doctest"
+get_pr 37884 "gap 4.13"
+get_pr 37885 "cython warnings"
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index faefc4b91a84e1..6ccbcd91226625 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,11 +1,9 @@
 # Template file for 'sagemath'
 pkgname=sagemath
-version=10.3
-revision=3
-build_wrksrc=pkgs/sagemath-standard
+version=10.4.beta5
+revision=1
 build_style=python3-pep517
-make_build_args="--skip-dependency-check"
-hostmakedepends="m4 pkg-config python3-Cython python3-Jinja2
+hostmakedepends="pkg-config python3-Cython python3-Jinja2
  python3-pkgconfig python3-setuptools python3-wheel"
 makedepends="boost-devel brial-devel cliquer-devel ecl eclib-devel
  ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-devel glpk-devel
@@ -31,21 +29,16 @@ maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
 license="GPL-2.0-or-later"
 homepage="https://www.sagemath.org/"
 changelog="https://github.com/sagemath/sage/releases"
-distfiles="https://github.com/sagemath/sage/archive/refs/tags/$version.tar.gz"
-checksum=59feb92c05e74d6db7a75f398c45c24b5157b1ecd3d8ac198806e2e6add77d96
+distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${version/.beta/b}.tar.gz"
+checksum=ff397ad303a83a59668ce185968e237aca46846c1db3fa5b9263d5b257dfd389
 nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima"
 
+# main repo `.../src/sage/`  is `.../sage/` here
+patch_args=-Np2
+
 # parallel build
 export SAGE_NUM_THREADS="$XBPS_MAKEJOBS"
 
-post_patch() {
-	# git tree needs bootstrapping
-	$wrksrc/bootstrap sagelib
-
-	# we need sage_setup here
-	ln -s ../../src/sage_setup .
-}
-
 post_install() {
 	# move scripts to /usr/libexec
 	vmkdir usr/libexec

From 609306ba301d079b52a48ec1353b1c7389429dd4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Sun, 12 May 2024 20:55:37 -0300
Subject: [PATCH 10/10] sagemath: update to 10.4.beta6.

---
 .../patches/37894-fix_build_deps.patch        | 17 -----
 ...37949-conway-polynomials_0.10_part_1.patch | 24 ------
 ...37967-conway-polynomials_0.10_part_2.patch | 74 -------------------
 srcpkgs/sagemath/patches/get_patches          |  5 --
 srcpkgs/sagemath/template                     |  4 +-
 5 files changed, 2 insertions(+), 122 deletions(-)
 delete mode 100644 srcpkgs/sagemath/patches/37894-fix_build_deps.patch
 delete mode 100644 srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
 delete mode 100644 srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch

diff --git a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch b/srcpkgs/sagemath/patches/37894-fix_build_deps.patch
deleted file mode 100644
index 2ebdec289ebc57..00000000000000
--- a/srcpkgs/sagemath/patches/37894-fix_build_deps.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/src/pyproject.toml b/src/pyproject.toml
-index 781af00a8d7..f70304534d9 100644
---- a/src/pyproject.toml
-+++ b/src/pyproject.toml
-@@ -11,12 +11,9 @@ requires = [
-     # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748
-     'cython >=3.0, != 3.0.3, <4.0',
-     'gmpy2 ~=2.1.b999',
--    'jupyter_core >=4.6.3',
-     'memory_allocator',
-     'numpy >=1.19',
-     'pkgconfig',
--    # pplpy 0.8.4 and earlier do not declare dependencies correctly (see https://github.com/sagemath/sage/issues/30922)
--    'pplpy >=0.8.6',
- ]
- build-backend = "setuptools.build_meta"
- 
diff --git a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
deleted file mode 100644
index 5bf9212b0fd865..00000000000000
--- a/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/sage/databases/conway.py b/src/sage/databases/conway.py
-index b1f76292ce8..54912a2471c 100644
---- a/src/sage/databases/conway.py
-+++ b/src/sage/databases/conway.py
-@@ -138,11 +138,16 @@ def __len__(self):
-         """
-         Return the number of polynomials in this database.
- 
--        TESTS::
-+        TESTS:
-+
-+        The database currently contains `35357` polynomials, but due to
-+        :issue:`35357` it will be extended by Conway polynomials of
-+        degrees `1`, `2` and `3` for primes between `65537` and `110000`,
-+        thus leading to a new total of `47090` entries::
- 
-             sage: c = ConwayPolynomials()
--            sage: len(c)
--            35357
-+            sage: len(c) in [35357, 47090]
-+            True
-         """
-         try:
-             return self._len
diff --git a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch
deleted file mode 100644
index 5220db9f572a38..00000000000000
--- a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py
-index 9889808b35d..99e3e8c81fa 100644
---- a/src/sage/schemes/elliptic_curves/ell_point.py
-+++ b/src/sage/schemes/elliptic_curves/ell_point.py
-@@ -1818,6 +1818,17 @@ def weil_pairing(self, Q, n, algorithm=None):
-             sage: z.multiplicative_order()
-             360
- 
-+        Another larger example::
-+
-+            sage: F = GF(65537^2, modulus=[3,-1,1], name='a')
-+            sage: F.inject_variables()
-+            Defining a
-+            sage: E = EllipticCurve(F, [0,1])
-+            sage: P = E(22, 28891)
-+            sage: Q = E(-93, 2728*a + 64173)
-+            sage: P.weil_pairing(Q, 7282, algorithm='sage')
-+            53278*a + 36700
-+
-         An example over a number field::
- 
-             sage: # needs sage.rings.number_field
-@@ -1833,16 +1844,20 @@ def weil_pairing(self, Q, n, algorithm=None):
- 
-         TESTS:
- 
--        Check that the original Sage implementation still works::
-+        Check that the original Sage implementation still works and
-+        that the result coincides with the PARI implementation::
- 
-             sage: # needs sage.rings.finite_rings
-             sage: GF(65537^2).inject_variables()
-             Defining z2
-             sage: E = EllipticCurve(GF(65537^2), [0,1])
--            sage: P = E(22, 28891)
--            sage: Q = E(-93, 40438*z2 + 31573)
--            sage: P.weil_pairing(Q, 7282, algorithm='sage')
--            19937*z2 + 65384
-+            sage: R, S = E.torsion_basis(7282)
-+            sage: a, b = ZZ.random_element(), ZZ.random_element()
-+            sage: P = a*R + b*S
-+            sage: c, d = ZZ.random_element(), ZZ.random_element()
-+            sage: Q = c*R + d*S
-+            sage: P.weil_pairing(Q, 7282, algorithm='sage') == P.weil_pairing(Q, 7282, algorithm='pari')
-+            True
- 
-         Passing an unknown ``algorithm=`` argument should fail::
- 
-@@ -2047,19 +2062,19 @@ def tate_pairing(self, Q, n, k, q=None):
-             sage: Px.weil_pairing(Qx, 41)^e == num/den
-             True
- 
--        TESTS:
--
--        Check that the PARI output matches the original Sage implementation::
-+        An example over a large base field::
- 
--            sage: # needs sage.rings.finite_rings
--            sage: GF(65537^2).inject_variables()
-+            sage: F = GF(65537^2, modulus=[3,46810,1], name='z2')
-+            sage: F.inject_variables()
-             Defining z2
--            sage: E = EllipticCurve(GF(65537^2), [0,1])
-+            sage: E = EllipticCurve(F, [0,1])
-             sage: P = E(22, 28891)
-             sage: Q = E(-93, 40438*z2 + 31573)
-             sage: P.tate_pairing(Q, 7282, 2)
-             34585*z2 + 4063
- 
-+        TESTS:
-+
-         The point ``P (self)`` must have ``n`` torsion::
- 
-             sage: P.tate_pairing(Q, 163, 2)
diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches
index 3f1f98807149d2..6772f5d02a5ef1 100755
--- a/srcpkgs/sagemath/patches/get_patches
+++ b/srcpkgs/sagemath/patches/get_patches
@@ -27,11 +27,6 @@ get_pr() {
 # run from patches dir
 cd $(dirname "$0")
 
-# merged in 10.4.beta6
-get_pr 37894 "fix build deps"
-get_pr 37949 "conway-polynomials 0.10 part 1"
-get_pr 37967 "conway-polynomials 0.10 part 2"
-
 # needs review
 get_pr 37645 "fix doctest"
 get_pr 37884 "gap 4.13"
diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template
index 6ccbcd91226625..c55dda4b715399 100644
--- a/srcpkgs/sagemath/template
+++ b/srcpkgs/sagemath/template
@@ -1,6 +1,6 @@
 # Template file for 'sagemath'
 pkgname=sagemath
-version=10.4.beta5
+version=10.4.beta6
 revision=1
 build_style=python3-pep517
 hostmakedepends="pkg-config python3-Cython python3-Jinja2
@@ -30,7 +30,7 @@ license="GPL-2.0-or-later"
 homepage="https://www.sagemath.org/"
 changelog="https://github.com/sagemath/sage/releases"
 distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${version/.beta/b}.tar.gz"
-checksum=ff397ad303a83a59668ce185968e237aca46846c1db3fa5b9263d5b257dfd389
+checksum=0ee1ec9f0b7473c925d78027fda8b4273fac258fd92549f6a5776a2425706f31
 nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima"
 
 # main repo `.../src/sage/`  is `.../sage/` here

  parent reply	other threads:[~2024-05-13  1:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27 16:10 [PR PATCH] [BETA] sagemath: update to 10.4.beta0 tornaria
2024-03-29 19:11 ` [PR PATCH] [Updated] " tornaria
2024-04-02 21:26 ` tornaria
2024-04-27 19:12 ` [PR PATCH] [Updated] [BETA] sagemath: update to 10.4.beta1 tornaria
2024-04-29  0:27 ` tornaria
2024-05-03  3:30 ` [PR PATCH] [Updated] [BETA] sagemath: update to 10.4.b4 tornaria
2024-05-03  3:30 ` tornaria
2024-05-13  1:00 ` tornaria [this message]
2024-05-13  1:05 ` [BETA] sagemath: update to 10.4.beta6 tornaria
2024-05-13 22:57 ` [PR PATCH] [Updated] " tornaria

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240513010051.3735521DA6@inbox.vuxu.org \
    --to=tornaria@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).