From d559394753b1141c04d528abe4c9caaf447764e6 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Mon, 17 Jul 2023 13:18:36 -0400 Subject: [PATCH 01/31] python3-Cython: update to 3.0.2. --- srcpkgs/python3-Cython/template | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/srcpkgs/python3-Cython/template b/srcpkgs/python3-Cython/template index 2daf981d349b4..59b34a747da5b 100644 --- a/srcpkgs/python3-Cython/template +++ b/srcpkgs/python3-Cython/template @@ -1,25 +1,26 @@ # Template file for 'python3-Cython' pkgname=python3-Cython -version=0.29.36 +version=3.0.2 revision=1 build_style=python3-module hostmakedepends="python3-setuptools" makedepends="python3-devel" depends="python3-setuptools" -short_desc="C-Extensions for Python3" +short_desc="Python to C compiler" maintainer="Andrew J. Hesford " license="Apache-2.0" homepage="https://cython.org/" changelog="https://raw.githubusercontent.com/cython/cython/master/CHANGES.rst" distfiles="${PYPI_SITE}/C/Cython/Cython-${version}.tar.gz" -checksum=41c0cfd2d754e383c9eeb95effc9aa4ab847d0c9747077ddd7c0dcb68c3bc01f +checksum=9594818dca8bb22ae6580c5222da2bc5cc32334350bd2d294a00d8669bcc61b5 # Tests are flaky make_check=no alternatives=" cython:cygdb:/usr/bin/cygdb3 cython:cython:/usr/bin/cython3 - cython:cythonize:/usr/bin/cythonize3" + cython:cythonize:/usr/bin/cythonize3 +" post_install() { mv ${DESTDIR}/usr/bin/cygdb{,3} From f336dd2fab49fb48a63330652dac4320a931fac4 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:17:50 -0400 Subject: [PATCH 02/31] New package: python3-Cython0.29-0.29.36 --- srcpkgs/python3-Cython0.29/template | 31 +++++++++++++++++++++++++++++ srcpkgs/python3-Cython0.29/update | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 srcpkgs/python3-Cython0.29/template create mode 100644 srcpkgs/python3-Cython0.29/update diff --git a/srcpkgs/python3-Cython0.29/template b/srcpkgs/python3-Cython0.29/template new file mode 100644 index 0000000000000..61b0a69041e15 --- /dev/null +++ b/srcpkgs/python3-Cython0.29/template @@ -0,0 +1,31 @@ +# Template file for 'python3-Cython0.29' +pkgname=python3-Cython0.29 +version=0.29.36 +revision=1 +build_style=python3-module +hostmakedepends="python3-setuptools" +makedepends="python3-devel" +depends="python3-setuptools" +short_desc="Python to C compiler (legacy version)" +maintainer="Andrew J. Hesford " +license="Apache-2.0" +homepage="https://cython.org/" +changelog="https://raw.githubusercontent.com/cython/cython/master/CHANGES.rst" +distfiles="${PYPI_SITE}/C/Cython/Cython-${version}.tar.gz" +checksum=41c0cfd2d754e383c9eeb95effc9aa4ab847d0c9747077ddd7c0dcb68c3bc01f +# Test are flaky +make_check=no + +conflicts="python3-Cython>=0" + +alternatives=" + cython:cygdb:/usr/bin/cygdb3 + cython:cython:/usr/bin/cython3 + cython:cythonize:/usr/bin/cythonize3 +" + +post_install() { + mv ${DESTDIR}/usr/bin/cygdb{,3} + mv ${DESTDIR}/usr/bin/cython{,3} + mv ${DESTDIR}/usr/bin/cythonize{,3} +} diff --git a/srcpkgs/python3-Cython0.29/update b/srcpkgs/python3-Cython0.29/update new file mode 100644 index 0000000000000..7fbe21105b46e --- /dev/null +++ b/srcpkgs/python3-Cython0.29/update @@ -0,0 +1,3 @@ +pkgname=Cython +pattern="Cython-\K0\.[\d\.]+(?=.tar.gz)" +ignore="*[A-Za-z]*" From 831a643b11d5e4ae23a64609930d8ff599e35ed4 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Mon, 17 Jul 2023 16:11:36 -0400 Subject: [PATCH 03/31] python3-yaml: patch and rebuild for Cython 3 --- srcpkgs/python3-yaml/patches/cython3.patch | 11 +++++++++++ srcpkgs/python3-yaml/template | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-yaml/patches/cython3.patch diff --git a/srcpkgs/python3-yaml/patches/cython3.patch b/srcpkgs/python3-yaml/patches/cython3.patch new file mode 100644 index 0000000000000..601e79891aac3 --- /dev/null +++ b/srcpkgs/python3-yaml/patches/cython3.patch @@ -0,0 +1,11 @@ +--- a/setup.py ++++ b/setup.py +@@ -81,7 +81,7 @@ + with_cython = True + try: + from Cython.Distutils.extension import Extension as _Extension +- from Cython.Distutils import build_ext as _build_ext ++ from Cython.Distutils.old_build_ext import old_build_ext as _build_ext + with_cython = True + except ImportError: + if with_cython: diff --git a/srcpkgs/python3-yaml/template b/srcpkgs/python3-yaml/template index f281f217fa403..ab7417caf44c9 100644 --- a/srcpkgs/python3-yaml/template +++ b/srcpkgs/python3-yaml/template @@ -1,7 +1,7 @@ # Template file for 'python3-yaml' pkgname=python3-yaml version=6.0 -revision=2 +revision=3 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython" makedepends="libyaml-devel python3-devel" From 4a18c3011e1de0f9df96a0a1dea4f390e2402e5d Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Tue, 18 Jul 2023 09:40:26 -0400 Subject: [PATCH 04/31] python3-scikit-learn: update to 1.3.0. --- .../patches/numpy-version.patch | 11 +++++++++++ srcpkgs/python3-scikit-learn/template | 14 ++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 srcpkgs/python3-scikit-learn/patches/numpy-version.patch diff --git a/srcpkgs/python3-scikit-learn/patches/numpy-version.patch b/srcpkgs/python3-scikit-learn/patches/numpy-version.patch new file mode 100644 index 0000000000000..0ffb53e3433e9 --- /dev/null +++ b/srcpkgs/python3-scikit-learn/patches/numpy-version.patch @@ -0,0 +1,11 @@ +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -9,7 +9,7 @@ + # wheels on PyPI + # + # see: https://github.com/scipy/oldest-supported-numpy/blob/main/setup.cfg +- "oldest-supported-numpy; python_version!='3.10' or platform_system!='Windows' or platform_python_implementation=='PyPy'", ++ "numpy>=1.23.2; python_version!='3.10' or platform_system!='Windows' or platform_python_implementation=='PyPy'", + # For CPython 3.10 under Windows, SciPy requires NumPy 1.22.3 while the + # oldest supported NumPy is defined as 1.21.6. We therefore need to force + # it for this specific configuration. For details, see diff --git a/srcpkgs/python3-scikit-learn/template b/srcpkgs/python3-scikit-learn/template index 9fc96efd4ab17..aed65406cad2b 100644 --- a/srcpkgs/python3-scikit-learn/template +++ b/srcpkgs/python3-scikit-learn/template @@ -1,17 +1,19 @@ # Template file for 'python3-scikit-learn' pkgname=python3-scikit-learn -version=0.24.2 -revision=3 -build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython python3-numpy python3-scipy" -makedepends="python3-devel" +version=1.3.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-Cython python3-numpy python3-scipy + python3-wheel" +makedepends="python3-devel libgomp-devel" depends="python3-numpy python3-scipy python3-joblib python3-threadpoolctl" short_desc="Python3 modules for machine learning and data mining" maintainer="Orphaned " license="BSD-3-Clause" homepage="https://scikit-learn.org/" distfiles="https://github.com/scikit-learn/scikit-learn/archive/${version}.tar.gz" -checksum=642fb016bfe4bb7539ba6bf4e6dd5a95d2d25638387040b0f5eefdb84a840297 +checksum=ead129f466a0859555ce4f41280ae06623ef3255efff0b1692c57f15e39767b5 +make_check=no # tests don't work properly unless package is installed export SKLEARN_BUILD_PARALLEL="${XBPS_MAKEJOBS}" From 93e1ae91f4c3abd66711dc335ca5d7ec575f294b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 19 Jul 2023 10:36:33 -0300 Subject: [PATCH 05/31] python3-cysignals: patch and rebuild for Cython 3 --- .../patches/cython3-fix-warning.patch | 13 ++++++++ .../patches/cython3-legacy.patch | 30 +++++++++++++++++++ srcpkgs/python3-cysignals/template | 2 +- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-cysignals/patches/cython3-fix-warning.patch create mode 100644 srcpkgs/python3-cysignals/patches/cython3-legacy.patch diff --git a/srcpkgs/python3-cysignals/patches/cython3-fix-warning.patch b/srcpkgs/python3-cysignals/patches/cython3-fix-warning.patch new file mode 100644 index 0000000000000..98cad9625e402 --- /dev/null +++ b/srcpkgs/python3-cysignals/patches/cython3-fix-warning.patch @@ -0,0 +1,13 @@ +diff --git a/src/cysignals/signals.pxd.in b/src/cysignals/signals.pxd.in +index c86e085..a98c8d1 100644 +--- a/src/cysignals/signals.pxd.in ++++ b/src/cysignals/signals.pxd.in +@@ -54,7 +54,7 @@ cdef extern from "macros.h" nogil: + # can be used to make Cython check whether there is a pending exception + # (PyErr_Occurred() is non-NULL). To Cython, it will look like + # cython_check_exception() actually raised the exception. +-cdef inline void cython_check_exception() nogil except *: ++cdef inline void cython_check_exception() except * nogil: + pass + + diff --git a/srcpkgs/python3-cysignals/patches/cython3-legacy.patch b/srcpkgs/python3-cysignals/patches/cython3-legacy.patch new file mode 100644 index 0000000000000..274575d5d3539 --- /dev/null +++ b/srcpkgs/python3-cysignals/patches/cython3-legacy.patch @@ -0,0 +1,30 @@ +commit 9996a4028ddc7f9a5ffda3df65d5b7d3b7df8aa5 +Author: Gonzalo Tornaría +Date: Wed Jul 19 18:34:57 2023 -0300 + + cython3 support using legacy directives + +diff --git a/setup.py b/setup.py +index 37acdfc..f68270b 100755 +--- a/setup.py ++++ b/setup.py +@@ -157,13 +157,17 @@ class build_ext(_build_ext): + # Run Cython with -Werror on continuous integration services + # with Python 3.6 or later + from Cython.Compiler import Options +- Options.warning_errors = True ++ Options.warning_errors = False + + from Cython.Build.Dependencies import cythonize + return cythonize(extensions, + build_dir=cythonize_dir, + include_path=["src", os.path.join(cythonize_dir, "src")], +- compiler_directives=dict(binding=True, language_level=2)) ++ compiler_directives=dict( ++ binding=True, ++ language_level=2, ++ legacy_implicit_noexcept=True, ++ )) + + + class build_py(_build_py): diff --git a/srcpkgs/python3-cysignals/template b/srcpkgs/python3-cysignals/template index bd9563353ba07..739cbc91a96b0 100644 --- a/srcpkgs/python3-cysignals/template +++ b/srcpkgs/python3-cysignals/template @@ -1,7 +1,7 @@ # Template file for 'python3-cysignals' pkgname=python3-cysignals version=1.11.2 -revision=4 +revision=5 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython autoconf" makedepends="python3-devel pari-devel" From a347f00e73de44ef3076892de92354c377984532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 19 Jul 2023 20:13:30 -0300 Subject: [PATCH 06/31] python3-cypari2: patch and rebuild for Cython 3 --- .../patches/cython3-legacy.patch | 32 +++++++++++++++++++ srcpkgs/python3-cypari2/template | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-cypari2/patches/cython3-legacy.patch diff --git a/srcpkgs/python3-cypari2/patches/cython3-legacy.patch b/srcpkgs/python3-cypari2/patches/cython3-legacy.patch new file mode 100644 index 0000000000000..41392fe80d736 --- /dev/null +++ b/srcpkgs/python3-cypari2/patches/cython3-legacy.patch @@ -0,0 +1,32 @@ +commit 8ef356a4eb936c37f55a5c501f3a955e6740c0c5 +Author: Gonzalo Tornaría +Date: Wed Jul 19 19:45:23 2023 -0300 + + cython3 support using legacy directives + +diff --git a/cypari2/gen.pyx b/cypari2/gen.pyx +index 247b1ad..75050a0 100644 +--- a/cypari2/gen.pyx ++++ b/cypari2/gen.pyx +@@ -329,7 +329,7 @@ cdef class Gen(Gen_base): + >>> pari = Pari() + >>> L = pari("vector(10,i,i^2)") + >>> L.__iter__() +- ++ <...generator object at ...> + >>> [x for x in L] + [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] + >>> list(L) +diff --git a/setup.py b/setup.py +index 2188711..455337f 100755 +--- a/setup.py ++++ b/setup.py +@@ -36,6 +36,8 @@ class build_ext(_build_ext): + "binding": True, + "cdivision": True, + "language_level": 2, ++ "legacy_implicit_noexcept": True, ++ "c_api_binop_methods": True, + } + + _build_ext.finalize_options(self) diff --git a/srcpkgs/python3-cypari2/template b/srcpkgs/python3-cypari2/template index 8ac4dd3a56247..8d46c443e960c 100644 --- a/srcpkgs/python3-cypari2/template +++ b/srcpkgs/python3-cypari2/template @@ -1,7 +1,7 @@ # Template file for 'python3-cypari2' pkgname=python3-cypari2 version=2.1.3 -revision=3 +revision=4 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython pari perl" makedepends="python3-devel python3-cysignals pari-devel gmp-devel" From 3f51dc32a9ac1e6fa5687f4226bb59fa06add43f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 19 Jul 2023 20:40:19 -0300 Subject: [PATCH 07/31] python3-fpylll: patch and rebuild for Cython 3 --- .../patches/cython3-legacy.patch | 37 +++++++++++++++++++ srcpkgs/python3-fpylll/template | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-fpylll/patches/cython3-legacy.patch diff --git a/srcpkgs/python3-fpylll/patches/cython3-legacy.patch b/srcpkgs/python3-fpylll/patches/cython3-legacy.patch new file mode 100644 index 0000000000000..808c14e9c1b47 --- /dev/null +++ b/srcpkgs/python3-fpylll/patches/cython3-legacy.patch @@ -0,0 +1,37 @@ +commit b6e12c2b0648e84b26dcf0aac507a5b4d9dde301 +Author: Gonzalo Tornaría +Date: Wed Jul 19 20:38:01 2023 -0300 + + cython3 support using legacy directives + +diff --git a/setup.py b/setup.py +index 274836f..8fc5af5 100755 +--- a/setup.py ++++ b/setup.py +@@ -123,7 +123,12 @@ class build_ext(_build_ext, object): + self.extensions, + include_path=["src"], + build_dir=self.cythonize_dir, +- compiler_directives={"binding": True, "embedsignature": True, "language_level": 2}, ++ compiler_directives={ ++ "binding": True, ++ "embedsignature": True, ++ "language_level": 2, ++ "legacy_implicit_noexcept": True, ++ }, + ) + super(build_ext, self).run() + +diff --git a/src/fpylll/fplll/enumeration_callback_helper.h b/src/fpylll/fplll/enumeration_callback_helper.h +index c099430..706162f 100644 +--- a/src/fpylll/fplll/enumeration_callback_helper.h ++++ b/src/fpylll/fplll/enumeration_callback_helper.h +@@ -5,7 +5,7 @@ + #include + #include + +-extern "C" { ++extern "C++" { + bool evaluator_callback_call_obj(PyObject *obj, int n, double *new_sol_coord); + } + diff --git a/srcpkgs/python3-fpylll/template b/srcpkgs/python3-fpylll/template index e4fd9584c795d..8880d5fa6173c 100644 --- a/srcpkgs/python3-fpylll/template +++ b/srcpkgs/python3-fpylll/template @@ -1,7 +1,7 @@ # Template file for 'python3-fpylll' pkgname=python3-fpylll version=0.5.9 -revision=1 +revision=2 build_style=python3-module hostmakedepends="python3-Cython" makedepends="python3-cysignals python3-devel gmp-devel mpfr-devel fplll-devel From bf696fd2b9e545882602f66d6f132995fe4df738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 19 Jul 2023 21:04:33 -0300 Subject: [PATCH 08/31] python3-pplpy: patch and rebuild for Cython 3 --- ...8537fa7ea061ebb8d5131b1e23673eaf741d.patch | 22 ++++++++++++++++++ .../patches/cython3-legacy.patch | 23 +++++++++++++++++++ srcpkgs/python3-pplpy/template | 2 +- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-pplpy/patches/aaa28537fa7ea061ebb8d5131b1e23673eaf741d.patch create mode 100644 srcpkgs/python3-pplpy/patches/cython3-legacy.patch diff --git a/srcpkgs/python3-pplpy/patches/aaa28537fa7ea061ebb8d5131b1e23673eaf741d.patch b/srcpkgs/python3-pplpy/patches/aaa28537fa7ea061ebb8d5131b1e23673eaf741d.patch new file mode 100644 index 0000000000000..21bc2a5214df4 --- /dev/null +++ b/srcpkgs/python3-pplpy/patches/aaa28537fa7ea061ebb8d5131b1e23673eaf741d.patch @@ -0,0 +1,22 @@ +From aaa28537fa7ea061ebb8d5131b1e23673eaf741d Mon Sep 17 00:00:00 2001 +From: Matthias Koeppe +Date: Sun, 31 Jul 2022 12:39:34 -0700 +Subject: [PATCH] ppl/bit_arrays.pxd: Use relative cimport + +--- + ppl/bit_arrays.pxd | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ppl/bit_arrays.pxd b/ppl/bit_arrays.pxd +index eb57434..145a978 100644 +--- a/ppl/bit_arrays.pxd ++++ b/ppl/bit_arrays.pxd +@@ -1,4 +1,4 @@ +-from ppl_decl cimport * ++from .ppl_decl cimport * + + cdef class Bit_Row(object): + cdef PPL_Bit_Row *thisptr +-- +GitLab + diff --git a/srcpkgs/python3-pplpy/patches/cython3-legacy.patch b/srcpkgs/python3-pplpy/patches/cython3-legacy.patch new file mode 100644 index 0000000000000..e00b99f8c5f2e --- /dev/null +++ b/srcpkgs/python3-pplpy/patches/cython3-legacy.patch @@ -0,0 +1,23 @@ +commit e6f3e66154138ce3e31e803e74b8c71787c70acc +Author: Gonzalo Tornaría +Date: Wed Jul 19 20:47:52 2023 -0300 + + cython3 support using legacy directives + +diff --git a/setup.py b/setup.py +index 13d543b..55dcd34 100755 +--- a/setup.py ++++ b/setup.py +@@ -38,7 +38,11 @@ class build_ext(_build_ext): + self.extensions[:] = cythonize( + self.extensions, + include_path=sys.path, +- compiler_directives={'embedsignature': True}) ++ compiler_directives={ ++ 'embedsignature': True, ++ 'legacy_implicit_noexcept': True, ++ 'c_api_binop_methods': True, ++ }) + + _build_ext.run(self) + diff --git a/srcpkgs/python3-pplpy/template b/srcpkgs/python3-pplpy/template index 67139ff96031f..6023c63f87982 100644 --- a/srcpkgs/python3-pplpy/template +++ b/srcpkgs/python3-pplpy/template @@ -1,7 +1,7 @@ # Template file for 'python3-pplpy' pkgname=python3-pplpy version=0.8.7 -revision=3 +revision=4 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython" makedepends="python3-cysignals python3-gmpy2 python3-devel gmp-devel From 52d6583d901f05bd3113f45ebe7313d46d8d0eaa Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 15:57:12 -0400 Subject: [PATCH 09/31] python3-lxml: patch and rebuild for Cython 3 --- .../patches/cython3-fix-test.patch | 32 +++++++++++++++++++ .../python3-lxml/patches/cython3-legacy.patch | 12 +++++++ ...-prefix-nsmap.diff => libxml-2.10.4.patch} | 12 ++++--- ...fix-tests-io.patch => libxml-2.11.0.patch} | 3 +- srcpkgs/python3-lxml/template | 2 +- 5 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 srcpkgs/python3-lxml/patches/cython3-fix-test.patch create mode 100644 srcpkgs/python3-lxml/patches/cython3-legacy.patch rename srcpkgs/python3-lxml/patches/{fix-test-html-prefix-nsmap.diff => libxml-2.10.4.patch} (56%) rename srcpkgs/python3-lxml/patches/{fix-tests-io.patch => libxml-2.11.0.patch} (83%) diff --git a/srcpkgs/python3-lxml/patches/cython3-fix-test.patch b/srcpkgs/python3-lxml/patches/cython3-fix-test.patch new file mode 100644 index 0000000000000..70348622048cb --- /dev/null +++ b/srcpkgs/python3-lxml/patches/cython3-fix-test.patch @@ -0,0 +1,32 @@ +diff --git a/src/lxml/tests/test_errors.py b/src/lxml/tests/test_errors.py +index c0aee744..4875f298 100644 +--- a/src/lxml/tests/test_errors.py ++++ b/src/lxml/tests/test_errors.py +@@ -28,7 +28,6 @@ class ErrorTestCase(HelperTestCase): + def test_element_cyclic_gc_none(self): + # test if cyclic reference can crash etree + Element = self.etree.Element +- getrefcount = sys.getrefcount + + # must disable tracing as it could change the refcounts + trace_func = sys.gettrace() +@@ -36,16 +35,16 @@ class ErrorTestCase(HelperTestCase): + sys.settrace(None) + gc.collect() + +- count = getrefcount(None) ++ count1 = gc.get_count() + + l = [Element('name'), Element('name')] + l.append(l) + + del l + gc.collect() +- count = getrefcount(None) - count ++ count2 = gc.get_count() + +- self.assertEqual(count, 0) ++ self.assertEqual(count1, count2) + finally: + sys.settrace(trace_func) + diff --git a/srcpkgs/python3-lxml/patches/cython3-legacy.patch b/srcpkgs/python3-lxml/patches/cython3-legacy.patch new file mode 100644 index 0000000000000..3a01c85705cb5 --- /dev/null +++ b/srcpkgs/python3-lxml/patches/cython3-legacy.patch @@ -0,0 +1,12 @@ +diff --git a/setupinfo.py b/setupinfo.py +index 5feb13bf..ea1b391c 100644 +--- a/setupinfo.py ++++ b/setupinfo.py +@@ -148,6 +148,7 @@ def ext_modules(static_include_dirs, static_library_dirs, + + cythonize_directives = { + 'binding': True, ++ 'legacy_implicit_noexcept': True, + } + if OPTION_WITH_COVERAGE: + cythonize_directives['linetrace'] = True diff --git a/srcpkgs/python3-lxml/patches/fix-test-html-prefix-nsmap.diff b/srcpkgs/python3-lxml/patches/libxml-2.10.4.patch similarity index 56% rename from srcpkgs/python3-lxml/patches/fix-test-html-prefix-nsmap.diff rename to srcpkgs/python3-lxml/patches/libxml-2.10.4.patch index 084769b69aeb9..4682eddd6f541 100644 --- a/srcpkgs/python3-lxml/patches/fix-test-html-prefix-nsmap.diff +++ b/srcpkgs/python3-lxml/patches/libxml-2.10.4.patch @@ -1,13 +1,17 @@ +From alpine: https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/main/py3-lxml + +the find above returns None with this version +-- diff --git a/src/lxml/tests/test_etree.py b/src/lxml/tests/test_etree.py -index 0339796d..de584c56 100644 +index 0339796..790c57a 100644 --- a/src/lxml/tests/test_etree.py +++ b/src/lxml/tests/test_etree.py -@@ -3072,8 +3072,6 @@ class ETreeOnlyTestCase(HelperTestCase): - el = etree.HTML('aa').find('.//page-description') +@@ -3073,7 +3073,7 @@ class ETreeOnlyTestCase(HelperTestCase): if etree.LIBXML_VERSION < (2, 9, 11): self.assertEqual({'hha': None}, el.nsmap) -- else: + else: - self.assertEqual({}, el.nsmap) ++ self.assertEqual(None, el) def test_getchildren(self): Element = self.etree.Element diff --git a/srcpkgs/python3-lxml/patches/fix-tests-io.patch b/srcpkgs/python3-lxml/patches/libxml-2.11.0.patch similarity index 83% rename from srcpkgs/python3-lxml/patches/fix-tests-io.patch rename to srcpkgs/python3-lxml/patches/libxml-2.11.0.patch index 9a3001d4e9265..6ed59d3b2fe2b 100644 --- a/srcpkgs/python3-lxml/patches/fix-tests-io.patch +++ b/srcpkgs/python3-lxml/patches/libxml-2.11.0.patch @@ -1,3 +1,5 @@ +From alpine: https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/main/py3-lxml + diff --git a/src/lxml/tests/test_io.py b/src/lxml/tests/test_io.py index cbdbcef..efbd3fd 100644 --- a/src/lxml/tests/test_io.py @@ -10,4 +12,3 @@ index cbdbcef..efbd3fd 100644 f = tempfile.NamedTemporaryFile(delete=False) try: - diff --git a/srcpkgs/python3-lxml/template b/srcpkgs/python3-lxml/template index 8251b74c7b53f..76756b84ded1f 100644 --- a/srcpkgs/python3-lxml/template +++ b/srcpkgs/python3-lxml/template @@ -1,7 +1,7 @@ # Template file for 'python3-lxml' pkgname=python3-lxml version=4.9.3 -revision=1 +revision=2 build_style=python3-module make_build_args="--with-cython" hostmakedepends="python3-Cython python3-setuptools" From 523c92fba3ec1d27b1d0a51e35a5b54a1a5ff6a4 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Fri, 21 Jul 2023 08:33:05 -0400 Subject: [PATCH 10/31] python3-pandas-msgpack: rebuild for Cython 3 --- srcpkgs/python3-pandas-msgpack/template | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-pandas-msgpack/template b/srcpkgs/python3-pandas-msgpack/template index 16a4d014ea6b6..99912a195b0f4 100644 --- a/srcpkgs/python3-pandas-msgpack/template +++ b/srcpkgs/python3-pandas-msgpack/template @@ -1,17 +1,18 @@ # Template file for 'python3-pandas-msgpack' pkgname=python3-pandas-msgpack version=0.1.5 -revision=4 +revision=5 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython" makedepends="python3-devel" -depends="python3-pandas>=0.25.3" +depends="python3-pandas" short_desc="Providing an interface to msgpack from pandas" maintainer="Pulux " license="BSD-3-Clause" homepage="https://www.pf4sh.eu/git/pulux/pandas-msgpack/" distfiles="https://www.pf4sh.eu/git/pulux/pandas-msgpack/archive/${version}.tar.gz" -checksum=e01b1158c66265315338657310ac42edac81b33a5b178a68b29adcf2aeefd22e +checksum=25288bc498cc0f9579c227cf33e20fc41d6d47ef58cc9fde27ede9796a647822 +make_check=no # Tests rely on obsolete pandas features post_install() { vlicense LICENSE.md From 5dc14b9c21bded3ac07ed2461391134db58123be Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:52 -0400 Subject: [PATCH 11/31] gbinder-python: build with python3-Cython0.29 --- srcpkgs/gbinder-python/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/gbinder-python/template b/srcpkgs/gbinder-python/template index 61f60323adb16..8fcbba86d38c2 100644 --- a/srcpkgs/gbinder-python/template +++ b/srcpkgs/gbinder-python/template @@ -4,7 +4,7 @@ version=1.1.1 revision=2 build_style=python3-module make_build_args="--cython" -hostmakedepends="python3-Cython pkg-config" +hostmakedepends="python3-Cython0.29 pkg-config" makedepends="libgbinder-devel python3-devel" depends="python3" short_desc="Python bindings for libgbinder" From 77a306a6b23e567263b2fcf112bd68acc61f1730 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:52 -0400 Subject: [PATCH 12/31] jack_mixer: build with python3-Cython0.29 --- srcpkgs/jack_mixer/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/jack_mixer/template b/srcpkgs/jack_mixer/template index b012cd8dfac39..79044eef65b5e 100644 --- a/srcpkgs/jack_mixer/template +++ b/srcpkgs/jack_mixer/template @@ -4,7 +4,7 @@ version=17 revision=2 build_style=meson configure_args="-Dcheck-py-modules=false" -hostmakedepends="gettext pkg-config python3-Cython" +hostmakedepends="gettext pkg-config python3-Cython0.29" makedepends="glib-devel jack-devel python3-devel" depends="python3-cairo python3-gobject python3-xdg" short_desc="GTK JACK audio mixer with a look similar to its hardware counterpart" From 6f7ad31e2714ab0f8eb332a4be147b158db39935 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:52 -0400 Subject: [PATCH 13/31] libimobiledevice: build with python3-Cython0.29 --- srcpkgs/libimobiledevice/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/libimobiledevice/template b/srcpkgs/libimobiledevice/template index 4415908a80cd5..be776d71f3e12 100644 --- a/srcpkgs/libimobiledevice/template +++ b/srcpkgs/libimobiledevice/template @@ -3,7 +3,7 @@ pkgname=libimobiledevice version=1.3.0 revision=5 build_style=gnu-configure -hostmakedepends="automake libtool pkgconf python3-Cython" +hostmakedepends="automake libtool pkgconf python3-Cython0.29" makedepends="python3-devel libglib-devel openssl-devel libusb-devel libplist-devel libusbmuxd-devel" short_desc="Library to communicate with Apple devices" From e004ba2fd76e07fd511a05d8bfdb1b5c95d15cd3 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 14/31] pyliblo: build with python3-Cython0.29 --- srcpkgs/pyliblo/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/pyliblo/template b/srcpkgs/pyliblo/template index 9577e72555e4e..805e103ed018a 100644 --- a/srcpkgs/pyliblo/template +++ b/srcpkgs/pyliblo/template @@ -3,7 +3,7 @@ pkgname=pyliblo version=0.10.0 revision=3 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython" +hostmakedepends="python3-setuptools python3-Cython0.29" makedepends="python3-devel liblo-devel" depends="python3" short_desc="Python bindings for the liblo OSC library" From 43993b5542577d1b01a6180b9e5ebdb9c087f97c Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 15/31] python3-efl: build with python3-Cython0.29 --- srcpkgs/python3-efl/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-efl/template b/srcpkgs/python3-efl/template index 2431dac9619cc..861eb51e4a9cb 100644 --- a/srcpkgs/python3-efl/template +++ b/srcpkgs/python3-efl/template @@ -3,7 +3,7 @@ pkgname=python3-efl version=1.23.0 revision=6 build_style=python3-module -hostmakedepends="pkg-config python3-devel python3-Cython" +hostmakedepends="pkg-config python3-devel python3-Cython0.29" makedepends="efl-devel python3-dbus-devel" depends="python3-dbus" short_desc="Python3 bindings for Enlightenment Foundation Libraries" From 7f21de672c9a591154d0e2c844642395aadf65df Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 16/31] python3-grpcio: build with python3-Cython0.29 --- srcpkgs/python3-grpcio/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-grpcio/template b/srcpkgs/python3-grpcio/template index 34522a28ead4e..87f388500f5bf 100644 --- a/srcpkgs/python3-grpcio/template +++ b/srcpkgs/python3-grpcio/template @@ -3,7 +3,7 @@ pkgname=python3-grpcio version=1.56.0 revision=3 build_style=python3-module -hostmakedepends="python3-setuptools python3-six python3-Cython" +hostmakedepends="python3-setuptools python3-six python3-Cython0.29" makedepends="python3-devel zlib-devel c-ares-devel re2-devel openssl-devel abseil-cpp-devel" depends="python3-six" From 13900b7c18a78bd53e76c026fa929fca92811e11 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 17/31] python3-h5py: build with python3-Cython0.29 --- srcpkgs/python3-h5py/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-h5py/template b/srcpkgs/python3-h5py/template index d491f5cc3aca2..59f2d7c9b2253 100644 --- a/srcpkgs/python3-h5py/template +++ b/srcpkgs/python3-h5py/template @@ -4,7 +4,7 @@ version=3.9.0 revision=1 build_style=python3-module build_helper="numpy" -hostmakedepends="python3-setuptools python3-Cython python3-pkgconfig" +hostmakedepends="python3-setuptools python3-Cython0.29 python3-pkgconfig" makedepends="python3-devel hdf5-devel" depends="python3-numpy" short_desc="HDF5 for Python" From 5007c25775ce92e6c472e3b10d0a30804815444f Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 18/31] python3-jq: build with python3-Cython0.29 --- srcpkgs/python3-jq/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-jq/template b/srcpkgs/python3-jq/template index 96a87c6f86031..70e3bee46f6fd 100644 --- a/srcpkgs/python3-jq/template +++ b/srcpkgs/python3-jq/template @@ -3,7 +3,7 @@ pkgname=python3-jq version=1.4.1 revision=1 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython" +hostmakedepends="python3-setuptools python3-Cython0.29" makedepends="python3-devel jq-devel oniguruma-devel" depends="python3" short_desc="Python bindings for jq" From c24b78cc5ee21dfca9d99339d1edb9fd80f0d46a Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 19/31] python3-logbook: build with python3-Cython0.29 --- srcpkgs/python3-logbook/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-logbook/template b/srcpkgs/python3-logbook/template index 319bb1e19ab53..4993e417dc079 100644 --- a/srcpkgs/python3-logbook/template +++ b/srcpkgs/python3-logbook/template @@ -4,7 +4,7 @@ version=1.5.3 revision=6 build_style=python3-pep517 make_check_args="--ignore=scripts" -hostmakedepends="python3-setuptools python3-wheel python3-devel python3-Cython" +hostmakedepends="python3-setuptools python3-wheel python3-devel python3-Cython0.29" depends="python3" checkdepends="python3-execnet python3-pytest python3-pyzmq python3-SQLAlchemy python3-Jinja2 python3-Brotli" From 1229d44843fb123c3008ed8a2402bd9490f8b749 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:53 -0400 Subject: [PATCH 20/31] python3-mpi4py: build with python3-Cython0.29 --- srcpkgs/python3-mpi4py/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-mpi4py/template b/srcpkgs/python3-mpi4py/template index 4daa548133d5b..e1762a93a3361 100644 --- a/srcpkgs/python3-mpi4py/template +++ b/srcpkgs/python3-mpi4py/template @@ -3,7 +3,7 @@ pkgname=python3-mpi4py version=3.1.4 revision=1 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython gcc-fortran openmpi" +hostmakedepends="python3-setuptools python3-Cython0.29 gcc-fortran openmpi" makedepends="python3-devel openmpi-devel" depends="openmpi python3" short_desc="Python bindings for the Message Passing Interface (MPI) standard" From c878909909fd0f75fc8690285e398ad1bace1c37 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 15:41:34 -0400 Subject: [PATCH 21/31] python3-pandas: build with python3-Cython0.29 --- srcpkgs/python3-pandas/template | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/srcpkgs/python3-pandas/template b/srcpkgs/python3-pandas/template index 2831b6e56f171..0f102b557072f 100644 --- a/srcpkgs/python3-pandas/template +++ b/srcpkgs/python3-pandas/template @@ -3,7 +3,8 @@ pkgname=python3-pandas version=2.0.3 revision=1 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython python3-numpy python3-versioneer" +hostmakedepends="python3-setuptools python3-Cython0.29 python3-numpy + python3-versioneer" makedepends="python3-devel python3-numpy python3-dateutil python3-pytz" depends="python3-numpy python3-dateutil python3-pytz" short_desc="Python3 data analysis library" From 32455f151d6d13ef26fc24e3a30b03ccebcec414 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 22/31] python3-peewee: build with python3-Cython0.29 --- srcpkgs/python3-peewee/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-peewee/template b/srcpkgs/python3-peewee/template index dc6c8573c1e50..d8e586f5e7d18 100644 --- a/srcpkgs/python3-peewee/template +++ b/srcpkgs/python3-peewee/template @@ -3,7 +3,7 @@ pkgname=python3-peewee version=3.14.4 revision=4 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython" +hostmakedepends="python3-setuptools python3-Cython0.29" makedepends="python3-devel sqlite-devel" depends="python3" short_desc="Small and simple ORM for Python3" From c0328bdc1916d00dc208a8fa67f76f09a38c67a0 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 23/31] python3-pyFFTW: build with python3-Cython0.29 --- srcpkgs/python3-pyFFTW/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-pyFFTW/template b/srcpkgs/python3-pyFFTW/template index 93d3d9079d694..055a53fe833b9 100644 --- a/srcpkgs/python3-pyFFTW/template +++ b/srcpkgs/python3-pyFFTW/template @@ -3,7 +3,7 @@ pkgname=python3-pyFFTW version=0.13.1 revision=1 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython python3-numpy" +hostmakedepends="python3-setuptools python3-Cython0.29 python3-numpy" makedepends="fftw-devel python3-devel" depends="python3-numpy" checkdepends="python3-pytest-xdist python3-scipy $depends" From 757ace7408681b0e4bb98d93a0719086d76fda01 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 24/31] python3-pygame: build with python3-Cython0.29 --- srcpkgs/python3-pygame/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-pygame/template b/srcpkgs/python3-pygame/template index 9edc626b0b81a..284268e85cab3 100644 --- a/srcpkgs/python3-pygame/template +++ b/srcpkgs/python3-pygame/template @@ -4,7 +4,7 @@ version=2.1.2 revision=4 build_style=python3-module make_build_args="cython" -hostmakedepends="pkg-config python3-setuptools python3-Cython +hostmakedepends="pkg-config python3-setuptools python3-Cython0.29 SDL2_mixer-devel SDL2_image-devel SDL2_ttf-devel libjpeg-turbo-devel portmidi-devel" makedepends="python3-devel SDL2_mixer-devel SDL2_image-devel SDL2_ttf-devel libjpeg-turbo-devel portmidi-devel" From b6accdc00e20b7b6088d639948c6f98a4eafabba Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 25/31] python3-shapely: build with python3-Cython0.29 --- srcpkgs/python3-shapely/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-shapely/template b/srcpkgs/python3-shapely/template index 02447337f9ae9..25711a7fc2399 100644 --- a/srcpkgs/python3-shapely/template +++ b/srcpkgs/python3-shapely/template @@ -4,7 +4,7 @@ version=2.0.1 revision=1 build_style=python3-module build_helper=numpy -hostmakedepends="python3-setuptools python3-Cython geos" +hostmakedepends="python3-setuptools python3-Cython0.29 geos" makedepends="python3-devel python3-numpy geos-devel" depends="python3" checkdepends="python3-pytest-xdist" From 182e6e98f1ff2f0fd8aa1a43ae9ebf8d07de630e Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 26/31] python3-tables: build with python3-Cython0.29 --- srcpkgs/python3-tables/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-tables/template b/srcpkgs/python3-tables/template index e37b3e215e3be..8be57ea0088d6 100644 --- a/srcpkgs/python3-tables/template +++ b/srcpkgs/python3-tables/template @@ -5,7 +5,7 @@ revision=2 build_style=python3-module build_helper=numpy # XXX: c-blosc (using internal for now) -hostmakedepends="python3-wheel python3-Cython python3-packaging" +hostmakedepends="python3-wheel python3-Cython0.29 python3-packaging" makedepends="python3-devel hdf5-devel lzo-devel bzip2-devel" depends="python3-numpy python3-numexpr python3-packaging" checkdepends=$depends From 2f22c58ee960b44b82628f56ae93f944add489bb Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 27/31] python3-uvloop: build with python3-Cython0.29 --- srcpkgs/python3-uvloop/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/python3-uvloop/template b/srcpkgs/python3-uvloop/template index 424cff0ebd116..1688adc416ac6 100644 --- a/srcpkgs/python3-uvloop/template +++ b/srcpkgs/python3-uvloop/template @@ -3,7 +3,7 @@ pkgname=python3-uvloop version=0.17.0 revision=2 build_style=python3-module -hostmakedepends="python3 python3-setuptools python3-Cython" +hostmakedepends="python3 python3-setuptools python3-Cython0.29" makedepends="libuv-devel python3-devel" depends="python3" checkdepends="flake8 python3-pytest python3-openssl python3-psutil" From 9d6bd03ae13d648d765c3b4aab82b07dea10ab18 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 28/31] urh: build with python3-Cython0.29 --- srcpkgs/urh/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/urh/template b/srcpkgs/urh/template index 045c82f6b3adb..1e2721e335922 100644 --- a/srcpkgs/urh/template +++ b/srcpkgs/urh/template @@ -1,12 +1,12 @@ # Template file for 'urh' pkgname=urh version=2.9.4 -revision=1 +revision=2 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython python3-numpy" +hostmakedepends="python3-setuptools python3-Cython0.29 python3-numpy" makedepends="python3-devel python3-PyQt5 libairspy-devel librtlsdr-devel libhackrf-devel uhd-devel libgomp-devel" -depends="python3-numpy python3-PyQt5 python3-Cython python3-psutil +depends="python3-numpy python3-PyQt5 python3-Cython0.29 python3-psutil python3-setuptools" checkdepends="$depends" short_desc="Universal Radio Hacker: investigate unknown wireless protocols" From 0e4b4971430dbb8eac832ecd3783e17d28279513 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:54 -0400 Subject: [PATCH 29/31] vapoursynth: update to R63, build with python3-Cython0.29 --- srcpkgs/vapoursynth/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/vapoursynth/template b/srcpkgs/vapoursynth/template index 4ceda6e7724ff..5f12bf2d0911e 100644 --- a/srcpkgs/vapoursynth/template +++ b/srcpkgs/vapoursynth/template @@ -1,9 +1,9 @@ # Template file for 'vapoursynth' pkgname=vapoursynth -version=R57 -revision=2 +version=R63 +revision=1 build_style=gnu-configure -hostmakedepends="automake libtool nasm pkg-config python3-Cython" +hostmakedepends="automake libtool nasm pkg-config python3-Cython0.29" makedepends="python3-devel zimg-devel" short_desc="Application for video manipulation" maintainer="lemmi " @@ -11,7 +11,7 @@ license="LGPL-2.1-or-later, OFL-1.1" homepage="http://www.vapoursynth.com" changelog="https://raw.githubusercontent.com/vapoursynth/vapoursynth/master/ChangeLog" distfiles="https://github.com/vapoursynth/vapoursynth/archive/${version}.tar.gz" -checksum=9bed2ab1823050cfcbdbb1a57414e39507fd6c73f07ee4b5986fcbf0f6cb2d07 +checksum=ed909b3c58e79bcbb056d07c5d301222ba8001222b4b40d5c1123be35fea9ae2 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then LDFLAGS="-latomic" From f61474d029307877fcd7783c0a63ece126095285 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 13:23:55 -0400 Subject: [PATCH 30/31] sagemath: update to 10.1. --- .../sagemath/patches/35584-networkx_3.1.patch | 92 -- .../sagemath/patches/35612-linbox_1.7.0.patch | 64 -- .../patches/35619-maxima_5.46.0.patch | 586 ------------ .../sagemath/patches/35635-sympy_1.12.patch | 54 -- .../patches/35707-maxima_5.47.0.patch | 879 ------------------ .../patches/35825-singular_4.3.2p2.patch | 24 - .../sagemath/patches/35826-numpy_1.25.0.patch | 83 -- .../patches/35831-setuptools_68.0.0.patch | 13 - .../patches/35934-singular_4.3.2p7.patch | 221 +++++ .../sagemath/patches/36006-gmp_6.3.0.patch | 38 + .../patches/36046-fix_memory_leak.patch | 740 +++++++++++++++ srcpkgs/sagemath/patches/get_patches | 22 +- srcpkgs/sagemath/template | 23 +- srcpkgs/vidcutter/template | 2 +- 14 files changed, 1018 insertions(+), 1823 deletions(-) delete mode 100644 srcpkgs/sagemath/patches/35584-networkx_3.1.patch delete mode 100644 srcpkgs/sagemath/patches/35612-linbox_1.7.0.patch delete mode 100644 srcpkgs/sagemath/patches/35619-maxima_5.46.0.patch delete mode 100644 srcpkgs/sagemath/patches/35635-sympy_1.12.patch delete mode 100644 srcpkgs/sagemath/patches/35707-maxima_5.47.0.patch delete mode 100644 srcpkgs/sagemath/patches/35825-singular_4.3.2p2.patch delete mode 100644 srcpkgs/sagemath/patches/35826-numpy_1.25.0.patch delete mode 100644 srcpkgs/sagemath/patches/35831-setuptools_68.0.0.patch create mode 100644 srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch create mode 100644 srcpkgs/sagemath/patches/36006-gmp_6.3.0.patch create mode 100644 srcpkgs/sagemath/patches/36046-fix_memory_leak.patch diff --git a/srcpkgs/sagemath/patches/35584-networkx_3.1.patch b/srcpkgs/sagemath/patches/35584-networkx_3.1.patch deleted file mode 100644 index 9331258986d3d..0000000000000 --- a/srcpkgs/sagemath/patches/35584-networkx_3.1.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff --git a/src/sage/graphs/graph.py b/src/sage/graphs/graph.py -index c2e42bcbd38..0d13f071dc4 100644 ---- a/src/sage/graphs/graph.py -+++ b/src/sage/graphs/graph.py -@@ -6786,13 +6786,26 @@ def cliques_number_of(self, vertices=None, cliques=None): - {(0, 0): 2, (0, 1): 3, (0, 2): 2, (1, 0): 2, (1, 1): 3, (1, 2): 2} - sage: F.cliques_number_of(vertices=[(0, 1), (1, 2)]) - {(0, 1): 3, (1, 2): 2} -+ sage: F.cliques_number_of(vertices=(0, 1)) -+ 3 - sage: G = Graph({0:[1,2,3], 1:[2], 3:[0,1]}) - sage: G.show(figsize=[2,2]) - sage: G.cliques_number_of() - {0: 2, 1: 2, 2: 1, 3: 1} - """ -- import networkx -- return networkx.number_of_cliques(self.networkx_graph(), vertices, cliques) -+ if cliques is None: -+ cliques = self.cliques_maximal() -+ -+ if vertices in self: # single vertex -+ return sum(1 for c in cliques if vertices in c) -+ -+ from collections import Counter -+ count = Counter() -+ -+ for c in cliques: -+ count.update(c) -+ -+ return {v : count[v] for v in vertices or self} - - @doc_index("Clique-related methods") - def cliques_get_max_clique_graph(self): -@@ -7493,17 +7506,32 @@ def cliques_containing_vertex(self, vertices=None, cliques=None): - - sage: C = Graph('DJ{') - sage: C.cliques_containing_vertex() -- {0: [[4, 0]], 1: [[4, 1, 2, 3]], 2: [[4, 1, 2, 3]], 3: [[4, 1, 2, 3]], 4: [[4, 0], [4, 1, 2, 3]]} -+ {0: [[0, 4]], -+ 1: [[1, 2, 3, 4]], -+ 2: [[1, 2, 3, 4]], -+ 3: [[1, 2, 3, 4]], -+ 4: [[0, 4], [1, 2, 3, 4]]} -+ sage: C.cliques_containing_vertex(4) -+ [[0, 4], [1, 2, 3, 4]] -+ sage: C.cliques_containing_vertex([0, 1]) -+ {0: [[0, 4]], 1: [[1, 2, 3, 4]]} - sage: E = C.cliques_maximal() - sage: E - [[0, 4], [1, 2, 3, 4]] - sage: C.cliques_containing_vertex(cliques=E) -- {0: [[0, 4]], 1: [[1, 2, 3, 4]], 2: [[1, 2, 3, 4]], 3: [[1, 2, 3, 4]], 4: [[0, 4], [1, 2, 3, 4]]} -+ {0: [[0, 4]], -+ 1: [[1, 2, 3, 4]], -+ 2: [[1, 2, 3, 4]], -+ 3: [[1, 2, 3, 4]], -+ 4: [[0, 4], [1, 2, 3, 4]]} - - sage: G = Graph({0:[1,2,3], 1:[2], 3:[0,1]}) - sage: G.show(figsize=[2,2]) - sage: G.cliques_containing_vertex() -- {0: [[0, 1, 2], [0, 1, 3]], 1: [[0, 1, 2], [0, 1, 3]], 2: [[0, 1, 2]], 3: [[0, 1, 3]]} -+ {0: [[0, 1, 2], [0, 1, 3]], -+ 1: [[0, 1, 2], [0, 1, 3]], -+ 2: [[0, 1, 2]], -+ 3: [[0, 1, 3]]} - - Since each clique of a 2 dimensional grid corresponds to an edge, the - number of cliques in which a vertex is involved equals its degree:: -@@ -7518,8 +7546,20 @@ def cliques_containing_vertex(self, vertices=None, cliques=None): - sage: sorted(sorted(x for x in L) for L in d[(0, 1)]) - [[(0, 0), (0, 1)], [(0, 1), (0, 2)], [(0, 1), (1, 1)]] - """ -- import networkx -- return networkx.cliques_containing_node(self.networkx_graph(), vertices, cliques) -+ if cliques is None: -+ cliques = self.cliques_maximal() -+ -+ if vertices in self: # single vertex -+ return [c for c in cliques if vertices in c] -+ -+ from collections import defaultdict -+ d = defaultdict(list) -+ -+ for c in cliques: -+ for v in c: -+ d[v].append(c) -+ -+ return {v : d[v] for v in vertices or self} - - @doc_index("Clique-related methods") - def clique_complex(self): diff --git a/srcpkgs/sagemath/patches/35612-linbox_1.7.0.patch b/srcpkgs/sagemath/patches/35612-linbox_1.7.0.patch deleted file mode 100644 index 58dddf34a69d8..0000000000000 --- a/srcpkgs/sagemath/patches/35612-linbox_1.7.0.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd -index 7794c9edc39..1753277b1f1 100644 ---- a/src/sage/libs/linbox/conversion.pxd -+++ b/src/sage/libs/linbox/conversion.pxd -@@ -177,9 +177,8 @@ cdef inline Vector_integer_dense new_sage_vector_integer_dense(P, DenseVector_in - - v -- linbox vector - """ - cdef Vector_integer_dense res = P() -- cdef cppvector[Integer] * vec = &v.refRep() - cdef size_t i - for i in range( res._degree): -- mpz_set(res._entries[i], vec[0][i].get_mpz_const()) -+ mpz_set(res._entries[i], v.getEntry(i).get_mpz_const()) - - return res -diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd -index 9112d151f8b..bfeda4b6042 100644 ---- a/src/sage/libs/linbox/linbox.pxd -+++ b/src/sage/libs/linbox/linbox.pxd -@@ -32,7 +32,6 @@ cdef extern from "linbox/matrix/dense-matrix.h": - ctypedef Modular_double Field - ctypedef double Element - DenseMatrix_Modular_double(Field F, size_t m, size_t n) -- DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n) - void setEntry(size_t i, size_t j, Element& a) - Element &getEntry(size_t i, size_t j) - -@@ -42,7 +41,6 @@ cdef extern from "linbox/matrix/dense-matrix.h": - ctypedef Modular_float Field - ctypedef float Element - DenseMatrix_Modular_float(Field F, size_t m, size_t n) -- DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n) - void setEntry(size_t i, size_t j, Element& a) - Element &getEntry(size_t i, size_t j) - -@@ -101,7 +99,6 @@ cdef extern from "linbox/vector/vector.h": - DenseVector_integer (Field &F) - DenseVector_integer (Field &F, long& m) - DenseVector_integer (Field &F, cppvector[Integer]&) -- cppvector[Element]& refRep() - size_t size() - void resize(size_t) - void resize(size_t n, const Element&) -diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi -index abf29badce6..68b869ce314 100644 ---- a/src/sage/matrix/matrix_modn_dense_template.pxi -+++ b/src/sage/matrix/matrix_modn_dense_template.pxi -@@ -221,9 +221,14 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ - return 0,[] - - cdef ModField *F = new ModField(modulus) -- cdef DenseMatrix *A = new DenseMatrix(F[0], entries,nrows, ncols) -- cdef Py_ssize_t r = reducedRowEchelonize(A[0]) -+ cdef DenseMatrix *A = new DenseMatrix(F[0], nrows, ncols) -+ - cdef Py_ssize_t i,j -+ for i in range(nrows): -+ for j in range(ncols): -+ A.setEntry(i, j, entries[i*ncols+j]) -+ -+ cdef Py_ssize_t r = reducedRowEchelonize(A[0]) - for i in range(nrows): - for j in range(ncols): - entries[i*ncols+j] = A.getEntry(i,j) diff --git a/srcpkgs/sagemath/patches/35619-maxima_5.46.0.patch b/srcpkgs/sagemath/patches/35619-maxima_5.46.0.patch deleted file mode 100644 index 970de6e5beb6c..0000000000000 --- a/srcpkgs/sagemath/patches/35619-maxima_5.46.0.patch +++ /dev/null @@ -1,586 +0,0 @@ -diff --git a/build/pkgs/ecl/dependencies b/build/pkgs/ecl/dependencies -index cda6316bf5a..51a953403e9 100644 ---- a/build/pkgs/ecl/dependencies -+++ b/build/pkgs/ecl/dependencies -@@ -1,4 +1,4 @@ --$(MP_LIBRARY) readline gc libffi -+$(MP_LIBRARY) readline gc libffi info - - ---------- - All lines of this file are ignored except the first. -diff --git a/build/pkgs/ecl/spkg-configure.m4 b/build/pkgs/ecl/spkg-configure.m4 -index ae1e0ac5e1a..7dbcfa6377b 100644 ---- a/build/pkgs/ecl/spkg-configure.m4 -+++ b/build/pkgs/ecl/spkg-configure.m4 -@@ -35,10 +35,7 @@ SAGE_SPKG_CONFIGURE([ecl], [ - AC_SUBST(SAGE_ECL_CONFIG, [$ECL_CONFIG]) - fi - -- # Maxima cannot yet be provided by the system, so we always use -+ # Kenzo cannot yet be provided by the system, so we always use - # the SAGE_LOCAL path for now. -- AC_SUBST(SAGE_MAXIMA_FAS, ['${prefix}'/lib/ecl/maxima.fas]) -- -- # Likewise for the optional Kenzo SPKG - AC_SUBST(SAGE_KENZO_FAS, ['${prefix}'/lib/ecl/kenzo.fas]) - ]) -diff --git a/build/pkgs/ecl/spkg-install.in b/build/pkgs/ecl/spkg-install.in -index ee1667aec16..72083337942 100644 ---- a/build/pkgs/ecl/spkg-install.in -+++ b/build/pkgs/ecl/spkg-install.in -@@ -31,18 +31,6 @@ cp "$SAGE_ROOT"/config/config.* src - - if [ x"$SAGE_SPKG_INSTALL_DOCS" != xyes ] ; then - ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no" --else -- # ECL 2020 needs modern makeinfo -- command -v texi2any >/dev/null 2>&1 -- if [ $? -ne 0 ]; then # texi2any not found -> makeinfo too old, if present -- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no" -- else -- if makeinfo -c foo 2>&1 | grep -q invalid; then -- # makeinfo found but does not support all options that ecl -- # likes to use -- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no" -- fi -- fi - fi - - sdh_configure $SAGE_CONFIGURE_GMP \ -diff --git a/build/pkgs/giac/spkg-configure.m4 b/build/pkgs/giac/spkg-configure.m4 -index 5859e35f12e..53e3a8301cd 100644 ---- a/build/pkgs/giac/spkg-configure.m4 -+++ b/build/pkgs/giac/spkg-configure.m4 -@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([giac], [ - m4_pushdef([GIAC_MAX_VERSION], [1.9.999]) - AC_CACHE_CHECK([for giac >= ]GIAC_MIN_VERSION[, <= ]GIAC_MAX_VERSION, [ac_cv_path_GIAC], [ - AC_PATH_PROGS_FEATURE_CHECK([GIAC], [giac], [ -- giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -1) -+ giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -n 1) - AS_IF([test -n "$giac_version"], [ - AX_COMPARE_VERSION([$giac_version], [ge], GIAC_MIN_VERSION, [ - AX_COMPARE_VERSION([$giac_version], [le], GIAC_MAX_VERSION, [ -diff --git a/build/pkgs/info/distros/fedora.txt b/build/pkgs/info/distros/fedora.txt -index 283aa462f74..c0d8f74e0ad 100644 ---- a/build/pkgs/info/distros/fedora.txt -+++ b/build/pkgs/info/distros/fedora.txt -@@ -1 +1 @@ --texinfo -+texinfo info -diff --git a/build/pkgs/info/spkg-configure.m4 b/build/pkgs/info/spkg-configure.m4 -index 0980a4b8ef8..85fe1ea4731 100644 ---- a/build/pkgs/info/spkg-configure.m4 -+++ b/build/pkgs/info/spkg-configure.m4 -@@ -1,4 +1,14 @@ - SAGE_SPKG_CONFIGURE([info], [ - AC_PATH_PROG(INFO, info) -- AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes]) -+ AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes -+ ], [ -+ dnl very old makeinfo are not texi2any, newer are symlinks to texi2any -+ AC_PATH_PROG(TEXI2ANY, texi2any) -+ AS_IF([test -z "${TEXI2ANY}"], [sage_spkg_install_info=yes -+ ], [ -+ AS_IF([makeinfo -c foo 2>&1 | grep -q invalid], [ -+ dnl makeinfo found, but too old, and does not support all options that ecl likes to use -+ sage_spkg_install_info=yes]) -+ ]) -+ ]) - ]) -diff --git a/build/pkgs/info/spkg-install.in b/build/pkgs/info/spkg-install.in -index 8086e4b2ec8..3ea8c053669 100644 ---- a/build/pkgs/info/spkg-install.in -+++ b/build/pkgs/info/spkg-install.in -@@ -1,2 +1,2 @@ --cd src/info -+cd src - sdh_make_install -diff --git a/build/pkgs/info/type b/build/pkgs/info/type -index 134d9bc32d5..a6a7b9cd726 100644 ---- a/build/pkgs/info/type -+++ b/build/pkgs/info/type -@@ -1 +1 @@ --optional -+standard -diff --git a/build/pkgs/maxima/checksums.ini b/build/pkgs/maxima/checksums.ini -index a804c7b831f..0f594389fe6 100644 ---- a/build/pkgs/maxima/checksums.ini -+++ b/build/pkgs/maxima/checksums.ini -@@ -1,5 +1,5 @@ - tarball=maxima-VERSION.tar.gz --sha1=ed15d5285794413ba94412079eca3d0fa55a47bf --md5=9b9ae1dace55b1386739dabaa9122e60 --cksum=1765409766 -+sha1=1010594e6d6082bbd8efaac1b7756ec1721a4ed5 -+md5=3c01f1daa6936e11d8713fef7751d3fe -+cksum=2420393096 - upstream_url=https://sourceforge.net/projects/maxima/files/Maxima-source/VERSION-source/maxima-VERSION.tar.gz/download -diff --git a/build/pkgs/maxima/dependencies b/build/pkgs/maxima/dependencies -index fffb89e2050..55c7e0d8d14 100644 ---- a/build/pkgs/maxima/dependencies -+++ b/build/pkgs/maxima/dependencies -@@ -1,4 +1,4 @@ --ecl -+ecl info - - ---------- - All lines of this file are ignored except the first. -diff --git a/build/pkgs/maxima/distros/arch.txt b/build/pkgs/maxima/distros/arch.txt -index 6400290f44d..6ac052fa62b 100644 ---- a/build/pkgs/maxima/distros/arch.txt -+++ b/build/pkgs/maxima/distros/arch.txt -@@ -1 +1 @@ --maxima-ecl -+maxima-fas -diff --git a/build/pkgs/maxima/distros/cygwin.txt b/build/pkgs/maxima/distros/cygwin.txt -new file mode 100644 -index 00000000000..f5fe3fdc6cb ---- /dev/null -+++ b/build/pkgs/maxima/distros/cygwin.txt -@@ -0,0 +1 @@ -+maxima -diff --git a/build/pkgs/maxima/distros/freebsd.txt b/build/pkgs/maxima/distros/freebsd.txt -new file mode 100644 -index 00000000000..766a71b5074 ---- /dev/null -+++ b/build/pkgs/maxima/distros/freebsd.txt -@@ -0,0 +1 @@ -+math/maxima -diff --git a/build/pkgs/maxima/distros/gentoo.txt b/build/pkgs/maxima/distros/gentoo.txt -new file mode 100644 -index 00000000000..85fb33f1610 ---- /dev/null -+++ b/build/pkgs/maxima/distros/gentoo.txt -@@ -0,0 +1,2 @@ -+sci-mathematics/maxima[ecls] -+ -diff --git a/build/pkgs/maxima/package-version.txt b/build/pkgs/maxima/package-version.txt -index 83476624dc0..5681375f3be 100644 ---- a/build/pkgs/maxima/package-version.txt -+++ b/build/pkgs/maxima/package-version.txt -@@ -1 +1 @@ --5.45.0.p0 -+5.46.0 -diff --git a/build/pkgs/maxima/patches/matrixexp.patch b/build/pkgs/maxima/patches/matrixexp.patch -deleted file mode 100644 -index 5c8527c33bf..00000000000 ---- a/build/pkgs/maxima/patches/matrixexp.patch -+++ /dev/null -@@ -1,15 +0,0 @@ --diff --git a/share/linearalgebra/matrixexp.lisp b/share/linearalgebra/matrixexp.lisp --index 218bf35..f2fd468 100644 ----- a/share/linearalgebra/matrixexp.lisp --+++ b/share/linearalgebra/matrixexp.lisp --@@ -138,8 +138,8 @@ -- (print `(ratvars = ,$ratvars gcd = '$gcd algebraic = ,$algebraic)) -- (print `(ratfac = ,$ratfac)) -- (merror "Unable to find the spectrum"))) --- --- (setq res ($fullratsimp (ncpower (sub (mult z ($ident n)) mat) -1) z)) --+ --+ (setq res ($fullratsimp ($invert_by_lu (sub (mult z ($ident n)) mat) '$crering) z)) -- (setq m (length sp)) -- (dotimes (i m) -- (setq zi (nth i sp)) -diff --git a/build/pkgs/maxima/patches/maxima.system.patch b/build/pkgs/maxima/patches/maxima.system.patch -deleted file mode 100644 -index 74db62e7f9f..00000000000 ---- a/build/pkgs/maxima/patches/maxima.system.patch -+++ /dev/null -@@ -1,25 +0,0 @@ --diff --git a/src/maxima.system b/src/maxima.system --index 76f2452..cf25f51 100644 ----- a/src/maxima.system --+++ b/src/maxima.system --@@ -1,5 +1,8 @@ -- ;;; -*- Lisp -*- -- --+(require :cmp) --+(setf c::*compile-in-constants* t) --+ -- (in-package :cl-user) -- -- (pushnew :cl *features*) --@@ -75,6 +78,11 @@ -- ;; Convert dir/foo.fas to dir/foo.o -- (make-pathname :type "o" :defaults p)) -- files))) --+ (c::build-fasl "binary-ecl/maxima" :lisp-files obj --+ :ld-flags --+ (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" --+ (find-package "MAXIMA"))))) --+ (if (and x (not (string= x ""))) (list x)))) -- (c::build-program "binary-ecl/maxima" :lisp-files obj -- :ld-flags -- (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" -diff --git a/build/pkgs/maxima/spkg-configure.m4 b/build/pkgs/maxima/spkg-configure.m4 -new file mode 100644 -index 00000000000..86de8c1dfc1 ---- /dev/null -+++ b/build/pkgs/maxima/spkg-configure.m4 -@@ -0,0 +1,46 @@ -+SAGE_SPKG_CONFIGURE([maxima], [ -+ m4_pushdef([SAGE_MAXIMA_MINVER],["5.45.0"])dnl this version and higher allowed -+ SAGE_SPKG_DEPCHECK([ecl], [ -+ dnl First check for the "maxima" executable in the user's PATH, because -+ dnl we still use pexpect to communicate with it in a few places. -+ AC_CACHE_CHECK([for Maxima >= $SAGE_MAXIMA_MINVER], [ac_cv_path_MAXIMA], [ -+ AC_PATH_PROGS_FEATURE_CHECK([MAXIMA], [maxima], [ -+ maxima_version=`$ac_path_MAXIMA --version 2>&1 | tail -n 1\ -+ | $SED -n -e 's/Maxima *\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\)/\1/p'` -+ AS_IF([test -n "$maxima_version"], [ -+ AX_COMPARE_VERSION([$maxima_version], [ge], [SAGE_MAXIMA_MINVER], [ -+ ac_cv_path_MAXIMA="$ac_path_MAXIMA" -+ ac_path_MAXIMA_found=: -+ ]) -+ ]) -+ ]) -+ ]) -+ SAGE_MAXIMA="$ac_cv_path_MAXIMA" -+ AS_IF([test -z "${SAGE_MAXIMA}"], [ -+ sage_spkg_install_maxima=yes -+ ],[ -+ dnl If we have the executable, check also for the ECL library. -+ AC_MSG_CHECKING([if ECL can "require" the maxima module]) -+ AS_IF([ecl --eval "(require 'maxima)" --eval "(quit)" \ -+ >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD], [ -+ AC_MSG_RESULT(yes) -+ ], [ -+ AC_MSG_RESULT(no) -+ sage_spkg_install_maxima=yes -+ ]) -+ ]) -+ ]) -+ m4_popdef([SAGE_MAXIMA_MINVER]) -+],[],[],[ -+ # post-check -+ AS_IF([test x$sage_spkg_install_maxima = xyes], [ -+ dnl Leaving this variable empty will tell sagelib to load -+ dnl the maxima library (within ECL) by name instead of by -+ dnl absolute path. -+ SAGE_MAXIMA='${prefix}'/bin/maxima -+ SAGE_MAXIMA_FAS='${prefix}'/lib/ecl/maxima.fas -+ ]) -+ -+ AC_SUBST(SAGE_MAXIMA, "${SAGE_MAXIMA}") -+ AC_SUBST(SAGE_MAXIMA_FAS, "${SAGE_MAXIMA_FAS}") -+]) -diff --git a/build/pkgs/maxima/spkg-install.in b/build/pkgs/maxima/spkg-install.in -index 3ae6382f9ba..cdb6fbf2069 100644 ---- a/build/pkgs/maxima/spkg-install.in -+++ b/build/pkgs/maxima/spkg-install.in -@@ -28,28 +28,6 @@ echo - echo "Now configuring Maxima..." - sdh_configure --enable-ecl git_found=false - --# Note the following is regression in maxima build system --# see https://sourceforge.net/p/maxima/bugs/3278/ --# and https://sourceforge.net/p/maxima/bugs/2878/ --# For the previous time it was fixed. --#--------------------------------------------------------------- --# Touching html and info file to avoid to regenerate them. --# This must be done after configuration since the timestamp need --# to be later than include-maxima.texi which is generated at --# configuration time --for i in doc/info/*.html ; do -- touch "${i}" --done --touch doc/info/maxima.info* --# Maxima 5.44.0 build_html.sh is not compatible with makeinfo 4.8 --# (which is /usr/bin/makeinfo on macOS). #30063 --# Do not build the HTML docs unless the user asks for it, --# in which case it is their problem to install a better --# makeinfo version. --if [[ "$SAGE_SPKG_INSTALL_DOCS" != yes ]] ; then --touch doc/info/maxima_toc.html interfaces/xmaxima/doc/xmaxima.html --fi -- - #--------------------------------------------------------------- - - sdh_make -diff --git a/build/pkgs/tox/spkg-configure.m4 b/build/pkgs/tox/spkg-configure.m4 -index 7d8ade4c14b..5a260439cdd 100644 ---- a/build/pkgs/tox/spkg-configure.m4 -+++ b/build/pkgs/tox/spkg-configure.m4 -@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([tox], [ - m4_pushdef([TOX4_MIN_VERSION], [4.0.15]) - AC_CACHE_CHECK([for tox 3 >= ]TOX3_MIN_VERSION[ or tox 4 >= ]TOX4_MIN_VERSION, [ac_cv_path_TOX], [ - AC_PATH_PROGS_FEATURE_CHECK([TOX], [tox], [ -- tox_version=$($ac_path_TOX --version 2> /dev/null | tail -1) -+ tox_version=$($ac_path_TOX --version 2> /dev/null | tail -n 1) - AS_IF([test -n "$tox_version"], [ - AX_COMPARE_VERSION([$tox_version], [lt], [4], [ - AX_COMPARE_VERSION([$tox_version], [ge], TOX3_MIN_VERSION, [ -diff --git a/pkgs/sage-conf/_sage_conf/_conf.py.in b/pkgs/sage-conf/_sage_conf/_conf.py.in -index d66bdb3d264..f2e197b45ed 100644 ---- a/pkgs/sage-conf/_sage_conf/_conf.py.in -+++ b/pkgs/sage-conf/_sage_conf/_conf.py.in -@@ -9,9 +9,11 @@ VERSION = "@PACKAGE_VERSION@" - SAGE_LOCAL = "@prefix@" - SAGE_ROOT = "@SAGE_ROOT@" - --MAXIMA = "@prefix@/bin/maxima" -+# The path to the standalone maxima executable. -+MAXIMA = "@SAGE_MAXIMA@".replace('${prefix}', SAGE_LOCAL) - --# Delete this line if your ECL can load maxima without further prodding. -+# Set this to the empty string if your ECL can load maxima without -+# further prodding. - MAXIMA_FAS = "@SAGE_MAXIMA_FAS@".replace('${prefix}', SAGE_LOCAL) - - # Delete this line if your ECL can load Kenzo without further prodding. -diff --git a/src/bin/sage-env b/src/bin/sage-env -index a7da60df28f..13b54fa7e92 100644 ---- a/src/bin/sage-env -+++ b/src/bin/sage-env -@@ -440,9 +440,6 @@ if [ -d "$DOT_SAGE" ] ; then - fi - fi - --if [ -n "$SAGE_LOCAL" ]; then -- export MAXIMA_PREFIX="$SAGE_LOCAL" --fi - export MAXIMA_USERDIR="$DOT_SAGE/maxima" - - if [ -n "$SAGE_LOCAL" ]; then -diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py -index dae380180ac..ee8f632e94c 100644 ---- a/src/sage/calculus/calculus.py -+++ b/src/sage/calculus/calculus.py -@@ -136,10 +136,11 @@ - [ 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x)) 1/2*(x*e^(2*sqrt(x)) - x)*sqrt(x)*e^(x - sqrt(x))] - [ 1/2*(e^(2*sqrt(x)) - 1)*e^(x - sqrt(x))/x^(3/2) 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x))] - --And complex exponentiation works now:: -+Complex exponentiation works, but may require a patched version of -+maxima (:trac:`32898`) for now:: - - sage: M = i*matrix([[pi]]) -- sage: e^M -+ sage: e^M # not tested, requires patched maxima - [-1] - sage: M = i*matrix([[pi,0],[0,2*pi]]) - sage: e^M -@@ -1186,8 +1187,18 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv): - e - sage: f.limit(x=5) - 7776/3125 -- sage: f.limit(x=1.2) -+ -+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 :: -+ -+ sage: maxima_calculus.eval("domain:real") -+ ... -+ sage: f.limit(x=1.2).n() - 2.06961575467... -+ sage: maxima_calculus.eval("domain:complex"); -+ ... -+ -+ Otherwise, it works :: -+ - sage: f.limit(x=I, taylor=True) - (-I + 1)^I - sage: f(x=1.2) -@@ -1215,7 +1226,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv): - With this example, Maxima is looking for a LOT of information:: - - sage: assume(a>0) -- sage: limit(x^a,x=0) -+ sage: limit(x^a,x=0) # random - maxima 5.46.0 does not need extra assumption - Traceback (most recent call last): - ... - ValueError: Computation failed since Maxima requested additional -@@ -1224,7 +1235,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv): - more details) - Is a an integer? - sage: assume(a,'integer') -- sage: limit(x^a, x=0) -+ sage: limit(x^a, x=0) # random - maxima 5.46.0 does not need extra assumption - Traceback (most recent call last): - ... - ValueError: Computation failed since Maxima requested additional -@@ -2251,10 +2262,10 @@ def symbolic_expression_from_maxima_string(x, equals_sub=False, maxima=maxima): - True - sage: sefms("x # 3") == SR(x != 3) - True -- sage: solve([x != 5], x) -- [[x - 5 != 0]] -+ sage: solve([x != 5], x) in [[[x - 5 != 0]], [[x < 5], [5 < x]]] -+ True - sage: solve([2*x==3, x != 5], x) -- [[x == (3/2), (-7/2) != 0]] -+ [[x == (3/2)... - - Make sure that we don't accidentally pick up variables in the maxima namespace (:trac:`8734`):: - -diff --git a/src/sage/functions/exp_integral.py b/src/sage/functions/exp_integral.py -index e6c888c64b6..f314e525145 100644 ---- a/src/sage/functions/exp_integral.py -+++ b/src/sage/functions/exp_integral.py -@@ -601,8 +601,8 @@ class Function_log_integral_offset(BuiltinFunction): - 1/log(x) - sage: f.integrate(x) - -x*log_integral(2) + x*log_integral(x) - Ei(2*log(x)) -- sage: Li(x).integrate(x,2.0,4.5) -- -2.5*log_integral(2) + 5.799321147411334 -+ sage: Li(x).integrate(x,2.0,4.5).n(digits=10) -+ 3.186411697 - sage: N(f.integrate(x,2.0,3.0)) # abs tol 1e-15 - 0.601621785860587 - -diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py -index 68ae715e4c3..84adf0341b5 100644 ---- a/src/sage/interfaces/expect.py -+++ b/src/sage/interfaces/expect.py -@@ -620,7 +620,7 @@ def quit(self, verbose=False): - - sage: a = maxima('y') - sage: maxima.quit(verbose=True) -- Exiting Maxima with PID ... running .../bin/maxima... -+ Exiting Maxima with PID ... running ...maxima... - sage: a._check_valid() - Traceback (most recent call last): - ... -diff --git a/src/sage/interfaces/maxima.py b/src/sage/interfaces/maxima.py -index 27b1e98a6ac..4829560f98b 100644 ---- a/src/sage/interfaces/maxima.py -+++ b/src/sage/interfaces/maxima.py -@@ -622,11 +622,6 @@ def _start(self): - sage: m.is_running() - True - -- Test that we can use more than 256MB RAM (see :trac:`6772`):: -- -- sage: a = maxima(10)^(10^5) -- sage: b = a^600 # long time -- about 10-15 seconds -- - """ - Expect._start(self) - self._sendline(r":lisp (defun tex-derivative (x l r) (tex (if $derivabbrev (tex-dabbrev x) (tex-d x '\\partial)) l r lop rop ))") -@@ -634,9 +629,6 @@ def _start(self): - # Don't use ! for factorials (#11539) - self._sendline(":lisp (remprop 'mfactorial 'grind)") - -- # Remove limit on the max heapsize (since otherwise it defaults -- # to 256MB with ECL). -- self._sendline(":lisp (ext:set-limit 'ext:heap-size 0)") - self._eval_line('0;') - - # set random seed -diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py -index c263ac65f02..bba8504aa92 100644 ---- a/src/sage/interfaces/maxima_lib.py -+++ b/src/sage/interfaces/maxima_lib.py -@@ -934,8 +934,15 @@ def sr_limit(self, expr, v, a, dir=None): - e - sage: limit(f,x = 5) - 7776/3125 -- sage: limit(f,x = 1.2) -+ -+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 :: -+ -+ sage: maxima_calculus.eval("domain:real") -+ ... -+ sage: limit(f,x = 1.2).n() - 2.06961575467... -+ sage: maxima_calculus.eval("domain:complex"); -+ ... - sage: var('a') - a - sage: limit(x^a,x=0) -@@ -947,7 +954,7 @@ def sr_limit(self, expr, v, a, dir=None): - for more details) - Is a positive, negative or zero? - sage: assume(a>0) -- sage: limit(x^a,x=0) -+ sage: limit(x^a,x=0) # random - not needed for maxima 5.46.0 - Traceback (most recent call last): - ... - ValueError: Computation failed ... -diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx -index e2e6449dfa9..15914b0be3e 100644 ---- a/src/sage/matrix/matrix2.pyx -+++ b/src/sage/matrix/matrix2.pyx -@@ -15425,9 +15425,10 @@ cdef class Matrix(Matrix1): - - TESTS: - -- Check that sparse matrices are handled correctly (:trac:`28935`):: -+ Sparse matrices are handled correctly (:trac:`28935`), but may -+ require a patched version of maxima (:trac:`32898`) for now:: - -- sage: matrix.diagonal([0], sparse=True).exp() -+ sage: matrix.diagonal([0], sparse=True).exp() # not tested, requires patched maxima - [1] - sage: matrix.zero(CBF, 2, sparse=True).exp() - [1.000000000000000 0] -diff --git a/src/sage/matrix/matrix_symbolic_dense.pyx b/src/sage/matrix/matrix_symbolic_dense.pyx -index 19ca5c85cb2..58a25e002f6 100644 ---- a/src/sage/matrix/matrix_symbolic_dense.pyx -+++ b/src/sage/matrix/matrix_symbolic_dense.pyx -@@ -402,7 +402,8 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense): - [1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x)] - [1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x)] - -- Exp works on 0x0 and 1x1 matrices:: -+ Exponentiation works on 0x0 and 1x1 matrices, but the 1x1 example -+ requires a patched version of maxima (:trac:`32898`) for now:: - - sage: m = matrix(SR,0,[]); m - [] -@@ -410,7 +411,7 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense): - [] - sage: m = matrix(SR,1,[2]); m - [2] -- sage: m.exp() -+ sage: m.exp() # not tested, requires patched maxima - [e^2] - - Commuting matrices `m, n` have the property that -@@ -451,7 +452,6 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense): - [ 0 1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x) 0] - [ 0 1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x) 0] - [1/2*(e^(2*x) - 1)*e^(-x) 0 0 1/2*(e^(2*x) + 1)*e^(-x)] -- - """ - if not self.is_square(): - raise ValueError("exp only defined on square matrices") -diff --git a/src/sage/symbolic/integration/integral.py b/src/sage/symbolic/integration/integral.py -index c82e9ed73c3..e84ad357ee2 100644 ---- a/src/sage/symbolic/integration/integral.py -+++ b/src/sage/symbolic/integration/integral.py -@@ -741,14 +741,14 @@ def integrate(expression, v=None, a=None, b=None, algorithm=None, hold=False): - - sage: _ = var('x,y') - sage: f = log(x^2+y^2) -- sage: res = integral(f,x,0.0001414, 1.); res -+ sage: res = integral(f,x,1414/10^7, 1); res - Traceback (most recent call last): - ... -- ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(50015104*y^2-50015103>0)', see `assume?` for more details) -- Is 50015104*y^2-50015103 positive, negative or zero? -+ ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help ... -+ Is ... positive, negative or zero? - sage: assume(y>1) -- sage: res = integral(f,x,0.0001414, 1.); res -- 2*y*arctan(1.0/y) - 2*y*arctan(0.0001414/y) + 1.0*log(1.0*y^2 + 1.0) - 0.0001414*log(1.0*y^2 + 1.9993959999999997e-08) - 1.9997172 -+ sage: res = integral(f,x,1414/10^7, 1); res -+ -2*y*arctan(707/5000000/y) + 2*y*arctan(1/y) + log(y^2 + 1) - 707/5000000*log(y^2 + 499849/25000000000000) - 4999293/2500000 - sage: nres = numerical_integral(f.subs(y=2), 0.0001414, 1.); nres - (1.4638323264144..., 1.6251803529759...e-14) - sage: res.subs(y=2).n() -diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py -index 94813315181..a72ab547c76 100644 ---- a/src/sage/symbolic/relation.py -+++ b/src/sage/symbolic/relation.py -@@ -1787,8 +1787,8 @@ def solve_ineq_fourier(ineq, vars=None): - sage: y = var('y') - sage: solve_ineq_fourier([x+y<9,x-y>4],[x,y]) - [[y + 4 < x, x < -y + 9, y < (5/2)]] -- sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x]) -- [[y < min(x - 4, -x + 9)]] -+ sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x])[0][0](x=42) -+ y < -33 - - sage: solve_ineq_fourier([x^2>=0]) - [[x < +Infinity]] diff --git a/srcpkgs/sagemath/patches/35635-sympy_1.12.patch b/srcpkgs/sagemath/patches/35635-sympy_1.12.patch deleted file mode 100644 index 9cfc69c2adb6f..0000000000000 --- a/srcpkgs/sagemath/patches/35635-sympy_1.12.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py -index dae380180ac..ca3c59e63d2 100644 ---- a/src/sage/calculus/calculus.py -+++ b/src/sage/calculus/calculus.py -@@ -1690,8 +1690,11 @@ def laplace(ex, t, s, algorithm='maxima'): - - Testing SymPy:: - -- sage: laplace(t^n, t, s, algorithm='sympy') -- (gamma(n + 1)/(s*s^n), 0, re(n) > -1) -+ sage: F, a, cond = laplace(t^n, t, s, algorithm='sympy') -+ sage: a, cond -+ (0, re(n) > -1) -+ sage: F.simplify() -+ s^(-n - 1)*gamma(n + 1) - - Testing Maxima:: - -@@ -1700,17 +1703,19 @@ def laplace(ex, t, s, algorithm='maxima'): - - Check that :trac:`24212` is fixed:: - -- sage: laplace(cos(t^2), t, s, algorithm='sympy') -- (-1/2*sqrt(pi)*(sqrt(2)*cos(1/4*s^2)*fresnel_sin(1/2*sqrt(2)*s/sqrt(pi)) - -- sqrt(2)*fresnel_cos(1/2*sqrt(2)*s/sqrt(pi))*sin(1/4*s^2) - cos(1/4*pi + 1/4*s^2)), -- 0, True) -+ sage: F, a, cond = laplace(cos(t^2), t, s, algorithm='sympy') -+ sage: a, cond -+ (0, True) -+ sage: F._sympy_().simplify() -+ sqrt(pi)*(sqrt(2)*sin(s**2/4)*fresnelc(sqrt(2)*s/(2*sqrt(pi))) - -+ sqrt(2)*cos(s**2/4)*fresnels(sqrt(2)*s/(2*sqrt(pi))) + cos(s**2/4 + pi/4))/2 - - Testing result from SymPy that Sage doesn't know how to handle:: - - sage: laplace(cos(-1/t), t, s, algorithm='sympy') - Traceback (most recent call last): - ... -- AttributeError: Unable to convert SymPy result (=meijerg(((), ()), ((-1/2, 0, 1/2), (0,)), s**2/16)/4) into Sage -+ AttributeError: Unable to convert SymPy result (=meijerg(((), ()), ((-1/2, 0, 1/2), (0,)), ...)/4) into Sage - """ - if not isinstance(ex, (Expression, Function)): - ex = SR(ex) -@@ -1817,8 +1822,8 @@ def inverse_laplace(ex, s, t, algorithm='maxima'): - - Transform an expression involving a time-shift, via SymPy:: - -- sage: inverse_laplace(1/s^2*exp(-s), s, t, algorithm='sympy') -- -(log(e^(-t)) + 1)*heaviside(t - 1) -+ sage: inverse_laplace(1/s^2*exp(-s), s, t, algorithm='sympy').simplify() -+ (t - 1)*heaviside(t - 1) - - The same instance with Giac:: - diff --git a/srcpkgs/sagemath/patches/35707-maxima_5.47.0.patch b/srcpkgs/sagemath/patches/35707-maxima_5.47.0.patch deleted file mode 100644 index de10df8cb73c9..0000000000000 --- a/srcpkgs/sagemath/patches/35707-maxima_5.47.0.patch +++ /dev/null @@ -1,879 +0,0 @@ -diff --git a/src/doc/de/tutorial/interfaces.rst b/src/doc/de/tutorial/interfaces.rst -index edb4f383363..d83225b5315 100644 ---- a/src/doc/de/tutorial/interfaces.rst -+++ b/src/doc/de/tutorial/interfaces.rst -@@ -272,8 +272,8 @@ deren :math:`i,j` Eintrag gerade :math:`i/j` ist, für :math:`i,j=1,\ldots,4`. - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - Hier ein anderes Beispiel: - -@@ -332,12 +332,9 @@ Und der letzte ist die berühmte Kleinsche Flasche: - - :: - -- sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -- 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -- sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") -- 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) -+ sage: _ = maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -+ sage: _ = maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -+ sage: _ = maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - sage: maxima.plot3d ("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested - ....: "[y, -%pi, %pi]", "['grid, 40, 40]", - ....: '[plot_format, openmath]') -diff --git a/src/doc/de/tutorial/tour_algebra.rst b/src/doc/de/tutorial/tour_algebra.rst -index baba2553a25..59eed8f1888 100644 ---- a/src/doc/de/tutorial/tour_algebra.rst -+++ b/src/doc/de/tutorial/tour_algebra.rst -@@ -209,9 +209,12 @@ Lösung: Berechnen Sie die Laplace-Transformierte der ersten Gleichung - - :: - -- sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Das ist schwierig zu lesen, es besagt jedoch, dass - -@@ -226,8 +229,8 @@ Laplace-Transformierte der zweiten Gleichung: - :: - - sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: lde2 = de2.laplace("t","s"); lde2.sage() -+ s^2*laplace(y(t), t, s) - s*y(0) - 2*laplace(x(t), t, s) + 2*laplace(y(t), t, s) - D[0](y)(0) - - Dies besagt - -diff --git a/src/doc/en/constructions/linear_algebra.rst b/src/doc/en/constructions/linear_algebra.rst -index 8894de9a5fd..4e76c65ad0a 100644 ---- a/src/doc/en/constructions/linear_algebra.rst -+++ b/src/doc/en/constructions/linear_algebra.rst -@@ -277,8 +277,8 @@ Another approach is to use the interface with Maxima: - - sage: A = maxima("matrix ([1, -4], [1, -1])") - sage: eig = A.eigenvectors() -- sage: eig -- [[[-sqrt(3)*%i,sqrt(3)*%i],[1,1]], [[[1,(sqrt(3)*%i+1)/4]],[[1,-(sqrt(3)*%i-1)/4]]]] -+ sage: eig.sage() -+ [[[-I*sqrt(3), I*sqrt(3)], [1, 1]], [[[1, 1/4*I*sqrt(3) + 1/4]], [[1, -1/4*I*sqrt(3) + 1/4]]]] - - This tells us that :math:`\vec{v}_1 = [1,(\sqrt{3}i + 1)/4]` is - an eigenvector of :math:`\lambda_1 = - \sqrt{3}i` (which occurs -diff --git a/src/doc/en/tutorial/interfaces.rst b/src/doc/en/tutorial/interfaces.rst -index b0e55345669..19c28f636d4 100644 ---- a/src/doc/en/tutorial/interfaces.rst -+++ b/src/doc/en/tutorial/interfaces.rst -@@ -267,8 +267,8 @@ whose :math:`i,j` entry is :math:`i/j`, for - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - Here's another example: - -@@ -320,8 +320,8 @@ The next plot is the famous Klein bottle (do not type the ``....:``):: - - sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") - 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -+ sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)").sage() -+ -5*(cos(1/2*x)*cos(y) + sin(1/2*x)*sin(2*y) + 3.0)*sin(x) - sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) - sage: maxima.plot3d ("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested -diff --git a/src/doc/en/tutorial/tour_algebra.rst b/src/doc/en/tutorial/tour_algebra.rst -index 2e872cc9059..225606a729f 100644 ---- a/src/doc/en/tutorial/tour_algebra.rst -+++ b/src/doc/en/tutorial/tour_algebra.rst -@@ -216,9 +216,12 @@ the notation :math:`x=x_{1}`, :math:`y=x_{2}`): - - :: - -- sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - This is hard to read, but it says that - -@@ -232,8 +235,8 @@ Laplace transform of the second equation: - :: - - sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: lde2 = de2.laplace("t","s"); lde2.sage() -+ s^2*laplace(y(t), t, s) - s*y(0) - 2*laplace(x(t), t, s) + 2*laplace(y(t), t, s) - D[0](y)(0) - - This says - -diff --git a/src/doc/es/tutorial/tour_algebra.rst b/src/doc/es/tutorial/tour_algebra.rst -index dc1a7a96719..42c818fe8d7 100644 ---- a/src/doc/es/tutorial/tour_algebra.rst -+++ b/src/doc/es/tutorial/tour_algebra.rst -@@ -197,8 +197,8 @@ la notación :math:`x=x_{1}`, :math:`y=x_{2}`): - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - El resultado puede ser difícil de leer, pero significa que - -@@ -211,9 +211,12 @@ Toma la transformada de Laplace de la segunda ecuación: - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Esto dice - -diff --git a/src/doc/fr/tutorial/interfaces.rst b/src/doc/fr/tutorial/interfaces.rst -index 1cd662f3083..2cb14e772eb 100644 ---- a/src/doc/fr/tutorial/interfaces.rst -+++ b/src/doc/fr/tutorial/interfaces.rst -@@ -273,8 +273,8 @@ pour :math:`i,j=1,\ldots,4`. - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - Un deuxième exemple : - -@@ -334,12 +334,9 @@ Et la fameuse bouteille de Klein (n'entrez pas les ``....:``): - - :: - -- sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -- 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -- sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") -- 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) -+ sage: _ = maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -+ sage: _ = maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -+ sage: _ = maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - sage: maxima.plot3d ("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested - ....: "[y, -%pi, %pi]", "['grid, 40, 40]", - ....: '[plot_format, openmath]') -diff --git a/src/doc/fr/tutorial/tour_algebra.rst b/src/doc/fr/tutorial/tour_algebra.rst -index 658894b2e8b..267bd1dd4f9 100644 ---- a/src/doc/fr/tutorial/tour_algebra.rst -+++ b/src/doc/fr/tutorial/tour_algebra.rst -@@ -182,8 +182,8 @@ Solution : Considérons la transformée de Laplace de la première équation - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - La réponse n'est pas très lisible, mais elle signifie que - -@@ -196,9 +196,12 @@ la seconde équation : - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Ceci signifie - -diff --git a/src/doc/it/tutorial/tour_algebra.rst b/src/doc/it/tutorial/tour_algebra.rst -index 5a5311e9b1c..cde427d3090 100644 ---- a/src/doc/it/tutorial/tour_algebra.rst -+++ b/src/doc/it/tutorial/tour_algebra.rst -@@ -183,8 +183,8 @@ la notazione :math:`x=x_{1}`, :math:`y=x_{2}`: - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Questo è di difficile lettura, ma dice che - -@@ -197,9 +197,12 @@ trasformata di Laplace della seconda equazione: - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - che significa - -diff --git a/src/doc/ja/tutorial/interfaces.rst b/src/doc/ja/tutorial/interfaces.rst -index 9c16b2eba08..892fc6f852f 100644 ---- a/src/doc/ja/tutorial/interfaces.rst -+++ b/src/doc/ja/tutorial/interfaces.rst -@@ -239,8 +239,8 @@ Sage/Maximaインターフェイスの使い方を例示するため,ここで - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - - 使用例をもう一つ示す: -@@ -299,11 +299,8 @@ Sage/Maximaインターフェイスの使い方を例示するため,ここで - - :: - -- sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -- 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -- sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") -- 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) -+ sage: _ = maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -+ sage: _ = maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -+ sage: _ = maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - sage: maxima.plot3d ("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested - ....: "[y, -%pi, %pi]", "['grid, 40, 40]", '[plot_format, openmath]') -diff --git a/src/doc/ja/tutorial/tour_algebra.rst b/src/doc/ja/tutorial/tour_algebra.rst -index 784fd0d5c40..746cbb4475c 100644 ---- a/src/doc/ja/tutorial/tour_algebra.rst -+++ b/src/doc/ja/tutorial/tour_algebra.rst -@@ -213,8 +213,8 @@ Sageを使って常微分方程式を研究することもできる. :math:`x' - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - この出力は読みにくいけれども,意味しているのは - -@@ -226,9 +226,12 @@ Sageを使って常微分方程式を研究することもできる. :math:`x' - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - 意味するところは - -diff --git a/src/doc/pt/tutorial/interfaces.rst b/src/doc/pt/tutorial/interfaces.rst -index 386ef6456e5..5badb31ab35 100644 ---- a/src/doc/pt/tutorial/interfaces.rst -+++ b/src/doc/pt/tutorial/interfaces.rst -@@ -269,8 +269,8 @@ entrada :math:`i,j` é :math:`i/j`, para :math:`i,j=1,\ldots,4`. - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - Aqui vai outro exemplo: - -@@ -330,13 +330,10 @@ E agora a famosa garrafa de Klein: - - :: - -- sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)" -+ sage: _ = maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)" - ....: "- 10.0") -- 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -- sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") -- 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) -+ sage: _ = maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -+ sage: _ = maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - sage: maxima.plot3d("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested - ....: "[y, -%pi, %pi]", "['grid, 40, 40]", - ....: '[plot_format, openmath]') -diff --git a/src/doc/pt/tutorial/tour_algebra.rst b/src/doc/pt/tutorial/tour_algebra.rst -index baeb37b1c71..170e0d8a367 100644 ---- a/src/doc/pt/tutorial/tour_algebra.rst -+++ b/src/doc/pt/tutorial/tour_algebra.rst -@@ -205,8 +205,8 @@ equação (usando a notação :math:`x=x_{1}`, :math:`y=x_{2}`): - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - O resultado é um pouco difícil de ler, mas diz que - -@@ -219,9 +219,12 @@ calcule a transformada de Laplace da segunda equação: - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - O resultado significa que - -diff --git a/src/doc/ru/tutorial/interfaces.rst b/src/doc/ru/tutorial/interfaces.rst -index ea84527f478..061818ca4a5 100644 ---- a/src/doc/ru/tutorial/interfaces.rst -+++ b/src/doc/ru/tutorial/interfaces.rst -@@ -264,8 +264,8 @@ gnuplot, имеет методы решения и манипуляции мат - matrix([1,1/2,1/3,1/4],[0,0,0,0],[0,0,0,0],[0,0,0,0]) - sage: A.eigenvalues() - [[0,4],[3,1]] -- sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ sage: A.eigenvectors().sage() -+ [[[0, 4], [3, 1]], [[[1, 0, 0, -4], [0, 1, 0, -2], [0, 0, 1, -4/3]], [[1, 2, 3, 4]]]] - - Вот другой пример: - -@@ -323,12 +323,9 @@ gnuplot, имеет методы решения и манипуляции мат - - :: - -- sage: maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -- 5*cos(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0)-10.0 -- sage: maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -- -5*sin(x)*(sin(x/2)*sin(2*y)+cos(x/2)*cos(y)+3.0) -- sage: maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") -- 5*(cos(x/2)*sin(2*y)-sin(x/2)*cos(y)) -+ sage: _ = maxima("expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0) - 10.0") -+ sage: _ = maxima("expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)+ 3.0)") -+ sage: _ = maxima("expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))") - sage: maxima.plot3d ("[expr_1, expr_2, expr_3]", "[x, -%pi, %pi]", # not tested - ....: "[y, -%pi, %pi]", "['grid, 40, 40]", - ....: '[plot_format, openmath]') -diff --git a/src/doc/ru/tutorial/tour_algebra.rst b/src/doc/ru/tutorial/tour_algebra.rst -index 9f08c41d118..bc0d4926f83 100644 ---- a/src/doc/ru/tutorial/tour_algebra.rst -+++ b/src/doc/ru/tutorial/tour_algebra.rst -@@ -199,8 +199,8 @@ Sage может использоваться для решения диффер - :: - - sage: de1 = maxima("2*diff(x(t),t, 2) + 6*x(t) - 2*y(t)") -- sage: lde1 = de1.laplace("t","s"); lde1 -- 2*((-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s) -2*'laplace(y(t),t,s)+6*'laplace(x(t),t,s) -+ sage: lde1 = de1.laplace("t","s"); lde1.sage() -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Данный результат тяжело читаем, однако должен быть понят как - -@@ -210,9 +210,12 @@ Sage может использоваться для решения диффер - - :: - -- sage: de2 = maxima("diff(y(t),t, 2) + 2*y(t) - 2*x(t)") -- sage: lde2 = de2.laplace("t","s"); lde2 -- (-%at('diff(y(t),t,1),t = 0))+s^2*'laplace(y(t),t,s) +2*'laplace(y(t),t,s)-2*'laplace(x(t),t,s) -y(0)*s -+ sage: t,s = SR.var('t,s') -+ sage: x = function('x') -+ sage: y = function('y') -+ sage: f = 2*x(t).diff(t,2) + 6*x(t) - 2*y(t) -+ sage: f.laplace(t,s) -+ 2*s^2*laplace(x(t), t, s) - 2*s*x(0) + 6*laplace(x(t), t, s) - 2*laplace(y(t), t, s) - 2*D[0](x)(0) - - Результат: - -diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py -index c707530b9f1..f7ce8b95727 100644 ---- a/src/sage/calculus/calculus.py -+++ b/src/sage/calculus/calculus.py -@@ -783,7 +783,7 @@ def nintegral(ex, x, a, b, - Now numerically integrating, we see why the answer is wrong:: - - sage: f.nintegrate(x,0,1) -- (-480.0000000000001, 5.32907051820075...e-12, 21, 0) -+ (-480.000000000000..., 5.32907051820075...e-12, 21, 0) - - It is just because every floating point evaluation of return -480.0 - in floating point. -@@ -1336,7 +1336,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv): - sage: limit(floor(x), x=0, dir='+') - 0 - sage: limit(floor(x), x=0) -- und -+ ...nd - - Maxima gives the right answer here, too, showing - that :trac:`4142` is fixed:: -diff --git a/src/sage/calculus/desolvers.py b/src/sage/calculus/desolvers.py -index e0c31925f44..6e91f7e2bb4 100644 ---- a/src/sage/calculus/desolvers.py -+++ b/src/sage/calculus/desolvers.py -@@ -295,7 +295,7 @@ def desolve(de, dvar, ics=None, ivar=None, show_method=False, contrib_ode=False, - Clairaut equation: general and singular solutions:: - - sage: desolve(diff(y,x)^2+x*diff(y,x)-y==0,y,contrib_ode=True,show_method=True) -- [[y(x) == _C^2 + _C*x, y(x) == -1/4*x^2], 'clairault'] -+ [[y(x) == _C^2 + _C*x, y(x) == -1/4*x^2], 'clairau...'] - - For equations involving more variables we specify an independent variable:: - -@@ -1325,7 +1325,7 @@ def desolve_rk4(de, dvar, ics=None, ivar=None, end_points=None, step=0.1, output - - sage: x,y = var('x,y') - sage: desolve_rk4(x*y*(2-y),y,ics=[0,1],end_points=1,step=0.5) -- [[0, 1], [0.5, 1.12419127424558], [1.0, 1.461590162288825]] -+ [[0, 1], [0.5, 1.12419127424558], [1.0, 1.46159016228882...]] - - Variant 1 for input - we can pass ODE in the form used by - desolve function In this example we integrate backwards, since -@@ -1333,7 +1333,7 @@ def desolve_rk4(de, dvar, ics=None, ivar=None, end_points=None, step=0.1, output - - sage: y = function('y')(x) - sage: desolve_rk4(diff(y,x)+y*(y-1) == x-2,y,ics=[1,1],step=0.5, end_points=0) -- [[0.0, 8.904257108962112], [0.5, 1.909327945361535], [1, 1]] -+ [[0.0, 8.904257108962112], [0.5, 1.90932794536153...], [1, 1]] - - Here we show how to plot simple pictures. For more advanced - applications use list_plot instead. To see the resulting picture -diff --git a/src/sage/functions/bessel.py b/src/sage/functions/bessel.py -index 95405c3d72f..48607c49f56 100644 ---- a/src/sage/functions/bessel.py -+++ b/src/sage/functions/bessel.py -@@ -293,9 +293,6 @@ class Function_Bessel_J(BuiltinFunction): - sage: f = bessel_J(2, x) - sage: f.integrate(x) - 1/24*x^3*hypergeometric((3/2,), (5/2, 3), -1/4*x^2) -- sage: m = maxima(bessel_J(2, x)) -- sage: m.integrate(x) -- (hypergeometric([3/2],[5/2,3],-_SAGE_VAR_x^2/4)*_SAGE_VAR_x^3)/24 - - Visualization (set plot_points to a higher value to get more detail):: - -@@ -1118,11 +1115,11 @@ def Bessel(*args, **kwds): - Conversion to other systems:: - - sage: x,y = var('x,y') -- sage: f = maxima(Bessel(typ='K')(x,y)) -- sage: f.derivative('_SAGE_VAR_x') -- (%pi*csc(%pi*_SAGE_VAR_x) *('diff(bessel_i(-_SAGE_VAR_x,_SAGE_VAR_y),_SAGE_VAR_x,1) -'diff(bessel_i(_SAGE_VAR_x,_SAGE_VAR_y),_SAGE_VAR_x,1))) /2 -%pi*bessel_k(_SAGE_VAR_x,_SAGE_VAR_y)*cot(%pi*_SAGE_VAR_x) -- sage: f.derivative('_SAGE_VAR_y') -- -(bessel_k(_SAGE_VAR_x+1,_SAGE_VAR_y)+bessel_k(_SAGE_VAR_x-1, _SAGE_VAR_y))/2 -+ sage: f = Bessel(typ='K')(x,y) -+ sage: expected = f.derivative(y) -+ sage: actual = maxima(f).derivative('_SAGE_VAR_y').sage() -+ sage: bool(actual == expected) -+ True - - Compute the particular solution to Bessel's Differential Equation that - satisfies `y(1) = 1` and `y'(1) = 1`, then verify the initial conditions -diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py -index 752b8422fc6..fc2fb5875ce 100644 ---- a/src/sage/functions/hypergeometric.py -+++ b/src/sage/functions/hypergeometric.py -@@ -19,8 +19,11 @@ - sage: sum(((2*I)^x/(x^3 + 1)*(1/4)^x), x, 0, oo) - hypergeometric((1, 1, -1/2*I*sqrt(3) - 1/2, 1/2*I*sqrt(3) - 1/2),... - (2, -1/2*I*sqrt(3) + 1/2, 1/2*I*sqrt(3) + 1/2), 1/2*I) -- sage: sum((-1)^x/((2*x + 1)*factorial(2*x + 1)), x, 0, oo) -+ sage: res = sum((-1)^x/((2*x + 1)*factorial(2*x + 1)), x, 0, oo) -+ sage: res # not tested - depends on maxima version - hypergeometric((1/2,), (3/2, 3/2), -1/4) -+ sage: res in [hypergeometric((1/2,), (3/2, 3/2), -1/4), sin_integral(1)] -+ True - - Simplification (note that ``simplify_full`` does not yet call - ``simplify_hypergeometric``):: -diff --git a/src/sage/functions/orthogonal_polys.py b/src/sage/functions/orthogonal_polys.py -index 7398c763971..6127f5d9490 100644 ---- a/src/sage/functions/orthogonal_polys.py -+++ b/src/sage/functions/orthogonal_polys.py -@@ -974,7 +974,7 @@ def __init__(self): - sage: chebyshev_U(x, x)._sympy_() - chebyshevu(x, x) - sage: maxima(chebyshev_U(2,x, hold=True)) -- 3*((-(8*(1-_SAGE_VAR_x))/3)+(4*(1-_SAGE_VAR_x)^2)/3+1) -+ 3*(...-...(8*(1-_SAGE_VAR_x))/3)+(4*(1-_SAGE_VAR_x)^2)/3+1) - sage: maxima(chebyshev_U(n,x, hold=True)) - chebyshev_u(_SAGE_VAR_n,_SAGE_VAR_x) - """ -diff --git a/src/sage/functions/other.py b/src/sage/functions/other.py -index 3e2570e889e..5a0f06a27f8 100644 ---- a/src/sage/functions/other.py -+++ b/src/sage/functions/other.py -@@ -498,10 +498,10 @@ def __init__(self): - - sage: var('x') - x -- sage: a = floor(5.4 + x); a -- floor(x + 5.40000000000000) -+ sage: a = floor(5.25 + x); a -+ floor(x + 5.25000000000000) - sage: a.simplify() -- floor(x + 0.4000000000000004) + 5 -+ floor(x + 0.25) + 5 - sage: a(x=2) - 7 - -diff --git a/src/sage/functions/special.py b/src/sage/functions/special.py -index faa6a73cc7e..d72e780836a 100644 ---- a/src/sage/functions/special.py -+++ b/src/sage/functions/special.py -@@ -455,9 +455,8 @@ class EllipticE(BuiltinFunction): - sage: z = var("z") - sage: elliptic_e(z, 1) - elliptic_e(z, 1) -- sage: # this is still wrong: must be abs(sin(z)) + 2*round(z/pi) -- sage: elliptic_e(z, 1).simplify() -- 2*round(z/pi) + sin(z) -+ sage: elliptic_e(z, 1).simplify() # not tested - gives wrong answer with maxima < 5.47 -+ 2*round(z/pi) - sin(pi*round(z/pi) - z) - sage: elliptic_e(z, 0) - z - sage: elliptic_e(0.5, 0.1) # abs tol 2e-15 -diff --git a/src/sage/interfaces/interface.py b/src/sage/interfaces/interface.py -index 6baa4eb597c..f8237d3ad94 100644 ---- a/src/sage/interfaces/interface.py -+++ b/src/sage/interfaces/interface.py -@@ -1579,20 +1579,20 @@ def _mul_(self, right): - :: - - sage: f = maxima.function('x','sin(x)') -- sage: g = maxima('-cos(x)') # not a function! -+ sage: g = maxima('cos(x)') # not a function! - sage: f*g -- -cos(x)*sin(x) -+ cos(x)*sin(x) - sage: _(2) -- -cos(2)*sin(2) -+ cos(2)*sin(2) - - :: - - sage: f = maxima.function('x','sin(x)') -- sage: g = maxima('-cos(x)') -+ sage: g = maxima('cos(x)') - sage: g*f -- -cos(x)*sin(x) -+ cos(x)*sin(x) - sage: _(2) -- -cos(2)*sin(2) -+ cos(2)*sin(2) - sage: 2*f - 2*sin(x) - """ -@@ -1612,20 +1612,20 @@ def _div_(self, right): - :: - - sage: f = maxima.function('x','sin(x)') -- sage: g = maxima('-cos(x)') -+ sage: g = maxima('cos(x)') - sage: f/g -- -sin(x)/cos(x) -+ sin(x)/cos(x) - sage: _(2) -- -sin(2)/cos(2) -+ sin(2)/cos(2) - - :: - - sage: f = maxima.function('x','sin(x)') -- sage: g = maxima('-cos(x)') -+ sage: g = maxima('cos(x)') - sage: g/f -- -cos(x)/sin(x) -+ cos(x)/sin(x) - sage: _(2) -- -cos(2)/sin(2) -+ cos(2)/sin(2) - sage: 2/f - 2/sin(x) - """ -diff --git a/src/sage/interfaces/maxima.py b/src/sage/interfaces/maxima.py -index 4829560f98b..959e75459a2 100644 ---- a/src/sage/interfaces/maxima.py -+++ b/src/sage/interfaces/maxima.py -@@ -49,9 +49,14 @@ - - :: - -+ sage: x,y = SR.var('x,y') - sage: F = maxima.factor('x^5 - y^5') -- sage: F -- -(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4) -+ sage: F # not tested - depends on maxima version -+ -((y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4)) -+ sage: actual = F.sage() -+ sage: expected = -(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4) -+ sage: bool(actual == expected) -+ True - sage: type(F) - - -@@ -71,18 +76,19 @@ - - :: - -+ sage: F = maxima('x * y') - sage: repr(F) -- '-(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4)' -+ 'x*y' - sage: F.str() -- '-(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4)' -+ 'x*y' - - The ``maxima.eval`` command evaluates an expression in - maxima and returns the result as a *string* not a maxima object. - - :: - -- sage: print(maxima.eval('factor(x^5 - y^5)')) -- -(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4) -+ sage: print(maxima.eval('factor(x^5 - 1)')) -+ (x-1)*(x^4+x^3+x^2+x+1) - - We can create the polynomial `f` as a Maxima polynomial, - then call the factor method on it. Notice that the notation -@@ -91,11 +97,11 @@ - - :: - -- sage: f = maxima('x^5 - y^5') -+ sage: f = maxima('x^5 + y^5') - sage: f^2 -- (x^5-y^5)^2 -+ (y^5+x^5)^2 - sage: f.factor() -- -(y-x)*(y^4+x*y^3+x^2*y^2+x^3*y+x^4) -+ (y+x)*(y^4-x*y^3+x^2*y^2-x^3*y+x^4) - - Control-C interruption works well with the maxima interface, - because of the excellent implementation of maxima. For example, try -@@ -161,20 +167,20 @@ - - sage: eqn = maxima(['a+b*c=1', 'b-a*c=0', 'a+b=5']) - sage: s = eqn.solve('[a,b,c]'); s -- [[a = -(sqrt(79)*%i-11)/4,b = (sqrt(79)*%i+9)/4, c = (sqrt(79)*%i+1)/10], [a = (sqrt(79)*%i+11)/4,b = -(sqrt(79)*%i-9)/4, c = -(sqrt(79)*%i-1)/10]] -+ [[a = -...(sqrt(79)*%i-11)/4...,b = (sqrt(79)*%i+9)/4, c = (sqrt(79)*%i+1)/10], [a = (sqrt(79)*%i+11)/4,b = -...(sqrt(79)*%i-9)/4..., c = -...(sqrt(79)*%i-1)/10...]] - - Here is an example of solving an algebraic equation:: - - sage: maxima('x^2+y^2=1').solve('y') - [y = -sqrt(1-x^2),y = sqrt(1-x^2)] - sage: maxima('x^2 + y^2 = (x^2 - y^2)/sqrt(x^2 + y^2)').solve('y') -- [y = -sqrt(((-y^2)-x^2)*sqrt(y^2+x^2)+x^2), y = sqrt(((-y^2)-x^2)*sqrt(y^2+x^2)+x^2)] -+ [y = -sqrt((...-y^2...-x^2)*sqrt(y^2+x^2)+x^2), y = sqrt((...-y^2...-x^2)*sqrt(y^2+x^2)+x^2)] - - - You can even nicely typeset the solution in latex:: - - sage: latex(s) -- \left[ \left[ a=-{{\sqrt{79}\,i-11}\over{4}} , b={{\sqrt{79}\,i+9 }\over{4}} , c={{\sqrt{79}\,i+1}\over{10}} \right] , \left[ a={{ \sqrt{79}\,i+11}\over{4}} , b=-{{\sqrt{79}\,i-9}\over{4}} , c=-{{ \sqrt{79}\,i-1}\over{10}} \right] \right] -+ \left[ \left[ a=-...{{\sqrt{79}\,i-11}\over{4}}... , b={{...\sqrt{79}\,i+9...}\over{4}} , c={{\sqrt{79}\,i+1}\over{10}} \right] , \left[ a={{...\sqrt{79}\,i+11}\over{4}} , b=-...{{\sqrt{79}\,i-9...}\over{4}}... , c=-...{{...\sqrt{79}\,i-1}\over{10}}... \right] \right] - - To have the above appear onscreen via ``xdvi``, type - ``view(s)``. (TODO: For OS X should create pdf output -@@ -200,7 +206,7 @@ - sage: f.diff('x') - k*x^3*%e^(k*x)*sin(w*x)+3*x^2*%e^(k*x)*sin(w*x)+w*x^3*%e^(k*x) *cos(w*x) - sage: f.integrate('x') -- (((k*w^6+3*k^3*w^4+3*k^5*w^2+k^7)*x^3 +(3*w^6+3*k^2*w^4-3*k^4*w^2-3*k^6)*x^2+((-18*k*w^4)-12*k^3*w^2+6*k^5)*x-6*w^4 +36*k^2*w^2-6*k^4) *%e^(k*x)*sin(w*x) +(((-w^7)-3*k^2*w^5-3*k^4*w^3-k^6*w)*x^3 +(6*k*w^5+12*k^3*w^3+6*k^5*w)*x^2+(6*w^5-12*k^2*w^3-18*k^4*w)*x-24*k*w^3 +24*k^3*w) *%e^(k*x)*cos(w*x)) /(w^8+4*k^2*w^6+6*k^4*w^4+4*k^6*w^2+k^8) -+ (((k*w^6+3*k^3*w^4+3*k^5*w^2+k^7)*x^3 +(3*w^6+3*k^2*w^4-3*k^4*w^2-3*k^6)*x^2+(...-...18*k*w^4)-12*k^3*w^2+6*k^5)*x-6*w^4 +36*k^2*w^2-6*k^4) *%e^(k*x)*sin(w*x) +((...-w^7...-3*k^2*w^5-3*k^4*w^3-k^6*w)*x^3...+(6*k*w^5+12*k^3*w^3+6*k^5*w)*x^2...+(6*w^5-12*k^2*w^3-18*k^4*w)*x-24*k*w^3 +24*k^3*w) *%e^(k*x)*cos(w*x)) /(w^8+4*k^2*w^6+6*k^4*w^4+4*k^6*w^2+k^8) - - :: - -@@ -234,7 +240,7 @@ - sage: A.eigenvalues() - [[0,4],[3,1]] - sage: A.eigenvectors() -- [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-4/3]],[[1,2,3,4]]]] -+ [[[0,4],[3,1]],[[[1,0,0,-4],[0,1,0,-2],[0,0,1,-...4/3...]],[[1,2,3,4]]]] - - We can also compute the echelon form in Sage:: - -@@ -287,12 +293,12 @@ - :: - - sage: maxima("laplace(diff(x(t),t,2),t,s)") -- (-%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s -+ ...-...%at('diff(x(t),t,1),t = 0))+s^2*'laplace(x(t),t,s)-x(0)*s - - It is difficult to read some of these without the 2d - representation:: - -- sage: print(maxima("laplace(diff(x(t),t,2),t,s)")) -+ sage: print(maxima("laplace(diff(x(t),t,2),t,s)")) # not tested - depends on maxima version - ! - d ! 2 - (- -- (x(t))! ) + s laplace(x(t), t, s) - x(0) s -@@ -396,7 +402,7 @@ - - sage: g = maxima('exp(3*%i*x)/(6*%i) + exp(%i*x)/(2*%i) + c') - sage: latex(g) -- -{{i\,e^{3\,i\,x}}\over{6}}-{{i\,e^{i\,x}}\over{2}}+c -+ -...{{i\,e^{3\,i\,x}}\over{6}}...-{{i\,e^{i\,x}}\over{2}}+c - - Long Input - ---------- -@@ -684,7 +690,7 @@ def _expect_expr(self, expr=None, timeout=None): - sage: maxima.assume('a>0') - [a > 0] - sage: maxima('integrate(1/(x^3*(a+b*x)^(1/3)),x)') -- (-(b^2*log((b*x+a)^(2/3)+a^(1/3)*(b*x+a)^(1/3)+a^(2/3)))/(9*a^(7/3))) +(2*b^2*atan((2*(b*x+a)^(1/3)+a^(1/3))/(sqrt(3)*a^(1/3))))/(3^(3/2)*a^(7/3)) +(2*b^2*log((b*x+a)^(1/3)-a^(1/3)))/(9*a^(7/3)) +(4*b^2*(b*x+a)^(5/3)-7*a*b^2*(b*x+a)^(2/3)) /(6*a^2*(b*x+a)^2-12*a^3*(b*x+a)+6*a^4) -+ ...-...(b^2*log((b*x+a)^(2/3)+a^(1/3)*(b*x+a)^(1/3)+a^(2/3)))/(9*a^(7/3))) +(2*b^2*atan((2*(b*x+a)^(1/3)+a^(1/3))/(sqrt(3)*a^(1/3))))/(3^(3/2)*a^(7/3)) +(2*b^2*log((b*x+a)^(1/3)-a^(1/3)))/(9*a^(7/3)) +(4*b^2*(b*x+a)^(5/3)-7*a*b^2*(b*x+a)^(2/3)) /(6*a^2*(b*x+a)^2-12*a^3*(b*x+a)+6*a^4) - sage: maxima('integrate(x^n,x)') - Traceback (most recent call last): - ... -diff --git a/src/sage/interfaces/maxima_abstract.py b/src/sage/interfaces/maxima_abstract.py -index 4f6306ba4fc..aecfcba5e23 100644 ---- a/src/sage/interfaces/maxima_abstract.py -+++ b/src/sage/interfaces/maxima_abstract.py -@@ -856,9 +856,9 @@ def de_solve(self, de, vars, ics=None): - sage: maxima.de_solve('diff(y,x,2) + 3*x = y', ['x','y']) - y = %k1*%e^x+%k2*%e^-x+3*x - sage: maxima.de_solve('diff(y,x) + 3*x = y', ['x','y']) -- y = (%c-3*((-x)-1)*%e^-x)*%e^x -+ y = (%c-3*(...-x...-1)*%e^-x)*%e^x - sage: maxima.de_solve('diff(y,x) + 3*x = y', ['x','y'],[1,1]) -- y = -%e^-1*(5*%e^x-3*%e*x-3*%e) -+ y = -...%e^-1*(5*%e^x-3*%e*x-3*%e)... - """ - if not isinstance(vars, str): - str_vars = '%s, %s'%(vars[1], vars[0]) -@@ -1572,8 +1572,9 @@ def integral(self, var='x', min=None, max=None): - - :: - -- sage: f = maxima('exp(x^2)').integral('x',0,1); f -- -(sqrt(%pi)*%i*erf(%i))/2 -+ sage: f = maxima('exp(x^2)').integral('x',0,1) -+ sage: f.sage() -+ -1/2*I*sqrt(pi)*erf(I) - sage: f.numer() - 1.46265174590718... - """ -diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py -index bba8504aa92..cd1be891872 100644 ---- a/src/sage/interfaces/maxima_lib.py -+++ b/src/sage/interfaces/maxima_lib.py -@@ -134,10 +134,11 @@ - else: - ecl_eval("(require 'maxima)") - ecl_eval("(in-package :maxima)") --ecl_eval("(setq $nolabels t))") --ecl_eval("(defvar *MAXIMA-LANG-SUBDIR* NIL)") - ecl_eval("(set-locale-subdir)") - -+# This workaround has to happen before any call to (set-pathnames). -+# To be safe please do not call anything other than -+# (set-locale-subdir) before this block. - try: - ecl_eval("(set-pathnames)") - except RuntimeError: -@@ -154,6 +155,8 @@ - # Call `(set-pathnames)` again to complete its job. - ecl_eval("(set-pathnames)") - -+ecl_eval("(initialize-runtime-globals)") -+ecl_eval("(setq $nolabels t))") - ecl_eval("(defun add-lineinfo (x) x)") - ecl_eval('(defun principal nil (cond ($noprincipal (diverg)) ((not pcprntd) (merror "Divergent Integral"))))') - ecl_eval("(remprop 'mfactorial 'grind)") # don't use ! for factorials (#11539) -diff --git a/src/sage/matrix/matrix1.pyx b/src/sage/matrix/matrix1.pyx -index f38c429d994..47df9fc80a5 100644 ---- a/src/sage/matrix/matrix1.pyx -+++ b/src/sage/matrix/matrix1.pyx -@@ -248,7 +248,7 @@ cdef class Matrix(Matrix0): - sage: a = maxima(m); a - matrix([0,1,2],[3,4,5],[6,7,8]) - sage: a.charpoly('x').expand() -- (-x^3)+12*x^2+18*x -+ ...-x^3...+12*x^2+18*x - sage: m.charpoly() - x^3 - 12*x^2 - 18*x - """ -diff --git a/src/sage/modules/free_module_element.pyx b/src/sage/modules/free_module_element.pyx -index 0532ea0c9bd..6ea2bd4473d 100644 ---- a/src/sage/modules/free_module_element.pyx -+++ b/src/sage/modules/free_module_element.pyx -@@ -4053,7 +4053,7 @@ cdef class FreeModuleElement(Vector): # abstract base class - sage: t=var('t') - sage: r=vector([t,t^2,sin(t)]) - sage: vec,answers=r.nintegral(t,0,1) -- sage: vec -+ sage: vec # abs tol 1e-15 - (0.5, 0.3333333333333334, 0.4596976941318602) - sage: type(vec) - -diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py -index a72ab547c76..51dcaf8d847 100644 ---- a/src/sage/symbolic/relation.py -+++ b/src/sage/symbolic/relation.py -@@ -657,7 +657,7 @@ def solve(f, *args, **kwds): - equations, at times approximations will be given by Maxima, due to the - underlying algorithm:: - -- sage: sols = solve([x^3==y,y^2==x], [x,y]); sols[-1], sols[0] -+ sage: sols = solve([x^3==y,y^2==x], [x,y]); sols[-1], sols[0] # abs tol 1e-15 - ([x == 0, y == 0], - [x == (0.3090169943749475 + 0.9510565162951535*I), - y == (-0.8090169943749475 - 0.5877852522924731*I)]) diff --git a/srcpkgs/sagemath/patches/35825-singular_4.3.2p2.patch b/srcpkgs/sagemath/patches/35825-singular_4.3.2p2.patch deleted file mode 100644 index 4d01eeabee6c9..0000000000000 --- a/srcpkgs/sagemath/patches/35825-singular_4.3.2p2.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -index ea027e8a716..a1fe036917e 100644 ---- a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -+++ b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -@@ -1251,7 +1251,7 @@ def leinartas_decomposition(self): - sage: H = R(f.denominator()) - sage: ff = FFPD(G, H.factor()) - sage: decomp = ff.leinartas_decomposition() -- sage: decomp -+ sage: decomp # random - non canonical depends on singular version - (0, []) + - (-(x*y^2*sin(x) + x^2*y + x*y + y*sin(x) + x)*y, [(y, 1)]) + - ((x*y^2*sin(x) + x^2*y + x*y + y*sin(x) + x)*x*y, [(x*y + 1, 1)]) + -@@ -1611,9 +1611,7 @@ def asymptotics(self, p, alpha, N, asy_var=None, numerical=0, - (-16, [(x + 2*y + z - 4, 1), (2*x + y + z - 4, 2)]) - sage: alpha = [3, 3, 2] - sage: decomp = F.asymptotic_decomposition(alpha); decomp -- (0, []) + -- (16*r*(3/x - 2/z) + 16/x - 16/z, -- [(x + 2*y + z - 4, 1), (2*x + y + z - 4, 1)]) -+ (0, []) + (..., [(x + 2*y + z - 4, 1), (2*x + y + z - 4, 1)]) - sage: F1 = decomp[1] - sage: p = {x: 1, y: 1, z: 1} - sage: asy = F1.asymptotics(p, alpha, 2, verbose=True) # long time diff --git a/srcpkgs/sagemath/patches/35826-numpy_1.25.0.patch b/srcpkgs/sagemath/patches/35826-numpy_1.25.0.patch deleted file mode 100644 index 426f841ebbab6..0000000000000 --- a/srcpkgs/sagemath/patches/35826-numpy_1.25.0.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff --git a/src/sage/calculus/desolvers.py b/src/sage/calculus/desolvers.py -index 55ed3a0fe10..4cfa22a97e4 100644 ---- a/src/sage/calculus/desolvers.py -+++ b/src/sage/calculus/desolvers.py -@@ -1598,7 +1598,7 @@ def desolve_odeint(des, ics, times, dvars, ivar=None, compute_jac=False, args=() - sage: ic=epsilon - sage: t=srange(0,2/epsilon,1) - sage: sol=desolve_odeint(f,ic,t,y,rtol=1e-9,atol=1e-10,compute_jac=True) -- sage: p=points(zip(t,sol)) -+ sage: p=points(zip(t,sol[:,0])) - sage: p.show() - - Another stiff system with some optional parameters with no -@@ -1637,7 +1637,7 @@ def desolve_odeint_inner(ivar): - J = fast_float(J, dvar, ivar) - - def Dfun(y, t): -- return [J(y, t)] -+ return [J(y.item(), t)] - - # n-dimensional systems: - else: -diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx -index d5402d5c3b0..a00912951c5 100644 ---- a/src/sage/matrix/matrix2.pyx -+++ b/src/sage/matrix/matrix2.pyx -@@ -430,12 +430,12 @@ cdef class Matrix(Matrix1): - try: - return self.transpose().solve_right(B, check=check) - except ValueError as e: -- raise ValueError(str(e).replace('row', 'column')) -+ raise e.__class__(str(e).replace('row', 'column')) - else: - try: - return self.transpose().solve_right(B.transpose(), check=check).transpose() - except ValueError as e: -- raise ValueError(str(e).replace('row', 'column')) -+ raise e.__class__(str(e).replace('row', 'column')) - - def solve_right(self, B, check=True): - r""" -diff --git a/src/sage/matrix/matrix_numpy_dense.pyx b/src/sage/matrix/matrix_numpy_dense.pyx -index 5b75ed133ff..17867f9a65c 100644 ---- a/src/sage/matrix/matrix_numpy_dense.pyx -+++ b/src/sage/matrix/matrix_numpy_dense.pyx -@@ -382,8 +382,9 @@ cdef class Matrix_numpy_dense(Matrix_dense): - sage: m = matrix(RDF,[[1,2],[3,4]]) - sage: n = m.numpy() - sage: import numpy -- sage: numpy.linalg.eig(n) -- (array([-0.37228132, 5.37228132]), array([[-0.82456484, -0.41597356], -+ sage: tuple(numpy.linalg.eig(n)) -+ (array([-0.37228132, 5.37228132]), -+ array([[-0.82456484, -0.41597356], - [ 0.56576746, -0.90937671]])) - sage: m = matrix(RDF, 2, range(6)); m - [0.0 1.0 2.0] -diff --git a/src/sage/plot/plot3d/list_plot3d.py b/src/sage/plot/plot3d/list_plot3d.py -index d64b766001e..0158f856dbb 100644 ---- a/src/sage/plot/plot3d/list_plot3d.py -+++ b/src/sage/plot/plot3d/list_plot3d.py -@@ -602,7 +602,7 @@ def g(x, y): - from .parametric_surface import ParametricSurface - - def g(x, y): -- z = f([x, y]) -+ z = f([x, y]).item() - return (x, y, z) - G = ParametricSurface(g, (list(numpy.r_[xmin:xmax:num_points * j]), - list(numpy.r_[ymin:ymax:num_points * j])), -diff --git a/src/sage/plot/plot3d/plot3d.py b/src/sage/plot/plot3d/plot3d.py -index e9bbfaa8370..9ba89595d70 100644 ---- a/src/sage/plot/plot3d/plot3d.py -+++ b/src/sage/plot/plot3d/plot3d.py -@@ -378,7 +378,7 @@ def to_cartesian(self, func, params=None): - ....: [ 0.16763356, 0.19993708, 0.31403568, 0.47359696, 0.55282422], - ....: [ 0.16763356, 0.25683223, 0.16649297, 0.10594339, 0.55282422]]) - sage: import scipy.interpolate -- sage: f=scipy.interpolate.RectBivariateSpline(v_phi,v_theta,m_r) -+ sage: f=scipy.interpolate.RectBivariateSpline(v_phi,v_theta,m_r).ev - sage: spherical_plot3d(f,(0,2*pi),(0,pi)) - Graphics3d Object - diff --git a/srcpkgs/sagemath/patches/35831-setuptools_68.0.0.patch b/srcpkgs/sagemath/patches/35831-setuptools_68.0.0.patch deleted file mode 100644 index dec7851e027d1..0000000000000 --- a/srcpkgs/sagemath/patches/35831-setuptools_68.0.0.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/sage/all__sagemath_repl.py b/src/sage/all__sagemath_repl.py -index 6800eb9a27b..8d0b43679ca 100644 ---- a/src/sage/all__sagemath_repl.py -+++ b/src/sage/all__sagemath_repl.py -@@ -44,7 +44,7 @@ - warnings.filterwarnings('ignore', category=DeprecationWarning, - message='pkg_resources is deprecated as an API|' - 'Deprecated call to `pkg_resources.declare_namespace(.*)`', -- module='pkg_resources') -+ module='pkg_resources|setuptools.sandbox') - warnings.filterwarnings('ignore', category=DeprecationWarning, - message='msvccompiler is deprecated and slated to be removed', - module='distutils.msvccompiler') diff --git a/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch b/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch new file mode 100644 index 0000000000000..7c55bce6e9bb4 --- /dev/null +++ b/srcpkgs/sagemath/patches/35934-singular_4.3.2p7.patch @@ -0,0 +1,221 @@ +diff --git a/build/pkgs/singular/checksums.ini b/build/pkgs/singular/checksums.ini +index 313463d2fea..1101fc55700 100644 +--- a/build/pkgs/singular/checksums.ini ++++ b/build/pkgs/singular/checksums.ini +@@ -1,5 +1,5 @@ + tarball=singular-VERSION.tar.gz +-sha1=28bb3ee97ef48d04dfa96de182fd93eebe08426c +-md5=fc0a4f5720dadba45a52ee94324ce00c +-cksum=1573851737 +-upstream_url=ftp://jim.mathematik.uni-kl.de/pub/Math/Singular/SOURCES/4-3-1/singular-VERSION.tar.gz ++sha1=df1997f412580f2073295aba569bb955ad227317 ++md5=50349213e206a18cdaa1bc410dde7ea4 ++cksum=376854707 ++upstream_url=ftp://jim.mathematik.uni-kl.de/pub/Math/Singular/SOURCES/4-3-2/singular-VERSION.tar.gz +diff --git a/build/pkgs/singular/package-version.txt b/build/pkgs/singular/package-version.txt +index 66e2bede53a..9f1bf008217 100644 +--- a/build/pkgs/singular/package-version.txt ++++ b/build/pkgs/singular/package-version.txt +@@ -1 +1 @@ +-4.3.1p3 ++4.3.2p7 +diff --git a/build/pkgs/singular/spkg-configure.m4 b/build/pkgs/singular/spkg-configure.m4 +index 6a85631f624..f7621ec5fa1 100644 +--- a/build/pkgs/singular/spkg-configure.m4 ++++ b/build/pkgs/singular/spkg-configure.m4 +@@ -6,14 +6,27 @@ SAGE_SPKG_CONFIGURE([singular], [ + AS_IF([test -z "${SINGULAR_BIN}"], [sage_spkg_install_singular=yes], [ + dnl Use pkg-config to ensure that Singular is new enough. + PKG_CHECK_MODULES([SINGULAR], [Singular >= 4.2.1], [ +- AC_MSG_CHECKING([that Singular's help is working]) +- AS_IF([test x`printf "system(\"--browser\", \"builtin\"); \n help;" | Singular 2>&1 | grep "error occurred"` = x], [ +- AC_MSG_RESULT(yes) +- ], [ +- AC_MSG_RESULT(no) +- sage_spkg_install_singular=yes +- ] +- )], [ ++ AC_MSG_CHECKING([whether Singular is built with FLINT]) ++ AC_COMPILE_IFELSE([ ++ AC_LANG_PROGRAM([ ++ #include ++ #if !defined(HAVE_FLINT) ++ # error "Need Singular compiled with FLINT" ++ ], []) ++ ], [ ++ AC_MSG_RESULT([yes]) ++ AC_MSG_CHECKING([that Singular's help is working]) ++ AS_IF([test x`printf "system(\"--browser\", \"builtin\"); \n help;" | Singular 2>&1 | grep "error occurred"` = x], [ ++ AC_MSG_RESULT(yes) ++ ], [ ++ AC_MSG_RESULT(no) ++ sage_spkg_install_singular=yes ++ ]) ++ ], [ ++ AC_MSG_RESULT([no]) ++ sage_spkg_install_singular=yes ++ ]) ++ ], [ + dnl pkg-config version check failed + sage_spkg_install_singular=yes + ]) +diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py +index b15cc1c602c..4b5c76e2bfa 100644 +--- a/src/sage/interfaces/singular.py ++++ b/src/sage/interfaces/singular.py +@@ -604,8 +604,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds): + sage: i = singular.ideal(['x^2','y^2','z^2']) + sage: s = i.std() + sage: singular.eval('hilb(%s)'%(s.name())) +- '// 1 t^0\n// -3 t^2\n// 3 t^4\n// -1 t^6\n\n// 1 t^0\n// +- 3 t^1\n// 3 t^2\n// 1 t^3\n// dimension (affine) = 0\n// ++ '...// dimension (affine) = 0\n// + degree (affine) = 8' + + :: +@@ -613,15 +612,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds): + sage: from sage.misc.verbose import set_verbose + sage: set_verbose(1) + sage: o = singular.eval('hilb(%s)'%(s.name())) +- // 1 t^0 +- // -3 t^2 +- // 3 t^4 +- // -1 t^6 +- // 1 t^0 +- // 3 t^1 +- // 3 t^2 +- // 1 t^3 +- // dimension (affine) = 0 ++ ...// dimension (affine) = 0 + // degree (affine) = 8 + + This is mainly useful if this method is called implicitly. Because +@@ -631,15 +622,7 @@ def eval(self, x, allow_semicolon=True, strip=True, **kwds): + :: + + sage: o = s.hilb() +- // 1 t^0 +- // -3 t^2 +- // 3 t^4 +- // -1 t^6 +- // 1 t^0 +- // 3 t^1 +- // 3 t^2 +- // 1 t^3 +- // dimension (affine) = 0 ++ ...// dimension (affine) = 0 + // degree (affine) = 8 + // ** right side is not a datum, assignment ignored + ... +diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx +index f40346d1fd0..c597c63aafe 100644 +--- a/src/sage/libs/singular/function.pyx ++++ b/src/sage/libs/singular/function.pyx +@@ -1241,32 +1241,22 @@ cdef class SingularFunction(SageObject): + sage: I = Ideal([x^3*y^2 + 3*x^2*y^2*z + y^3*z^2 + z^5]) + sage: I = Ideal(I.groebner_basis()) + sage: hilb = sage.libs.singular.function_factory.ff.hilb +- sage: hilb(I) # Singular will print // ** _ is no standard basis +- // ** _ is no standard basis +- // 1 t^0 +- // -1 t^5 +- +- // 1 t^0 +- // 1 t^1 +- // 1 t^2 +- // 1 t^3 +- // 1 t^4 +- // dimension (proj.) = 1 +- // degree (proj.) = 5 ++ sage: from sage.misc.sage_ostools import redirection ++ sage: out = tmp_filename() ++ sage: with redirection(sys.stdout, open(out, 'w')): ++ ....: hilb(I) # Singular will print // ** _ is no standard basis ++ sage: with open(out) as f: ++ ....: 'is no standard basis' in f.read() ++ True + + So we tell Singular that ``I`` is indeed a Groebner basis:: + +- sage: hilb(I,attributes={I:{'isSB':1}}) # no complaint from Singular +- // 1 t^0 +- // -1 t^5 +- +- // 1 t^0 +- // 1 t^1 +- // 1 t^2 +- // 1 t^3 +- // 1 t^4 +- // dimension (proj.) = 1 +- // degree (proj.) = 5 ++ sage: out = tmp_filename() ++ sage: with redirection(sys.stdout, open(out, 'w')): ++ ....: hilb(I,attributes={I:{'isSB':1}}) # no complaint from Singular ++ sage: with open(out) as f: ++ ....: 'is no standard basis' in f.read() ++ False + + + TESTS: +diff --git a/src/sage/rings/polynomial/multi_polynomial_ideal.py b/src/sage/rings/polynomial/multi_polynomial_ideal.py +index 22ada6de947..80352700872 100644 +--- a/src/sage/rings/polynomial/multi_polynomial_ideal.py ++++ b/src/sage/rings/polynomial/multi_polynomial_ideal.py +@@ -3132,13 +3132,16 @@ def hilbert_numerator(self, grading=None, algorithm='sage'): + sage: I.hilbert_numerator() # needs sage.rings.number_field + -t^5 + 1 + +- This example returns a wrong answer due to an integer overflow in Singular:: ++ This example returns a wrong answer in singular < 4.3.2p4 due to an integer overflow:: + + sage: n=4; m=11; P = PolynomialRing(QQ, n*m, "x"); x = P.gens(); M = Matrix(n, x) + sage: I = P.ideal(M.minors(2)) + sage: J = P * [m.lm() for m in I.groebner_basis()] +- sage: J.hilbert_numerator(algorithm='singular') +- ...120*t^33 - 3465*t^32 + 48180*t^31 - ... ++ sage: J.hilbert_numerator(algorithm='singular') # known bug ++ Traceback (most recent call last): ++ .... ++ RuntimeError: error in Singular function call 'hilb': ++ overflow at t^22 + + Our two algorithms should always agree; not tested until + :trac:`33178` is fixed:: +diff --git a/src/sage/sandpiles/sandpile.py b/src/sage/sandpiles/sandpile.py +index 02d2021b2fb..c8e15e06f05 100644 +--- a/src/sage/sandpiles/sandpile.py ++++ b/src/sage/sandpiles/sandpile.py +@@ -2493,9 +2493,15 @@ def _set_ideal(self): + sage: '_ideal' in S.__dict__ + True + """ ++ from sage.libs.singular.function_factory import ff ++ try: ++ sat = ff.elim__lib.sat_with_exp ++ except NameError: ++ sat = ff.elim__lib.sat + R = self.ring() +- I = self._unsaturated_ideal._singular_() +- self._ideal = R.ideal(I.sat(prod(R.gens())._singular_())[1]) ++ I = self._unsaturated_ideal ++ I_sat_gens = sat(I, prod(R.gens()))[0] ++ self._ideal = R.ideal(I_sat_gens) + + def unsaturated_ideal(self): + r""" +diff --git a/src/sage/schemes/projective/projective_subscheme.py b/src/sage/schemes/projective/projective_subscheme.py +index e6caf19ba74..afd6484d779 100644 +--- a/src/sage/schemes/projective/projective_subscheme.py ++++ b/src/sage/schemes/projective/projective_subscheme.py +@@ -1001,7 +1001,10 @@ def dual(self): + for i in range(n + 1): + J = J + S.ideal(z[-1] * f_S.derivative(z[i]) - z[i + n + 1]) + +- sat = ff.elim__lib.sat ++ try: ++ sat = ff.elim__lib.sat_with_exp ++ except NameError: ++ sat = ff.elim__lib.sat + + max_ideal = S.ideal(z[n + 1: 2 * n + 2]) + J_sat_gens = sat(J, max_ideal)[0] diff --git a/srcpkgs/sagemath/patches/36006-gmp_6.3.0.patch b/srcpkgs/sagemath/patches/36006-gmp_6.3.0.patch new file mode 100644 index 0000000000000..91a77de342935 --- /dev/null +++ b/srcpkgs/sagemath/patches/36006-gmp_6.3.0.patch @@ -0,0 +1,38 @@ +diff --git a/src/sage/ext/memory.pyx b/src/sage/ext/memory.pyx +index 1de6dedab82..b95130b19dd 100644 +--- a/src/sage/ext/memory.pyx ++++ b/src/sage/ext/memory.pyx +@@ -3,14 +3,14 @@ Low-level memory allocation functions + + TESTS: + +-Check that a ``MemoryError`` is raised if we try to allocate a ++Check that an error is raised if we try to allocate a + ridiculously large integer, see :trac:`15363`:: + +- sage: 2^(2^63-3) +- Traceback (most recent call last): +- ... +- OverflowError: exponent must be at most 2147483647 # 32-bit +- RuntimeError: Aborted # 64-bit ++ sage: try: ++ ....: 2^(2^63-3) ++ ....: except (OverflowError, RuntimeError, FloatingPointError): ++ ....: print ('Overflow error') ++ ...Overflow error + + AUTHORS: + +diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx +index 2cd080ddafa..090ab59cb28 100644 +--- a/src/sage/rings/integer.pyx ++++ b/src/sage/rings/integer.pyx +@@ -6654,7 +6654,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): + sage: try: + ....: print('Possible error output from gmp', flush=True) + ....: 1 << (2^60) +- ....: except (MemoryError, OverflowError, RuntimeError): ++ ....: except (MemoryError, OverflowError, RuntimeError, FloatingPointError): + ....: pass + ....: else: + ....: print("Failed to raise exception") diff --git a/srcpkgs/sagemath/patches/36046-fix_memory_leak.patch b/srcpkgs/sagemath/patches/36046-fix_memory_leak.patch new file mode 100644 index 0000000000000..3d2a4bd9cd96f --- /dev/null +++ b/srcpkgs/sagemath/patches/36046-fix_memory_leak.patch @@ -0,0 +1,740 @@ +diff --git a/src/sage/ext_data/valgrind/valgrind-python.supp b/src/sage/ext_data/valgrind/valgrind-python.supp +new file mode 100644 +index 00000000000..16aa2858484 +--- /dev/null ++++ b/src/sage/ext_data/valgrind/valgrind-python.supp +@@ -0,0 +1,480 @@ ++# From the CPython repository with the suppressions for _PyObject_Free ++# and _PyObject_Realloc enabled. See the upstream suppression file for ++# details: ++# ++# https://github.com/python/cpython/blob/main/Misc/valgrind-python.supp ++ ++# all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Addr4 ++ fun:address_in_range ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Value4 ++ fun:address_in_range ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) ++ Memcheck:Value8 ++ fun:address_in_range ++} ++ ++{ ++ ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value ++ Memcheck:Cond ++ fun:address_in_range ++} ++ ++# ++# Leaks (including possible leaks) ++# Hmmm, I wonder if this masks some real leaks. I think it does. ++# Will need to fix that. ++# ++ ++{ ++ Suppress leaking the GIL after a fork. ++ Memcheck:Leak ++ fun:malloc ++ fun:PyThread_allocate_lock ++ fun:PyEval_ReInitThreads ++} ++ ++{ ++ Suppress leaking the autoTLSkey. This looks like it shouldn't leak though. ++ Memcheck:Leak ++ fun:malloc ++ fun:PyThread_create_key ++ fun:_PyGILState_Init ++ fun:Py_InitializeEx ++ fun:Py_Main ++} ++ ++{ ++ Hmmm, is this a real leak or like the GIL? ++ Memcheck:Leak ++ fun:malloc ++ fun:PyThread_ReInitTLS ++} ++ ++{ ++ Handle PyMalloc confusing valgrind (possibly leaked) ++ Memcheck:Leak ++ fun:realloc ++ fun:_PyObject_GC_Resize ++ fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING ++} ++ ++{ ++ Handle PyMalloc confusing valgrind (possibly leaked) ++ Memcheck:Leak ++ fun:malloc ++ fun:_PyObject_GC_New ++ fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING ++} ++ ++{ ++ Handle PyMalloc confusing valgrind (possibly leaked) ++ Memcheck:Leak ++ fun:malloc ++ fun:_PyObject_GC_NewVar ++ fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING ++} ++ ++# ++# Non-python specific leaks ++# ++ ++{ ++ Handle pthread issue (possibly leaked) ++ Memcheck:Leak ++ fun:calloc ++ fun:allocate_dtv ++ fun:_dl_allocate_tls_storage ++ fun:_dl_allocate_tls ++} ++ ++{ ++ Handle pthread issue (possibly leaked) ++ Memcheck:Leak ++ fun:memalign ++ fun:_dl_allocate_tls_storage ++ fun:_dl_allocate_tls ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Addr4 ++ fun:_PyObject_Free ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Value4 ++ fun:_PyObject_Free ++} ++ ++{ ++ ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ++ Memcheck:Addr8 ++ fun:_PyObject_Free ++} ++ ++{ ++ ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ++ Memcheck:Value8 ++ fun:_PyObject_Free ++} ++ ++{ ++ ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value ++ Memcheck:Cond ++ fun:_PyObject_Free ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Addr4 ++ fun:_PyObject_Realloc ++} ++ ++{ ++ ADDRESS_IN_RANGE/Invalid read of size 4 ++ Memcheck:Value4 ++ fun:_PyObject_Realloc ++} ++ ++{ ++ ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ++ Memcheck:Addr8 ++ fun:_PyObject_Realloc ++} ++ ++{ ++ ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ++ Memcheck:Value8 ++ fun:_PyObject_Realloc ++} ++ ++{ ++ ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value ++ Memcheck:Cond ++ fun:_PyObject_Realloc ++} ++ ++### ++### All the suppressions below are for errors that occur within libraries ++### that Python uses. The problems to not appear to be related to Python's ++### use of the libraries. ++### ++ ++{ ++ Generic ubuntu ld problems ++ Memcheck:Addr8 ++ obj:/lib/ld-2.4.so ++ obj:/lib/ld-2.4.so ++ obj:/lib/ld-2.4.so ++ obj:/lib/ld-2.4.so ++} ++ ++{ ++ Generic gentoo ld problems ++ Memcheck:Cond ++ obj:/lib/ld-2.3.4.so ++ obj:/lib/ld-2.3.4.so ++ obj:/lib/ld-2.3.4.so ++ obj:/lib/ld-2.3.4.so ++} ++ ++{ ++ DBM problems, see test_dbm ++ Memcheck:Param ++ write(buf) ++ fun:write ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ fun:dbm_close ++} ++ ++{ ++ DBM problems, see test_dbm ++ Memcheck:Value8 ++ fun:memmove ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ fun:dbm_store ++ fun:dbm_ass_sub ++} ++ ++{ ++ DBM problems, see test_dbm ++ Memcheck:Cond ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ fun:dbm_store ++ fun:dbm_ass_sub ++} ++ ++{ ++ DBM problems, see test_dbm ++ Memcheck:Cond ++ fun:memmove ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ obj:/usr/lib/libdb1.so.2 ++ fun:dbm_store ++ fun:dbm_ass_sub ++} ++ ++{ ++ GDBM problems, see test_gdbm ++ Memcheck:Param ++ write(buf) ++ fun:write ++ fun:gdbm_open ++ ++} ++ ++{ ++ Uninitialised byte(s) false alarm, see bpo-35561 ++ Memcheck:Param ++ epoll_ctl(event) ++ fun:epoll_ctl ++ fun:pyepoll_internal_ctl ++} ++ ++{ ++ ZLIB problems, see test_gzip ++ Memcheck:Cond ++ obj:/lib/libz.so.1.2.3 ++ obj:/lib/libz.so.1.2.3 ++ fun:deflate ++} ++ ++{ ++ Avoid problems w/readline doing a putenv and leaking on exit ++ Memcheck:Leak ++ fun:malloc ++ fun:xmalloc ++ fun:sh_set_lines_and_columns ++ fun:_rl_get_screen_size ++ fun:_rl_init_terminal_io ++ obj:/lib/libreadline.so.4.3 ++ fun:rl_initialize ++} ++ ++# Valgrind emits "Conditional jump or move depends on uninitialised value(s)" ++# false alarms on GCC builtin strcmp() function. The GCC code is correct. ++# ++# Valgrind bug: https://bugs.kde.org/show_bug.cgi?id=264936 ++{ ++ bpo-38118: Valgrind emits false alarm on GCC builtin strcmp() ++ Memcheck:Cond ++ fun:PyUnicode_Decode ++} ++ ++ ++### ++### These occur from somewhere within the SSL, when running ++### test_socket_sll. They are too general to leave on by default. ++### ++###{ ++### somewhere in SSL stuff ++### Memcheck:Cond ++### fun:memset ++###} ++###{ ++### somewhere in SSL stuff ++### Memcheck:Value4 ++### fun:memset ++###} ++### ++###{ ++### somewhere in SSL stuff ++### Memcheck:Cond ++### fun:MD5_Update ++###} ++### ++###{ ++### somewhere in SSL stuff ++### Memcheck:Value4 ++### fun:MD5_Update ++###} ++ ++# Fedora's package "openssl-1.0.1-0.1.beta2.fc17.x86_64" on x86_64 ++# See http://bugs.python.org/issue14171 ++{ ++ openssl 1.0.1 prng 1 ++ Memcheck:Cond ++ fun:bcmp ++ fun:fips_get_entropy ++ fun:FIPS_drbg_instantiate ++ fun:RAND_init_fips ++ fun:OPENSSL_init_library ++ fun:SSL_library_init ++ fun:init_hashlib ++} ++ ++{ ++ openssl 1.0.1 prng 2 ++ Memcheck:Cond ++ fun:fips_get_entropy ++ fun:FIPS_drbg_instantiate ++ fun:RAND_init_fips ++ fun:OPENSSL_init_library ++ fun:SSL_library_init ++ fun:init_hashlib ++} ++ ++{ ++ openssl 1.0.1 prng 3 ++ Memcheck:Value8 ++ fun:_x86_64_AES_encrypt_compact ++ fun:AES_encrypt ++} ++ ++# ++# All of these problems come from using test_socket_ssl ++# ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:BN_bin2bn ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:BN_num_bits_word ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ fun:BN_num_bits_word ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:BN_mod_exp_mont_word ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:BN_mod_exp_mont ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Param ++ write(buf) ++ fun:write ++ obj:/usr/lib/libcrypto.so.0.9.7 ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:RSA_verify ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ fun:RSA_verify ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ fun:DES_set_key_unchecked ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ fun:DES_encrypt2 ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ obj:/usr/lib/libssl.so.0.9.7 ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ obj:/usr/lib/libssl.so.0.9.7 ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:BUF_MEM_grow_clean ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:memcpy ++ fun:ssl3_read_bytes ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Cond ++ fun:SHA1_Update ++} ++ ++{ ++ from test_socket_ssl ++ Memcheck:Value4 ++ fun:SHA1_Update ++} ++ ++{ ++ test_buffer_non_debug ++ Memcheck:Addr4 ++ fun:PyUnicodeUCS2_FSConverter ++} ++ ++{ ++ test_buffer_non_debug ++ Memcheck:Addr4 ++ fun:PyUnicode_FSConverter ++} ++ ++{ ++ wcscmp_false_positive ++ Memcheck:Addr8 ++ fun:wcscmp ++ fun:_PyOS_GetOpt ++ fun:Py_Main ++ fun:main ++} ++ ++# Additional suppressions for the unified decimal tests: ++{ ++ test_decimal ++ Memcheck:Addr4 ++ fun:PyUnicodeUCS2_FSConverter ++} ++ ++{ ++ test_decimal2 ++ Memcheck:Addr4 ++ fun:PyUnicode_FSConverter ++} ++ +diff --git a/src/sage/symbolic/ginac/numeric.cpp b/src/sage/symbolic/ginac/numeric.cpp +index b40ed64edb5..8c55861c147 100644 +--- a/src/sage/symbolic/ginac/numeric.cpp ++++ b/src/sage/symbolic/ginac/numeric.cpp +@@ -1576,6 +1576,62 @@ const numeric numeric::div(const numeric &other) const { + } + } + ++ ++// Compute `a^b` as an integer, where a is an integer. Assign to ``res``` if it is integral, or return ``false``. ++// The nonnegative real root is taken for even denominators. To be used inside numeric::integer_rational_power, ++// to handle the special case of integral ``a``. ++bool integer_rational_power_of_mpz( ++ numeric& res, ++ const numeric& a, ++ const numeric& b ++) { ++ if (a.t != MPZ) ++ throw std::runtime_error("integer_rational_power_of_mpz: bad input"); ++ mpz_t z; ++ mpz_init(z); ++ mpz_set_ui(z, 0); ++ int sgn = mpz_sgn(a.v._bigint); ++ if (mpz_cmp_ui(a.v._bigint, 1) == 0 ++ or mpz_cmp_ui(mpq_numref(b.v._bigrat), 0) == 0) ++ mpz_set_ui(z, 1); ++ else if (sgn == 0) { ++ res = *_num0_p; ++ mpz_clear(z); ++ return true; ++ } ++ else if (sgn < 0 and mpz_cmp_ui(mpq_denref(b.v._bigrat), 1)) { ++ mpz_clear(z); ++ return false; ++ } else { ++ if (not mpz_fits_ulong_p(mpq_numref(b.v._bigrat)) ++ or not mpz_fits_ulong_p(mpq_denref(b.v._bigrat))) { ++ // too big to take roots/powers ++ mpz_clear(z); ++ return false; ++ } ++ if (mpz_cmp_ui(mpq_denref(b.v._bigrat), 2) == 0) { ++ if (mpz_perfect_square_p(a.v._bigint)) { ++ mpz_sqrt(z, a.v._bigint); ++ } else { ++ mpz_clear(z); ++ return false; ++ } ++ } ++ else { ++ bool exact = mpz_root(z, a.v._bigint, ++ mpz_get_ui(mpq_denref(b.v._bigrat))); ++ if (not exact) { ++ mpz_clear(z); ++ return false; ++ } ++ } ++ mpz_pow_ui(z, z, mpz_get_ui(mpq_numref(b.v._bigrat))); ++ } ++ res = numeric(z); // transfers ownership, no mpz_clear ++ return true; ++} ++ ++ + // Compute `a^b` as an integer, if it is integral, or return ``false``. + // The nonnegative real root is taken for even denominators. + bool numeric::integer_rational_power(numeric& res, +@@ -1598,13 +1654,12 @@ bool numeric::integer_rational_power(numeric& res, + if (a.v._long < 0 + and mpz_cmp_ui(mpq_denref(b.v._bigrat), 1)) + return false; +- long z; + if (not mpz_fits_ulong_p(mpq_numref(b.v._bigrat)) + or not mpz_fits_ulong_p(mpq_denref(b.v._bigrat))) + // too big to take roots/powers + return false; + if (b.is_equal(*_num1_2_p)) { +- z = std::lround(std::sqrt(a.v._long)); ++ long z = std::lround(std::sqrt(a.v._long)); + if (a.v._long == z*z) { + res = numeric(z); + return true; +@@ -1613,44 +1668,11 @@ bool numeric::integer_rational_power(numeric& res, + } + return integer_rational_power(res, a.to_bigint(), b); + } +- if (a.t != MPZ) +- throw std::runtime_error("integer_rational_power: bad input"); +- int sgn = mpz_sgn(a.v._bigint); +- mpz_t z; +- mpz_init(z); +- mpz_set_ui(z, 0); +- if (mpz_cmp_ui(a.v._bigint, 1) == 0 +- or mpz_cmp_ui(mpq_numref(b.v._bigrat), 0) == 0) +- mpz_set_ui(z, 1); +- else if (sgn == 0) { +- res = *_num0_p; +- return true; +- } +- else if (sgn < 0 and mpz_cmp_ui(mpq_denref(b.v._bigrat), 1)) +- return false; +- else { +- if (not mpz_fits_ulong_p(mpq_numref(b.v._bigrat)) +- or not mpz_fits_ulong_p(mpq_denref(b.v._bigrat))) +- // too big to take roots/powers +- return false; +- if (mpz_cmp_ui(mpq_denref(b.v._bigrat), 2) == 0) { +- if (mpz_perfect_square_p(a.v._bigint)) +- mpz_sqrt(z, a.v._bigint); +- else +- return false; +- } +- else { +- bool exact = mpz_root(z, a.v._bigint, +- mpz_get_ui(mpq_denref(b.v._bigrat))); +- if (not exact) +- return false; +- } +- mpz_pow_ui(z, z, mpz_get_ui(mpq_numref(b.v._bigrat))); +- } +- res = numeric(z); +- return true; ++ // otherwise: a is integer ++ return integer_rational_power_of_mpz(res, a, b); + } + ++ + // for a^b return c,d such that a^b = c*d^b + // only for MPZ/MPQ base and MPQ exponent + void rational_power_parts(const numeric& a_orig, const numeric& b_orig, +diff --git a/src/sage/tests/memcheck/__init__.py b/src/sage/tests/memcheck/__init__.py +new file mode 100644 +index 00000000000..e69de29bb2d +diff --git a/src/sage/tests/memcheck/run_tests.py b/src/sage/tests/memcheck/run_tests.py +new file mode 100644 +index 00000000000..6ff4503a81b +--- /dev/null ++++ b/src/sage/tests/memcheck/run_tests.py +@@ -0,0 +1,24 @@ ++import types ++ ++ ++def run_tests() -> None: ++ """ ++ Run all memcheck tests ++ """ ++ from sage.tests.memcheck import symbolic_expression ++ run_tests_in_module(symbolic_expression) ++ ++ ++def run_tests_in_module(mod: types.ModuleType) -> None: ++ """ ++ Run all memcheck tests in the given module ++ """ ++ for entry in dir(mod): ++ if not entry.startswith('test_'): ++ continue ++ test_func = getattr(mod, entry) ++ test_func() ++ ++ ++if __name__ == '__main__': ++ run_tests() +diff --git a/src/sage/tests/memcheck/run_tests_in_valgrind.py b/src/sage/tests/memcheck/run_tests_in_valgrind.py +new file mode 100644 +index 00000000000..df5ad0e92b2 +--- /dev/null ++++ b/src/sage/tests/memcheck/run_tests_in_valgrind.py +@@ -0,0 +1,35 @@ ++""" ++Launch valgrind and run the memory leak tests ++ ++ ++From the commandline, run ++ ++ sage -python -m sage.tests.memcheck.run_tests_in_valgrind ++ ++to launch valgrind and execute the memory leak tests. Requires valgrind ++to be installed. Alternatively, run as a unit test: ++ ++ sage: from sage.tests.memcheck.run_tests_in_valgrind import run_tests_in_valgrind ++ sage: run_tests_in_valgrind() # optional - valgrind ++""" ++ ++import subprocess ++ ++ ++def run_tests_in_valgrind() -> None: ++ """ ++ Run the sage.tests.memcheck.run_tests module inside valgrind ++ """ ++ subprocess.check_call([ ++ 'valgrind', ++ '--suppressions=src/sage/ext_data/valgrind/valgrind-python.supp', ++ '--show-possibly-lost=no', ++ '--show-reachable=no', ++ './venv/bin/python', ++ '-m', ++ 'sage.tests.memcheck.run_tests' ++ ]) ++ ++ ++if __name__ == '__main__': ++ run_tests_in_valgrind() +diff --git a/src/sage/tests/memcheck/symbolic_expression.py b/src/sage/tests/memcheck/symbolic_expression.py +new file mode 100644 +index 00000000000..52182fbe62d +--- /dev/null ++++ b/src/sage/tests/memcheck/symbolic_expression.py +@@ -0,0 +1,11 @@ ++from sage.tests.memcheck.verify_no_leak import verify_no_leak ++ ++ ++def test_sqrt_sqrt_2() -> None: ++ from sage.misc.functional import sqrt ++ T2 = sqrt(2) ++ ++ def sqrt_T2() -> None: ++ sqrt(T2) ++ ++ verify_no_leak(sqrt_T2) +diff --git a/src/sage/tests/memcheck/verify_no_leak.py b/src/sage/tests/memcheck/verify_no_leak.py +new file mode 100644 +index 00000000000..89ca90cf89c +--- /dev/null ++++ b/src/sage/tests/memcheck/verify_no_leak.py +@@ -0,0 +1,27 @@ ++from typing import Tuple, Sequence, List, Callable, Any ++import valgrind ++ ++ ++def verify_no_leak(callback: Callable[[], Any], ++ repeat: int = 10000, ++ fuzzy: int = 10, ++ ) -> None: ++ """ ++ Verify that the callback does not generate new definitely lost blocks ++ ++ Raises an assertion if the callback leaks memory ++ """ ++ callback() # warm_up ++ initial_blocks = (0, 0, 0, 0) ++ valgrind.memcheck_do_leak_check() ++ initial_blocks = valgrind.memcheck_count_leak_blocks() ++ for _ in range(repeat): ++ callback() ++ valgrind.memcheck_do_leak_check() ++ leak_blocks = valgrind.memcheck_count_leak_blocks() ++ leak = leak_blocks[0] - initial_blocks[0] ++ if leak < repeat - fuzzy: ++ return # callback did not leak at least once per call ++ blocks = round(leak / repeat, 2) ++ message = f'{callback} leaked {blocks} block on average ({repeat} iterations)' ++ raise AssertionError(message) diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 888c66f779e09..c2c5aa1c7eccd 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -1,7 +1,9 @@ #! /bin/sh +version=10.1 + URL_BASE_PR="https://github.com/sagemath/sage/pull/" -URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/10.0..." +URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..." case "$1" in -n) DO=echo ;; @@ -18,18 +20,10 @@ get_pr() { # run from patches dir cd $(dirname "$0") -# merged in 10.0.beta0 -get_pr 35584 "networkx 3.1" - -# merged in 10.0.beta1 -get_pr 35612 "linbox 1.7.0" -get_pr 35635 "sympy 1.12" -get_pr 35619 "maxima 5.46.0" +# merged in 10.2.beta0 +#get_pr 36018 "singular 4.3.2p4" # included in #35934 +get_pr 36046 "fix memory leak" # positive review -get_pr 35707 "maxima 5.47.0" -get_pr 35831 "setuptools 68.0.0" - -# needs review -get_pr 35825 "singular 4.3.2p2" -get_pr 35826 "numpy 1.25.0" +get_pr 35934 "singular 4.3.2p7" +get_pr 36006 "gmp 6.3.0" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index 2491d77dbc8d9..bccf7d3a28d23 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,13 +1,13 @@ # Template file for 'sagemath' pkgname=sagemath -version=10.0 -revision=2 +version=10.1 +revision=1 build_wrksrc=pkgs/sagemath-standard build_style=python3-module _bindir=/usr/lib/sagemath/$version/bin make_install_args="--install-scripts=$_bindir" -hostmakedepends="m4 pkg-config python3-Cython python3-Jinja2 python3-pkgconfig - python3-setuptools" +hostmakedepends="m4 pkg-config python3-Cython0.29 python3-Jinja2 + python3-pkgconfig python3-setuptools" makedepends="arb-devel boost-devel brial-devel cliquer-devel ecl eclib-devel ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-devel glpk-devel gsl-devel iml-devel lcalc-devel libbraiding-devel libhomfly-devel libmpc-devel @@ -15,10 +15,10 @@ makedepends="arb-devel boost-devel brial-devel cliquer-devel ecl eclib-devel mpfr-devel ntl-devel openblas-devel pari-devel planarity-devel python3-cypari2 python3-cysignals python3-devel python3-gmpy2 python3-memory_allocator python3-numpy rankwidth-devel singular symmetrica-devel" -depends="FlintQS eclib-devel fflas-ffpack flintlib-devel gcc-fortran gd-devel +depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran gd-devel gfan giac gsl-devel gzip libpng-devel linbox-devel m4ri-devel maxima-ecl mpfr-devel nauty ntl-devel palp pari-devel pari-elldata-small pari-galdata - pari-galpol-small pari-seadata-small pkg-config python3-Cython python3-cypari2 + pari-galpol-small pari-seadata-small pkg-config python3-Cython0.29 python3-cypari2 python3-cysignals python3-devel python3-fpylll python3-ipython python3-lrcalc python3-ipython_ipykernel python3-jupyter_ipywidgets python3-matplotlib python3-memory_allocator python3-networkx python3-pip python3-pkgconfig @@ -30,18 +30,15 @@ checkdepends="$depends pythran python3-Sphinx" short_desc="Open source mathematics software" maintainer="Gonzalo Tornaría " license="GPL-2.0-or-later" -homepage="http://sagemath.org/" +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=60858efd0d1f2526486740962bf72c99f9141a56caf8395f3291fded276faf55 +checksum=a658612b1b2376ddaf207cc8ed0ef458d4c2880c16e19139bedbe8baa42ad62f nocross="due to ntl (flintlib), fflas-ffpack, givaro, linbox, cysignals, sympow, maxima" -do_configure() { +post_patch() { # git tree needs bootstrapping - ( cd $wrksrc/build/pkgs/sagelib && - PATH=../../bin:$PATH \ - BOOTSTRAP_QUIET=no \ - ./bootstrap ) + $wrksrc/bootstrap sagelib } pre_build() { diff --git a/srcpkgs/vidcutter/template b/srcpkgs/vidcutter/template index bd1b1b9c20117..5030b9a25fe52 100644 --- a/srcpkgs/vidcutter/template +++ b/srcpkgs/vidcutter/template @@ -3,7 +3,7 @@ pkgname=vidcutter version=6.0.5.1 revision=2 build_style=python3-module -hostmakedepends="python3-setuptools python3-Cython" +hostmakedepends="python3-setuptools python3-Cython0.29" makedepends="mpv-devel python3-devel" depends="desktop-file-utils hicolor-icon-theme ffmpeg mpv mediainfo python3-PyOpenGL python3-PyQt5 python3-setuptools" From bb841277ed1f82a5b4ead4b97493f3ce5aa99273 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 26 Aug 2023 21:50:11 -0400 Subject: [PATCH 31/31] xpra: update to 5.0. --- srcpkgs/xpra/patches/setup.patch | 13 +------------ srcpkgs/xpra/template | 8 ++++---- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/srcpkgs/xpra/patches/setup.patch b/srcpkgs/xpra/patches/setup.patch index 237f04308b1a7..9870936cabf46 100644 --- a/srcpkgs/xpra/patches/setup.patch +++ b/srcpkgs/xpra/patches/setup.patch @@ -1,6 +1,4 @@ -Make sure the build script pulls the right CFLAGS and prevent -Werror. In -addition, remove a stray CUDA README that is only supposed to installed when -CUDA is actually available. +Make sure the build script pulls the right CFLAGS and prevent -Werror. --- a/setup.py +++ b/setup.py @@ -31,12 +29,3 @@ CUDA is actually available. if NETBSD: #see: http://trac.cython.org/ticket/395 addcflags("-fno-strict-aliasing") -@@ -2252,8 +2252,6 @@ - if nvjpeg_encoder_ENABLED or nvjpeg_decoder_ENABLED: - add_data_files("", glob.glob(f"{CUDA_BIN_DIR}/nvjpeg64*dll")) - --add_data_files(CUDA_BIN, ["fs/share/xpra/cuda/README.md"]) -- - tace(nvenc_ENABLED, "xpra.codecs.nvenc.encoder", "nvenc", - extra_compile_args="-Wno-error=sign-compare" if get_gcc_version()<(8, ) else None) - diff --git a/srcpkgs/xpra/template b/srcpkgs/xpra/template index 0a63fdb6c7437..d3ee36ce48ca4 100644 --- a/srcpkgs/xpra/template +++ b/srcpkgs/xpra/template @@ -1,6 +1,6 @@ # Template file for 'xpra' pkgname=xpra -version=4.4.6 +version=5.0 revision=1 build_style=python3-module make_build_args="--without-cuda_kernels --without-cuda_rebuild" @@ -8,17 +8,17 @@ make_install_args="$(vopt_with docs) ${make_build_args}" hostmakedepends="pkg-config python3-Cython $(vopt_if docs pandoc)" makedepends="ffmpeg-devel libXcomposite-devel libXrandr-devel libXtst-devel libvpx-devel libwebp-devel libxkbfile-devel python3-gobject-devel x264-devel - x265-devel gtk+3-devel pam-devel libXres-devel liblz4-devel" + gtk+3-devel pam-devel libXres-devel liblz4-devel libavif-devel procps-ng-devel" depends="cups python3-gobject python3-Pillow python3-cups python3-dbus python3-lz4 python3-paramiko python3-rencode xauth xf86-video-dummy - xorg-server-xvfb" + xorg-server-xvfb python3-typing_extensions python3-cairo" short_desc="Persistent remote display server and client for X11 clients" maintainer="Andrew J. Hesford " license="GPL-2.0-or-later" homepage="https://xpra.org/" changelog="https://raw.githubusercontent.com/Xpra-org/xpra/master/docs/CHANGELOG.md" distfiles="https://github.com/Xpra-org/xpra/archive/v${version}.tar.gz" -checksum=7fec998cf9816df3f0fa5ded01903b07211b0c36a7316c9e9bf6db8b80fb477a +checksum=69bf2da133a6ee28ad4e3a849f997b32e5bab4f4b616ff5acd0811e8ac9e4c14 conf_files="/etc/xpra/xpra.conf /etc/xpra/xorg.conf /etc/xpra/conf.d/*" # Tests don't run properly without package installed make_check=no