diff options
author | CoprDistGit <copr-devel@lists.fedorahosted.org> | 2023-10-19 15:16:50 +0000 |
---|---|---|
committer | CoprDistGit <copr-devel@lists.fedorahosted.org> | 2023-10-19 15:16:50 +0000 |
commit | 26b77e1382b52f58a50460465a47d5b2050ef99b (patch) | |
tree | c8b79d6a28494589676022b7f41e52788a149c1d | |
parent | 90c8b037039fb0532f8e8c2758e1932c4fd9ecf8 (diff) |
automatic import of Macaulay2
-rw-r--r-- | .gitignore | 24 | ||||
-rw-r--r-- | Macaulay2-1.15-fplll.patch | 73 | ||||
-rw-r--r-- | Macaulay2-1.15-optflags.patch | 21 | ||||
-rw-r--r-- | Macaulay2-1.16-rightarrow.patch | 11 | ||||
-rw-r--r-- | Macaulay2-1.16-ulimit.patch | 95 | ||||
-rw-r--r-- | Macaulay2-1.17-configure.patch | 15 | ||||
-rw-r--r-- | Macaulay2-1.17-default_make_targets.patch | 12 | ||||
-rw-r--r-- | Macaulay2-1.18-lto.patch | 35 | ||||
-rw-r--r-- | Macaulay2-1.18-no_gftables.patch | 11 | ||||
-rw-r--r-- | Macaulay2-configure-c99.patch | 18 | ||||
-rw-r--r-- | Macaulay2.spec | 1216 | ||||
-rw-r--r-- | com.macaulay2.macaulay2.desktop | 7 | ||||
-rw-r--r-- | com.macaulay2.macaulay2.metainfo.xml | 35 | ||||
-rw-r--r-- | etags.sh | 7 | ||||
-rw-r--r-- | linbox-1.6.3.patch | 35 | ||||
-rw-r--r-- | mpfr-4.1.0.patch | 1747 | ||||
-rw-r--r-- | sources | 24 |
17 files changed, 3386 insertions, 0 deletions
@@ -0,0 +1,24 @@ +/4ti2-1.6.9.tar.gz +/Csdp-6.2.0.tgz +/M2-emacs-8615029.tar.gz +/Macaulay2-1.21.tar.gz +/Macaulay2-icons.tar.xz +/TOPCOM-0.17.8.tar.gz +/cddlib-094m.tar.gz +/cohomCalg-0.32.tar.gz +/factory-4.2.1.tar.gz +/flint-2.8.4.tar.gz +/frobby_v0.9.0.tar.gz +/gfan0.6.2.tar.gz +/givaro-4.1.1.tar.gz +/glpk-4.59.tar.gz +/gtest-1.10.0.tar.gz +/lapack-3.9.0.tgz +/libfplll-5.2.0.tar.gz +/linbox-1.6.3.tar.gz +/lrslib-071a.tar.gz +/mathic-1.0.tar.gz +/mathicgb-1.0.tar.gz +/memtailor-1.0.tar.gz +/mpfr-4.1.0.tar.xz +/mpsolve-3.2.1.tar.gz diff --git a/Macaulay2-1.15-fplll.patch b/Macaulay2-1.15-fplll.patch new file mode 100644 index 0000000..c216db9 --- /dev/null +++ b/Macaulay2-1.15-fplll.patch @@ -0,0 +1,73 @@ +--- M2/Macaulay2/e/fplll-interface.cpp.orig 2020-05-22 08:58:09.000000000 -0600 ++++ M2/Macaulay2/e/fplll-interface.cpp 2020-05-31 20:25:06.775601853 -0600 +@@ -1,10 +1,10 @@ +-#include "fplll-interface.hpp" +-#include "mutablemat.hpp" +- + #ifdef HAVE_FPLLL + #include <stddef.h> +-#include <fplll.h> + #endif ++#include <fplll/fplll.h> ++ ++#include "fplll-interface.hpp" ++#include "mutablemat.hpp" + + bool fp_LLL(MutableMatrix *M, MutableMatrix *U, int strategy) + { +@@ -15,15 +15,15 @@ bool fp_LLL(MutableMatrix *M, MutableMat + assert(U == NULL); + double delta = 0.99; + double eta = 0.51; +- LLLMethod method = LM_WRAPPER; +- FloatType floatType = FT_DEFAULT; ++ fplll::LLLMethod method = fplll::LM_WRAPPER; ++ fplll::FloatType floatType = fplll::FT_DEFAULT; + int precision = 0; +- int flags = LLL_DEFAULT; ++ int flags = fplll::LLL_DEFAULT; + + int ncols = static_cast<int>(M->n_rows()); + int nrows = static_cast<int>(M->n_cols()); + +- ZZ_mat<mpz_t> mat(nrows, ncols); ++ fplll::ZZ_mat<mpz_t> mat(nrows, ncols); + + for (int i = 0; i < nrows; i++) + for (int j = 0; j < ncols; j++) +@@ -31,21 +31,21 @@ bool fp_LLL(MutableMatrix *M, MutableMat + ring_elem a; + if (M->get_entry(j, i, a)) + { +- mpz_set(mat[i][j].getData(), a.get_mpz()); ++ mpz_set(mat[i][j].get_data(), a.get_mpz()); + } + } + + int result = +- lllReduction(mat, delta, eta, method, floatType, precision, flags); ++ lll_reduction(mat, delta, eta, method, floatType, precision, flags); + + switch (result) + { +- case RED_SUCCESS: ++ case fplll::RED_SUCCESS: + break; +- case RED_BABAI_FAILURE: ++ case fplll::RED_BABAI_FAILURE: + ERROR("Error in fpLLL"); + return 0; +- case RED_LLL_FAILURE: ++ case fplll::RED_LLL_FAILURE: + ERROR("infinite loop in LLL"); + return 0; + default: +@@ -60,7 +60,7 @@ bool fp_LLL(MutableMatrix *M, MutableMat + for (int j = 0; j < ncols; j++) + for (int i = 0; i < nrows; i++) + { +- mpz_set(a, mat[i][j].getData()); ++ mpz_set(a, mat[i][j].get_data()); + ring_elem b = globalZZ->from_int(a); + M->set_entry(j, i, b); + } diff --git a/Macaulay2-1.15-optflags.patch b/Macaulay2-1.15-optflags.patch new file mode 100644 index 0000000..d27c278 --- /dev/null +++ b/Macaulay2-1.15-optflags.patch @@ -0,0 +1,21 @@ +--- M2/configure.ac.orig 2020-05-22 08:58:09.000000000 -0600 ++++ M2/configure.ac 2020-05-28 19:59:37.838647299 -0600 +@@ -308,12 +308,12 @@ fi + ] + + if test "$OPTIMIZE" = yes +-then CFLAGS="$CFLAGS -O2" +- CXXFLAGS="$CXXFLAGS -O2" +- FCFLAGS="$FCFLAGS -O2" +-else CFLAGS="$CFLAGS -O0" +- CXXFLAGS="$CXXFLAGS -O0" +- FCFLAGS="$FCFLAGS -O0" ++then CFLAGS="-O2 $CFLAGS" ++ CXXFLAGS="-O2 $CXXFLAGS" ++ FCFLAGS="-O2 $FCFLAGS" ++else CFLAGS="-O0 $CFLAGS" ++ CXXFLAGS="-O0 $CXXFLAGS" ++ FCFLAGS="-O0 $FCFLAGS" + fi + + AC_SUBST(GCCVERSION) diff --git a/Macaulay2-1.16-rightarrow.patch b/Macaulay2-1.16-rightarrow.patch new file mode 100644 index 0000000..1c4abd5 --- /dev/null +++ b/Macaulay2-1.16-rightarrow.patch @@ -0,0 +1,11 @@ +--- M2/Macaulay2/packages/Macaulay2Doc/overview_modules.m2.orig 2020-07-11 05:04:29.000000000 -0600 ++++ M2/Macaulay2/packages/Macaulay2Doc/overview_modules.m2 2020-07-12 19:27:28.520963206 -0600 +@@ -347,7 +347,7 @@ document { + }, + TEX "Macaulay2 represents each module (at least conceptually) as a subquotient module, that is, a submodule of + a quotient of an ambient free module. A subquotient module is determined by two +- matrices $f : R^m \\rightarrow{} R^n$ and $g : R^p \\rightarrow{} R^n$. ++ matrices $f : R^m \\rightarrow R^n$ and $g : R^p \\rightarrow R^n$. + The {\\em subquotient module} with generators $f$ and relations $g$ is by definition the module + $M = ((image f) + (image g))/(image g)$.", + PARA{}, diff --git a/Macaulay2-1.16-ulimit.patch b/Macaulay2-1.16-ulimit.patch new file mode 100644 index 0000000..900bafe --- /dev/null +++ b/Macaulay2-1.16-ulimit.patch @@ -0,0 +1,95 @@ +--- M2/libraries/Makefile.library.in.orig 2022-05-13 20:58:36.000000000 -0600 ++++ M2/libraries/Makefile.library.in 2022-05-23 06:33:19.410991764 -0600 +@@ -238,10 +238,10 @@ distclean: package-distclean + clean::; rm -rf .patched* .untarred* $(LIBNAME)* .checked* .compiled* .configured* .installed* .untarred2* diffs tmp $(UNTARDIR) $(OLDUNTARDIR) + distclean: clean ; rm -rf Makefile + +-SLIMIT ?= 8192 +-TLIMIT ?= 100 +-MLIMIT ?= 400000 +-VLIMIT ?= 400000 ++SLIMIT ?= 16384 ++TLIMIT ?= 200 ++MLIMIT ?= 800000 ++VLIMIT ?= 800000 + LIMIT := : + ifeq (@ULIMIT_T@,yes) + LIMIT += ; ulimit -t $(TLIMIT) +--- M2/Macaulay2/m2/basictests/Makefile.in.orig 2022-05-13 20:58:36.000000000 -0600 ++++ M2/Macaulay2/m2/basictests/Makefile.in 2022-05-23 06:33:19.417991753 -0600 +@@ -22,17 +22,17 @@ $(TESTRESULTS) : @pre_exec_prefix@/bin/M + ARGS := --silent -q --stop --no-core -e 'srcdir = "@srcdir@/"' + + ifeq "@DEBUG@" "no" +-TLIMIT ?= 20 +-MLIMIT ?= 600000 +-VLIMIT ?= 600000 ++TLIMIT ?= 40 ++MLIMIT ?= 1200000 ++VLIMIT ?= 1200000 + else +-TLIMIT ?= 60 +-MLIMIT ?= 700000 +-VLIMIT ?= 700000 ++TLIMIT ?= 120 ++MLIMIT ?= 1400000 ++VLIMIT ?= 1400000 + endif + + # make the stack limit always the same as it would be under MacOS +-SLIMIT ?= 8192 ++SLIMIT ?= 16384 + + LIMIT := + ifeq (@ULIMIT_T@,yes) +--- M2/Macaulay2/tests/ComputationsBook/Makefile.chapter.in.orig 2022-05-13 20:58:36.000000000 -0600 ++++ M2/Macaulay2/tests/ComputationsBook/Makefile.chapter.in 2022-05-23 06:33:19.424991742 -0600 +@@ -15,16 +15,16 @@ diff: + + LIMIT := + ifeq (@ULIMIT_T@,yes) +-LIMIT += ulimit -t 1200 ; ++LIMIT += ulimit -t 2400 ; + endif + ifeq (@ULIMIT_V@,yes) +-LIMIT += ulimit -v 1600000 ; ++LIMIT += ulimit -v 3200000 ; + endif + ifeq (@ULIMIT_M@,yes) +-LIMIT += ulimit -m 800000 ; ++LIMIT += ulimit -m 1600000 ; + endif + ifeq (@ULIMIT_S@,yes) +-LIMIT += ulimit -s 8192 ; ++LIMIT += ulimit -s 16384 ; + endif + + +--- M2/Macaulay2/tests/Makefile.test.in.orig 2022-05-13 20:58:36.000000000 -0600 ++++ M2/Macaulay2/tests/Makefile.test.in 2022-05-23 06:33:19.431991731 -0600 +@@ -6,18 +6,18 @@ DEFERRED ?= no + + DOTS ?= ../.. + ifeq "@DEBUG@" "no" +-TLIMIT ?= 90 ++TLIMIT ?= 180 + # one test doesn't work with only 150MB RAM, ext-total.m2, on a 64 bit intel machine: +-MLIMIT ?= 800000 +-VLIMIT ?= 2000000 ++MLIMIT ?= 1600000 ++VLIMIT ?= 4000000 + else + # give the debug version more time and space +-TLIMIT ?= 140 +-MLIMIT ?= 1200000 +-VLIMIT ?= 2000000 ++TLIMIT ?= 280 ++MLIMIT ?= 2400000 ++VLIMIT ?= 4000000 + endif + # make the stack limit always the same as it would be under MacOS +-SLIMIT ?= 8192 ++SLIMIT ?= 16384 + + LIMIT := + ifeq (@ULIMIT_T@,yes) diff --git a/Macaulay2-1.17-configure.patch b/Macaulay2-1.17-configure.patch new file mode 100644 index 0000000..8086b88 --- /dev/null +++ b/Macaulay2-1.17-configure.patch @@ -0,0 +1,15 @@ +--- M2/configure.ac.orig 2021-01-12 14:20:55.509886490 -0700 ++++ M2/configure.ac 2021-01-12 14:21:55.866785423 -0700 +@@ -252,9 +252,9 @@ AC_MSG_NOTICE([checking for C compiler f + + dnl always compile with "-g", so we can debug even optimized versions + if test "$GCC" = yes +-then CFLAGS="$CFLAGS -g3" +- CXXFLAGS="$CXXFLAGS -g3" +- LDFLAGS="$LDFLAGS -g3" ++then CFLAGS="$CFLAGS -g" ++ CXXFLAGS="$CXXFLAGS -g" ++ LDFLAGS="$LDFLAGS -g" + else CFLAGS="$CFLAGS -g" + CXXFLAGS="$CXXFLAGS -g" + LDFLAGS="$LDFLAGS -g" diff --git a/Macaulay2-1.17-default_make_targets.patch b/Macaulay2-1.17-default_make_targets.patch new file mode 100644 index 0000000..fb6da94 --- /dev/null +++ b/Macaulay2-1.17-default_make_targets.patch @@ -0,0 +1,12 @@ +--- M2/Macaulay2/Makefile.in.orig 2022-05-23 06:34:31.896886749 -0600 ++++ M2/Macaulay2/Makefile.in 2022-05-23 06:35:19.380825646 -0600 +@@ -3,8 +3,7 @@ + VPATH = @srcdir@ + include ../include/config.Makefile + all: @pre_docdir@/COPYING-GPL-2 @pre_docdir@/COPYING-GPL-3 @pre_docdir@/README @pre_docdir@/LAYOUT +-SUBDIRS = util c d e system bin m2 man packages editors \ +- $(if $(filter html, @DOCUMENTATION@), html-check-links) tests ++SUBDIRS = util c d e system bin m2 man packages editors tests + + define do-in-subdirs + $(foreach d,$(SUBDIRS), diff --git a/Macaulay2-1.18-lto.patch b/Macaulay2-1.18-lto.patch new file mode 100644 index 0000000..becd01c --- /dev/null +++ b/Macaulay2-1.18-lto.patch @@ -0,0 +1,35 @@ +--- M2/Macaulay2/c/compat.h.orig 2021-06-13 14:30:17.341325747 -0600 ++++ M2/Macaulay2/c/compat.h 2021-06-14 06:52:52.648631798 -0600 +@@ -2,7 +2,7 @@ + + #ifndef __cplusplus + #undef bool +-typedef char bool; ++typedef _Bool bool; + #endif + + extern char posfmt[]; +--- M2/Macaulay2/d/types.h.orig 2021-06-04 17:33:04.000000000 -0600 ++++ M2/Macaulay2/d/types.h 2021-06-13 14:30:27.804335244 -0600 +@@ -37,6 +37,10 @@ + # define LONGJUMP(env) longjmp(env, 1) + #endif + ++#ifdef __cplusplus ++extern "C" { ++#endif ++ + struct ArgCell + { + int argc, envc; +@@ -50,6 +54,10 @@ struct JumpCell + bool is_set; + }; + ++#ifdef __cplusplus ++} ++#endif ++ + #ifdef HAVE_UNISTD_H + #include <unistd.h> + #endif diff --git a/Macaulay2-1.18-no_gftables.patch b/Macaulay2-1.18-no_gftables.patch new file mode 100644 index 0000000..17ebc01 --- /dev/null +++ b/Macaulay2-1.18-no_gftables.patch @@ -0,0 +1,11 @@ +--- M2/configure.ac.orig 2021-06-13 14:28:15.330215045 -0600 ++++ M2/configure.ac 2021-06-13 14:28:49.449246006 -0600 +@@ -667,7 +667,7 @@ AC_SUBST(BUILTLIBS) + AC_SUBST(LIBLIST, " atomic_ops gc gdbm gmp mpir mpfr mpfi readline ntl flint factory lapack mpsolve frobby glpk cddlib fplll linbox gtest ") + # The list LIBLIST is the list of libraries that might be used and linked into M2. + +-AC_SUBST(PROGLIST, "4ti2 gfan normaliz csdp nauty cddplus lrslib gftables topcom cohomcalg") ++AC_SUBST(PROGLIST, "4ti2 gfan normaliz csdp nauty cddplus lrslib topcom cohomcalg") + # The list PROGLIST is the list of programs and libraries for them that are distributed with M2. + # Initially, we offer no option for not compiling some of them. + diff --git a/Macaulay2-configure-c99.patch b/Macaulay2-configure-c99.patch new file mode 100644 index 0000000..2cdc1c6 --- /dev/null +++ b/Macaulay2-configure-c99.patch @@ -0,0 +1,18 @@ +Avoid an implicit int, which was removed from the C99 revision of the +C language. This prevents altering the outcome of the check with +future compilers. + +Submitted upstream: <https://github.com/Macaulay2/M2/pull/2814> + +diff -ur M2-release-1.21.orig/M2/configure.ac M2-release-1.21/M2/configure.ac +--- M2-release-1.21.orig/M2/configure.ac 2023-04-15 19:52:33.823153026 +0200 ++++ M2-release-1.21/M2/configure.ac 2023-04-15 20:00:57.701024623 +0200 +@@ -1719,7 +1719,7 @@ + #ifdef HAVE_NETDB_H + #include <netdb.h> + #endif +- main() { ++ int main(void) { + struct addrinfo *addr; + return 0 != getaddrinfo("1.2.3.4", "80", 0, &addr) ? 99 : 0 ; + } diff --git a/Macaulay2.spec b/Macaulay2.spec new file mode 100644 index 0000000..40eea01 --- /dev/null +++ b/Macaulay2.spec @@ -0,0 +1,1216 @@ +# BUNDLING NOTES +# Macaulay2's memory management scheme requires close cooperation with libgc, +# and some of the supporting libraries must be compiled with special options to +# accomplish this. In particular, Macaulay2 needs: +# - mathicgb configured --without-tbb +# - mpfr configured with --disable-thread-safe +# - flint linked with the GC-enabled mpfr +# - factory (from Singular) configured with --disable-omalloc --enable-streamio +# and linked with the flint that is linked with the GC-enabled mpfr +# Since the main Fedora packages are not built in this way, we are forced to +# bundle these packages to avoid random GC-related crashes. The packages +# memtailor and mathic, which sit underneath mathicgb, must also be bundled or +# we get random GC-related crashes for an as yet undiagnosed reason. +# +# We have to use the static versions of the libfplll and givaro libraries. +# They have global objects whose constructors run before GC is initialized. +# If we allow the shared libraries to be unloaded, which happens as a normal +# part of Macaulay2's functioning, then GC tries to free objects it did not +# allocate, which leads to a segfault. +# +# We have to bundle the linbox package. It has global constructors that cause +# the same problem as libfplll. + +%global m2url https://github.com/Macaulay2/M2 + +%global emacscommit 86150290208bd9e468511b4b69a187ce870f303e +%global emacsurl https://github.com/Macaulay2/M2-emacs +%global emacsshort %(cut -b -7 <<< %{emacscommit}) + +# Address randomization interferes with Macaulay2's memory management scheme, +# and linking with -z now breaks configure. +%undefine _hardened_build + +## define to create -common subpkg +#global common 1 +#if 0%%{?fedora} +# use system normaliz +%global system_normaliz 1 +#endif +%global ISSUE %{?fedora:Fedora-%{fedora}}%{?rhel:RedHatEnterprise-%{rhel}} +%global M2_machine %{_target_cpu}-Linux-%{ISSUE} + +# The examples contain some python files which should not be byte compiled +%global _python_bytecompile_extra 0 + +# Starting with GCC 12, Macaulay2 segfaults during the build on all +# architectures when LTO is enabled. (With GCC 11, s390x did this, but the +# other architectures did not.) Until somebody can figure out what is going +# on, disable LTO universally. +%define _lto_cflags %{nil} + +Summary: System for algebraic geometry and commutative algebra +Name: Macaulay2 +Version: 1.21 +Release: 6%{?dist} + +# GPL-2.0-only OR GPL-3.0-only: +# - the project as a whole +# - factory (bundled) +# GPL-1.0-or-later: +# - Macaulay2/packages/FormalGroupLaws.m2 +# - Macaulay2/packages/WeylGroups.m2 +# GPL-2.0-only: +# - Macaulay2/packages/ModuleDeformations.m2 +# - Macaulay2/packages/QuillenSuslin.m2 +# - Macaulay2/packages/Visualize.m2 +# GPL-2.0-or-later: +# - mathicgb (bundled) +# - Macaulay2/e/bibasis +# - Macaulay2/m2/computations.m2 +# - Macaulay2/packages/AlgebraicSplines.m2 +# - Macaulay2/packages/BIBasis.m2 +# - Macaulay2/packages/Binomials.m2 +# - Macaulay2/packages/Chordal.m2 +# - Macaulay2/packages/Cremona.m2 +# - Macaulay2/packages/Cyclotomic.m2 +# - Macaulay2/packages/EdgeIdeals.m2 +# - Macaulay2/packages/FourierMotzkin.m2 +# - Macaulay2/packages/GKMVarieties.m2 +# - Macaulay2/packages/GradedLieAlgebras.m2 +# - Macaulay2/packages/GraphicalModels* +# - Macaulay2/packages/Graphics.m2 +# - Macaulay2/packages/Graphs.m2 +# - Macaulay2/packages/GroebnerWalk.m2 +# - Macaulay2/packages/HyperplaneArrangements.m2 +# - Macaulay2/packages/InvariantRing* +# - Macaulay2/packages/KustinMiller.m2 +# - Macaulay2/packages/LieTypes.m2 +# - Macaulay2/packages/MonomialAlgebras.m2 +# - Macaulay2/packages/MultiprojectiveVarieties.m2 +# - Macaulay2/packages/NAGtypes.m2 +# - Macaulay2/packages/Nauty* +# - Macaulay2/packages/Normaliz.m2 +# - Macaulay2/packages/NumericalAlgebraicGeometry.m2 +# - Macaulay2/packages/PackageCitations.m2 +# - Macaulay2/packages/Posets.m2 +# - Macaulay2/packages/RationalPoints* +# - Macaulay2/packages/ResLengthThree.m2 +# - Macaulay2/packages/ResolutionsOfStanleyReisnerRings.m2 +# - Macaulay2/packages/Resultants.m2 +# - Macaulay2/packages/RunExternalM2.m2 +# - Macaulay2/packages/SLPexpressions.m2 +# - Macaulay2/packages/SLnEquivariantMatrices.m2 +# - Macaulay2/packages/SimplicialDecomposability.m2 +# - Macaulay2/packages/SparseResultants.m2 +# - Macaulay2/packages/SpecialFanoFourfolds.m2 +# - Macaulay2/packages/StatGraphs.m2 +# - Macaulay2/packages/TriangularSets.m2 +# - Macaulay2/packages/VectorFields.m2 +# GPL-3.0-or-later: +# - normaliz, when it is bundled +# - Macaulay2/e/mpreal.h +# - Macaulay2/packages/BettiCharacters.m2 +# - Macaulay2/packages/CodingTheory.m2 +# - Macaulay2/packages/FGLM.m2 +# - Macaulay2/packages/HighestWeights* +# - Macaulay2/packages/Jets.m2 +# - Macaulay2/packages/LocalRings +# - Macaulay2/packages/MonomialIntegerPrograms.m2 +# - Macaulay2/packages/MultiplierIdeals.m2 +# - Macaulay2/packages/NormalToricVarieties.m2 +# - Macaulay2/packages/NumericSolutions.m2 +# - Macaulay2/packages/OldPolyhedra.m2 +# - Macaulay2/packages/OldToricVectorBundles.m2 +# - Macaulay2/packages/PieriMaps.m2 +# - Macaulay2/packages/Polyhedra.m2 +# - Macaulay2/packages/PositivityToricBundles.m2 +# - Macaulay2/packages/SchurRings.m2 +# - Macaulay2/packages/SchurVeronese.m2 +# - Macaulay2/packages/Simplicial* +# - Macaulay2/packages/SpectralSequences.m2 +# - Macaulay2/packages/TensorComplexes.m2 +# - Macaulay2/packages/ToricTopology.m2 +# - Macaulay2/packages/ToricVectorBundles.m2 +# - Macaulay2/packages/VersalDeformations.m2 +# LGPL-2.0-or-later: +# - flint (bundled) +# - linbox (bundled) +# - mathic (bundled) +# LGPL-3.0-or-later: +# - mpfr (bundled) +# Apache-2.0: +# - Macaulay2/packages/OpenMath.m2 +# - Macaulay2/packages/SCSCP.m2 +# BSD-3-Clause: +# - memtailor (bundled) +# MIT: +# - Macaulay2/packages/Visualize/css +# - Macaulay2/packages/Visualize/js +# MIT AND OFL-1.1-RFN: +# - Macaulay2/packages/Style +# LicenseRef-Fedora-Public-Domain: +# - Macaulay2/e/localring* +# - Macaulay2/e/mutablecomplex* +# - Macaulay2/e/NAG* +# - Macaulay2/e/SLP* +# - Macaulay2/packages/Depth.m2 +# - Macaulay2/packages/Divisor.m2 +# - Macaulay2/packages/FastMinors.m2 +# - Macaulay2/packages/LatticePolytopes.m2 +# - Macaulay2/packages/NoetherNormalization.m2 +# - Macaulay2/packages/RationalMaps.m2 +# - Macaulay2/packages/SectionRing.m2 +License: (GPL-2.0-only OR GPL-3.0-only) AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.0-or-later AND LGPL-3.0-or-later AND Apache-2.0 AND BSD-3-Clause AND MIT AND OFL-1.1-RFN AND LicenseRef-Fedora-Public-Domain +URL: https://macaulay2.com/ +%if 0%{?snap:1} +Source0: %{name}-%{version}-%{snap}.tar.xz +%else +Source0: %{m2url}/archive/release-%{version}/%{name}-%{version}.tar.gz +%endif +Source1: %{emacsurl}/tarball/%{emacscommit}/M2-emacs-%{emacsshort}.tar.gz + +# Various sizes of the planets icon from macaulay2.com. See README.icons in +# the tar file for details on how these icons were created. +Source10: Macaulay2-icons.tar.xz +Source11: com.macaulay2.macaulay2.desktop +Source12: com.macaulay2.macaulay2.metainfo.xml +Source20: etags.sh + +## BUNDLED code +# Normaliz must sometimes be bundled due to version differences +%if ! %system_normaliz +%global normalizver 3.9.2 +Source100: http://www.math.uiuc.edu/Macaulay2/Downloads/OtherSourceCode/normaliz-%{normalizver}.tar.gz +Provides: bundled(normaliz) = %{normalizver} +%endif + +# MPFR is bundled because it must be built with different threading options +%global mpfrver 4.1.0 +Source101: http://www.mpfr.org/mpfr-%{mpfrver}/mpfr-%{mpfrver}.tar.xz +Provides: bundled(mpfr) = %{mpfrver} + +# FLINT is bundled because it must be linked with the specially-built MPFR +%global flintver 2.8.4 +Source102: http://www.flintlib.org/flint-%{flintver}.tar.gz +Provides: bundled(flint) = %{flintver} + +# FACTORY is bundled because it must be built with special options +%global factoryver 4.2.1 +Source103: http://faculty.math.illinois.edu/Macaulay2/Downloads/OtherSourceCode/factory-%{factoryver}.tar.gz +Provides: bundled(factory) = %{factoryver} + +# MATHICGB is bundled because it must be built with different threading options +%global mathicgbver 1.0 +%global mathicgbcommit f3a05da1494843b5e4e7baa18e644cc6f32baeca +Source104: https://github.com/Macaulay2/mathicgb/tarball/%{mathicgbcommit}/mathicgb-%{mathicgbver}.tar.gz +Provides: bundled(mathicgb) = %{mathicgbver} + +# GTEST is bundled because MATHICGB refuses to build otherwise +%global gtestver 1.10.0 +Source105: https://faculty.math.illinois.edu/Macaulay2/Downloads/OtherSourceCode/gtest-%{gtestver}.tar.gz + +# MEMTAILOR is bundled because it causes garbage collector crashes otherwise +%global memtailorver 1.0 +%global memtailorcommit 95dbac776c475f4b1c2b08a8e8c6def14c8aaf9a +Source106: https://github.com/Macaulay2/memtailor/tarball/%{memtailorcommit}/memtailor-%{memtailorver}.tar.gz +Provides: bundled(memtailor) = %{memtailorver} + +# MATHIC is bundled because it causes garbage collector crashes otherwise +%global mathicver 1.0 +%global mathiccommit 18ff8de1f5b5102ef291e450522c4930cf9eb7f2 +Source107: https://github.com/Macaulay2/mathic/tarball/%{mathiccommit}/mathic-%{mathicver}.tar.gz +Provides: bundled(mathic) = %{mathicver} + +# LINBOX is bundled because it introduces static global objects +%global linboxver 1.6.3 +Source108: https://github.com/linbox-team/linbox/releases/download/v%{linboxver}/linbox-%{linboxver}.tar.gz +Provides: bundled(linbox) = %{linboxver} + +## PATCHES FOR BUNDLED code +# Work around an ambiguous overload on 32-bit platforms +Source200: linbox-1.6.3.patch +# MPFR bug fixes from mpfr upstream. +Source201: mpfr-4.1.0.patch + +## FAKE library tarballs that convince Macaulay2 to use the system versions +Source300: frobby_v0.9.0.tar.gz +Source301: cddlib-094m.tar.gz +Source302: lapack-3.9.0.tgz +Source303: 4ti2-1.6.9.tar.gz +Source304: libfplll-5.2.0.tar.gz +Source305: gfan0.6.2.tar.gz +Source306: givaro-4.1.1.tar.gz +Source307: lrslib-071a.tar.gz +Source308: TOPCOM-0.17.8.tar.gz +Source309: cohomCalg-0.32.tar.gz +Source310: glpk-4.59.tar.gz +Source311: Csdp-6.2.0.tgz +Source312: mpsolve-3.2.1.tar.gz + +# let Fedora optflags override the defaults +Patch0: %{name}-1.15-optflags.patch +# give the build a little more time and space than upstream permits +Patch1: %{name}-1.16-ulimit.patch +# drop 'tests' from default make target +Patch2: %{name}-1.17-default_make_targets.patch +# disable check for gftables +Patch3: %{name}-1.18-no_gftables.patch +# adapt to libfplll 5.2.1 +Patch4: %{name}-1.15-fplll.patch +# do not override the debug level +Patch5: %{name}-1.17-configure.patch +# Fix "error: in conversion to html, unknown TeX control sequence(s): \rightarrow" +Patch6: %{name}-1.16-rightarrow.patch +# Fix LTO warnings about mismatched declarations and definitions +Patch7: %{name}-1.18-lto.patch +Patch8: Macaulay2-configure-c99.patch + +BuildRequires: 4ti2 +BuildRequires: appstream +BuildRequires: autoconf +BuildRequires: autoconf-archive +BuildRequires: bison +BuildRequires: boost-devel +BuildRequires: chrpath +BuildRequires: cohomCalg +BuildRequires: csdp-tools +BuildRequires: desktop-file-utils +%if 0%{?fedora} +BuildRequires: doxygen-latex +%else +BuildRequires: doxygen +%endif +BuildRequires: eigen3-static +# etags +BuildRequires: emacs +BuildRequires: factory-gftables +BuildRequires: flex +BuildRequires: gawk +BuildRequires: gcc-c++ +BuildRequires: gcc-gfortran +BuildRequires: gdb +BuildRequires: gdbm-devel +BuildRequires: gettext-devel +BuildRequires: gfan +BuildRequires: git-core +BuildRequires: givaro-static +BuildRequires: glpk-devel +BuildRequires: iml-devel +BuildRequires: info +BuildRequires: libfplll-static +BuildRequires: libfrobby-devel +BuildRequires: libgfan-devel +BuildRequires: libnormaliz-devel >= 3.9.2 +BuildRequires: libtool +BuildRequires: lrslib-devel +BuildRequires: lrslib-utils +BuildRequires: make +BuildRequires: mpsolve-devel +BuildRequires: nauty +BuildRequires: normaliz +BuildRequires: ntl-devel +BuildRequires: pari-devel +BuildRequires: pkgconfig(atomic_ops) +BuildRequires: pkgconfig(bdw-gc) >= 8.0.4 +BuildRequires: pkgconfig(cddlib) +BuildRequires: pkgconfig(expat) +BuildRequires: pkgconfig(fflas-ffpack) +BuildRequires: pkgconfig(flexiblas) +BuildRequires: pkgconfig(gmp) +BuildRequires: pkgconfig(gtest) +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(m4ri) +BuildRequires: pkgconfig(m4rie) +BuildRequires: pkgconfig(libmariadb) +BuildRequires: pkgconfig(mpfi) +BuildRequires: pkgconfig(nauty) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(qd) +BuildRequires: pkgconfig(readline) +BuildRequires: pkgconfig(tbb) +BuildRequires: pkgconfig(tinyxml2) +BuildRequires: polymake +BuildRequires: python3-devel +BuildRequires: texinfo +BuildRequires: time +BuildRequires: TOPCOM +BuildRequires: transfig +BuildRequires: valgrind + +Requires: 4ti2 +Requires: cohomCalg +Requires: csdp-tools +Requires: emacs-filesystem +Requires: factory-gftables +Requires: gfan +Requires: hicolor-icon-theme +Requires: lrslib-utils +Requires: nauty +Requires: normaliz +Requires: TOPCOM + +# M2-help +Requires: xdg-utils + +Recommends: mathicgb + +%if 0%{?common} +Requires: %{name}-common = %{version}-%{release} +%else +Obsoletes: Macaulay2-common < %{version}-%{release} +Provides: Macaulay2-common = %{version}-%{release} +%endif +Obsoletes: Macaulay2-doc < %{version}-%{release} +Provides: Macaulay2-doc = %{version}-%{release} +Obsoletes: Macaulay2-emacs < %{version}-%{release} +Provides: Macaulay2-emacs = %{version}-%{release} + +Provides: macaulay2 = %{version}-%{release} + +# Macaulay2 no longer builds successfully on 32-bit platforms +# https://bugzilla.redhat.com/show_bug.cgi?id=1874318 +ExcludeArch: %{ix86} %{arm} + +# Do not advertise the bundled mpfr +%global __provides_exclude libmpfr.so* + + +%description +Macaulay 2 is a new software system devoted to supporting research in +algebraic geometry and commutative algebra written by Daniel R. Grayson +and Michael E. Stillman + +%package common +Summary: Common files for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch +%description common +%{summary}. + + +%prep +%setup -q -n M2-release-%{version}/M2 +%setup -q -n M2-release-%{version}/M2 -T -D -a 10 +tar -C Macaulay2/editors/emacs --strip-components=1 -xzf %{SOURCE1} + +install -p -m755 %{SOURCE20} ./etags + +## bundled code +%if ! %system_normaliz +install -p -m644 %{SOURCE100} BUILD/tarfiles/ +%endif +install -p -m644 %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE105} \ + %{SOURCE108} BUILD/tarfiles/ +sed -i 's/\(VERSION = \).*/\1%{mpfrver}/' libraries/mpfr/Makefile.in +sed -e 's/\(VERSION = \).*/\1%{linboxver}/' \ + -e 's/^#\(PATCHFILE\)/\1/' \ + -e 's,--with-gmp.*,GIVARO_CFLAGS=-I$(LIBRARIESDIR) GIVARO_LIBS="%{_libdir}/libgivaro.a",' \ + -i libraries/linbox/Makefile.in +tar -C submodules/mathicgb -xf %{SOURCE104} --strip-components=1 +tar -C submodules/memtailor -xf %{SOURCE106} --strip-components=1 +tar -C submodules/mathic -xf %{SOURCE107} --strip-components=1 + +## patches for bundled code +sed -e 's,--with-blas,&=%{_includedir}/flexiblas --with-ntl,' \ + -e 's,2\.6\.0,%{flintver},' \ + -i libraries/flint/Makefile.in +cp -p %{SOURCE200} libraries/linbox/patch-%{linboxver} +sed -e '/^TARFILE =/iPATCHFILE = @abs_srcdir@/patch-$(VERSION)' \ + -i libraries/mpfr/Makefile.in +cp -p %{SOURCE201} libraries/mpfr/patch-%{mpfrver} + +## fake library tarballs +install -p -m644 %{SOURCE300} %{SOURCE301} %{SOURCE302} %{SOURCE303} \ + %{SOURCE304} %{SOURCE305} %{SOURCE306} %{SOURCE307} %{SOURCE308} \ + %{SOURCE309} %{SOURCE310} %{SOURCE311} %{SOURCE312} BUILD/tarfiles/ +sed -i '/PRECONFIGURE/d' libraries/{4ti2,cddlib,givaro,normaliz,topcom}/Makefile.in +sed -i 's/VERSION = 4\.0\.4/VERSION = 5.2.0/;/PATCHFILE/d' libraries/fplll/Makefile.in +sed -i '/PATCHFILE/d' libraries/{csdp,frobby,gfan,givaro,mpsolve,normaliz,topcom}/Makefile.in +sed -i '/INSTALLCMD/,/stdinc/d' libraries/frobby/Makefile.in +sed -i 's,install \(lib.*\.a\),ln -s %{_libdir}/\1,' libraries/lapack/Makefile.in + +## fake givaro submodule +tar -C submodules/givaro --strip-components=1 -xzf %{SOURCE306} + +%patch0 -p1 -b .optflags +%patch1 -p1 -b .ulimit +%patch2 -p1 -b .default_make_targets +%patch3 -p1 -b .no_gftables +# factory-gftables symlink +mkdir -p BUILD/%{_target_platform}/usr-dist/common/share/Macaulay2/Core +ln -s %{_datadir}/factory \ + BUILD/%{_target_platform}/usr-dist/common/share/Macaulay2/Core/factory +%patch4 -p1 -b .fplll +%patch5 -p1 -b .configure +%patch6 -p1 -b .rightarrow +%patch7 -p1 -b .lto +%patch8 -p2 -b .configure-c99 + +# repeatable builds: inject a node name +sed -i 's,`uname -n`,build.fedoraproject.org,' configure.ac + +# gdb is used during the build; let it autoload some files +if [ "$HOME" = "/builddir" ]; then + echo "set auto-load safe-path /" > /builddir/.gdbinit +fi + +# Use, but don't build, cddlib, fflas-ffpack, and gc. Use the static versions +# of libfplll and givaro. Link with flexiblas instead of the reference blas +# and lapack. Fix typos. +sed -e 's/BUILD_cddlib=yes/BUILD_cddlib=no/' \ + -e 's/BUILD_gc=yes/BUILD_gc=no/' \ + -e 's/BUILD_fflas_ffpack=yes/BUILD_fflas_ffpack=no/' \ + -e 's,-lfplll,%{_libdir}/libfplll.a -lqd,' \ + -e 's,`\$PKG_CONFIG --libs givaro`,%{_libdir}/libgivaro.a,' \ + -e 's,-lgivaro,%{_libdir}/libgivaro.a,' \ + -e 's,-llapack -lrefblas,-lflexiblas,' \ + -e 's,\$added_fclibs != yes,"$added_fclibs" != yes,' \ + -i configure.ac + +# We call it flint. Upstream calls it flint2. +sed -i 's/\(LIBNAME = flint\)2/\1/' libraries/flint/Makefile.in + +# Cannot do git submodule operations on a koji builder +sed -i 's/git-checkout-in-\$1, git-checkout-warning-for-\$1//' GNUmakefile.in + +# (re)generate configure +autoreconf -fi . + + +%build +%ifarch s390x +# For as yet unknown reasons, when this package is built with optimization +# level -O2 on s390x, the mathicgb code accesses out-of-bounds array elements. +# In addition, valgrind shows accesses to uninitialized elements of arrays +# that should not have any uninitialized elements. The code eventually +# segfaults. When built with -O1 and LTO, the linker segfaults. Until we can +# diagnose and fix these issues, we build with -O1 and without LTO on s390x. +%define _lto_cflags %{nil} +optflags=$(sed 's/-O2/-O/g' <<< "%{build_cflags}") +%else +optflags="%{build_cflags}" +%endif + +# Possible bug in Macaulay2 1.19: the memtailor, mathic, and mathicgb headers +# cannot be found. We work around this here. See if the problem has been fixed +# in later versions. +CPPFLAGS="-I$PWD/submodules/memtailor/src -I$PWD/submodules/mathic/src -I$PWD/submodules/mathicgb/src" + +## configure macro currently broken, due to some odd prefix-checks. probably fixable -- Rex +mkdir -p BUILD/%{_target_platform} +pushd BUILD/%{_target_platform} +CPPFLAGS="$CPPFLAGS -I%{_includedir}/cddlib -I%{_includedir}/frobby" \ +CFLAGS="$optflags -fsigned-char" \ +CXXFLAGS="$optflags -fsigned-char" \ +LIBS="-lflexiblas" \ +../../configure \ + --build=%{_build} \ + --host=%{_host} \ + --with-issue=%{ISSUE} \ + --prefix=%{_prefix} \ + --disable-dumpdata \ + --enable-shared \ + --disable-fc-lib-ldflags \ + --disable-strip \ + --enable-fplll \ + --enable-linbox \ + --with-integer-package=gmp \ + --with-unbuilt-programs="cddplus nauty" \ + --enable-build-libraries="mpfr flint factory lapack fplll givaro linbox gtest" + # The list of libraries and submodules above should include only those that: + # 1. We bundle (mpfr, flint, factory, and linbox) + # 2. We sneakily substitute one library for another (lapack -> flexiblas) + # 3. Have to be linked with the static library (fplll and givaro) +popd + +# link with static libraries when global constructors run prior to GC +# initialization. Otherwise, unloading the shared object causes a crash. +# We have to do this because we pick up references to -lgivaro from other +# packages during the configure script execution. +for fil in $(grep -Erl -e '-lfplll|-lgivaro' .); do + sed -e 's,-lfplll,%{_libdir}/libfplll.a,' \ + -e 's,-lgivaro,%{_libdir}/libgivaro.a,' \ + -i.orig $fil + touch -r $fil.orig $fil + rm -f $fil.orig +done + +make -C BUILD/%{_target_platform} VERBOSE=true Verbose=true IgnoreExampleErrors=true + +# log errors +find BUILD/%{_target_platform}/ -name *.errors -execdir echo {} \; -execdir cat {} \; + + +%install +%make_install -C BUILD/%{_target_platform} IgnoreExampleErrors=true + +# link, don't copy, the binaries +mbindir=%{buildroot}%{_libexecdir}/Macaulay2/bin +for fil in checkregularity chiro2circuits chiro2cocircuits cohomcalg csdp lrs \ + normaliz points2allfinetriangs points2alltriangs points2chiro \ + points2finetriang points2finetriangs points2flips points2nallfinetriangs \ + points2nalltriangs points2nfinetriangs points2nflips points2ntriangs \ + points2triangs points2volume; do + rm -f $mbindir/$fil + ln -s %{_bindir}/$fil $mbindir/$fil +done + +# app img +for sz in 64 72 96 128 192 256 512; do + sz2=${sz}x${sz} + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/$sz2/apps + install -p -m644 icons/NinePlanets-${sz2}.png \ + %{buildroot}%{_datadir}/icons/hicolor/$sz2/apps/%{name}.png +done + +desktop-file-install --vendor="" \ + --dir=%{buildroot}%{_datadir}/applications \ + %{SOURCE11} + +mkdir -p %{buildroot}%{_metainfodir} +install -pm 644 %{SOURCE12} %{buildroot}%{_metainfodir} +appstreamcli validate --nonet %{buildroot}%{_metainfodir}/com.macaulay2.macaulay2.metainfo.xml + +# Byte compile the Emacs files, and move the documentation +pushd %{buildroot}%{_emacs_sitelispdir}/macaulay2 +mv M2-emacs* %{buildroot}%{_pkgdocdir} +mv README.md %{buildroot}%{_pkgdocdir}/README-emacs.md +%{_emacs_bytecompile} *.el +popd + +## unpackaged files +# info dir +rm -fv %{buildroot}%{_infodir}/dir + +# Delete misinstalled memtailor, mathic, and mathicgb libraries +rm -fr %{buildroot}/builddir + + +%check +# The test suite has grown to the point where it takes many hours to run. +# Just run the most basic tests. +make check -C BUILD/%{_target_platform}/Macaulay2/e +make check -C BUILD/%{_target_platform}/Macaulay2/bin + + +%files +%{_bindir}/M2 +%{_bindir}/M2-binary +%{_prefix}/lib/Macaulay2/ +%{_libexecdir}/Macaulay2/ + +%if 0%{?common} +%files common +%endif +%{_datadir}/Macaulay2/ +%{_datadir}/applications/com.macaulay2.macaulay2.desktop +%{_datadir}/icons/hicolor/*/*/* +%{_metainfodir}/com.macaulay2.macaulay2.metainfo.xml +%{_docdir}/Macaulay2/ +%{_infodir}/*.info* +%{_mandir}/man1/* +%{_emacs_sitelispdir}/macaulay2/ + + +%changelog +* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.21-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Apr 15 2023 Florian Weimer <fweimer@redhat.com> - 1.21-5 +- Port configure script to C99 + +* Mon Feb 20 2023 Jonathan Wakely <jwakely@redhat.com> - 1.21-4 +- Rebuilt for Boost 1.81 + +* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.21-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jan 12 2022 Jerry James <loganjerry@gmail.com> - 1.21-2 +- Rebuild for libfplll 5.4.4 + +* Thu Dec 22 2022 Jerry James <loganjerry@gmail.com> - 1.21-1 +- Version 1.21 +- Drop upstreamed patch for crash when building documentation +- Use rdns names for the desktop and metainfo files + +* Tue Dec 20 2022 Jerry James <loganjerry@gmail.com> - 1.20-2 +- Convert License tag to SPDX + +* Sun Sep 25 2022 Rich Mattes <richmattes@gmail.com> - 1.20-2 +- Rebuild for tinyxml2-9.0.0 + +* Thu Aug 4 2022 Jerry James <loganjerry@gmail.com> - 1.20-1 +- Version 1.20 + +* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed May 04 2022 Thomas Rodgers <trodgers@redhat.com> - 1.19.1-2 +- Rebuilt for Boost 1.78 + +* Mon Feb 21 2022 Jerry James <loganjerry@gmail.com> - 1.19.1-1 +- Version 1.19.1 +- Disable LTO to work around segfaults + +* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Nov 24 2021 Jerry James <loganjerry@gmail.com> - 1.19-1 +- Version 1.19 + +* Fri Aug 06 2021 Jonathan Wakely <jwakely@redhat.com> - 1.18-4 +- Rebuilt for Boost 1.76 + +* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jun 29 2021 Jerry James <loganjerry@gmail.com> - 1.18-2 +- Rebuild for ntl 11.5.1 + +* Thu Jun 17 2021 Jerry James <loganjerry@gmail.com> - 1.18-1 +- Version 1.18 + +* Thu Feb 18 2021 Jerry James <loganjerry@gmail.com> - 1.17-2 +- Reduce optimization level on s390x to work around FTBFS +- Install metainfo +- Add -mathic patch to silence GCC warnings +- Add -lto patch to silence LTO warnings + +* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.17-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Jan 16 2021 Jerry James <loganjerry@gmail.com> - 1.17-1 +- Version 1.17 +- Drop upstreamed patches: -nauty-paths, -format +- Merge -gcc11 patch into mathicgb-1.0.patch + +* Thu Oct 15 2020 Jeff Law <law@redhat.com> - 1.16-2 +- Add missing #includes for gcc-11 + +* Mon Aug 31 2020 Jerry James <loganjerry@gmail.com> - 1.16-1 +- Version 1.16 +- Drop upstreamed patch: -xdg_open +- Add -ulimit patch for the slower builders +- Add -format and -rightarrow patches +- Bundle packages due to garbage collector crashes: linbox, memtailor, mathic +- Drop the XEmacs subpackage; XEmacs support no longer works + +* Sun Aug 16 2020 Iñaki Úcar <iucar@fedoraproject.org> - 1.15.1.0-5 +- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager + +* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.1.0-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 1 2020 Jeff Law <law@redhat.com> - 1.15.1.0-2 +- Disable LTO + +* Wed Jun 3 2020 Jerry James <loganjerry@gmail.com> - 1.15.1.0-1 +- Version 1.15.1.0 +- Drop upstreamed patches: -no_Werror, -mpir, -pthreads, -fflas-ffpack, + -fno-common, -gtest, -pthreads + +* Tue Feb 11 2020 Jerry James <loganjerry@gmail.com> - 1.14.0.1-4 +- Add -fno-common patch to fix FTBFS with GCC 10 + +* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 10 2020 Jerry James <loganjerry@gmail.com> - 1.14.0.1-3 +- Rebuild for ntl 11.4.3 + +* Fri Nov 1 2019 Jerry James <loganjerry@gmail.com> - 1.14.0.1-2 +- Rebuild for givaro 4.1.1, fflas-ffpack 2.4.3, and linbox 1.6.3 + +* Thu Sep 26 2019 Jerry James <loganjerry@gmail.com> - 1.14.0.1-1 +- Macaulay2-1.14.0.1 +- Drop upstreamed -format and -exception patches +- Also bundle libmpc since it is linked with mpfr +- Drop fix for F26 symlink-file snafu +- Build with python 3 instead of python 2 + +* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.12.0.1-5 +- Rebuild for readline 8.0 + +* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Nov 20 2018 Jerry James <loganjerry@gmail.com> - 1.12.0.1-3 +- Rebuild for lrslib 070 + +* Wed Oct 10 2018 Jerry James <loganjerry@gmail.com> - 1.12.0.1-2 +- Rebuild for ntl 11.3.0 +- Build with openblas instead of atlas (bz 1618938) + +* Fri Aug 10 2018 Jerry James <loganjerry@gmail.com> - 1.12.0.1-1 +- Macaulay2-1.12.0.1 +- Replace tiny icon of unknown origin with various sizes of upstream's icon +- Remove deprecated entries from the desktop file +- Add upstream mpfr 3.1.6 patches + +* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 3 2018 Jerry James <loganjerry@gmail.com> - 1.11-2 +- Rebuild for ntl 11.1.0 +- Remove scriptlets that call install-info +- Do not byte compile python files in the examples + +* Sat Jun 2 2018 Jerry James <loganjerry@gmail.com> - 1.11-1 +- Macaulay2-1.11 +- Drop upstreamed patches: -verbose_build, -givaro, -pari, -endian +- New patches: -fflas-ffpack, -format, -exception, -fplll, -configure +- Update bundled software +- Refresh INFO_FILES list + +* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.9.2-8 +- Escape macros in %%changelog + +* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 18 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.9.2-6 +- Remove obsolete scriptlets + +* Wed Oct 11 2017 Jerry James <loganjerry@gmail.com> - 1.9.2-5 +- Link rather than copy the normaliz binary +- Fix accidental replacement of factory symlink with a directory + +* Sat Sep 30 2017 Jerry James <loganjerry@gmail.com> - 1.9.2-4 +- Rebuild for ntl 10.5.0 + +* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Apr 5 2017 Jerry James <loganjerry@gmail.com> - 1.9.2-1 +- Macaulay2-1.9.2 +- Drop upstreamed patches: -disable_broken_debug_functions, -gc, -rpath, + -rh_configure_hack +- Add patches: -givaro, -gtest, -pari +- Create fake library and submodule tarballs to fool the build system into + building in support for system libraries +- Bundle mpfr, flint, and factory to avoid garbage collector crashes +- Replace the (X)Emacs triggers with (x)emacs-filesystem dependencies +- New URLs + +* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 1.6-33 +- Rebuild for readline 7.x + +* Thu Oct 20 2016 Jerry James <loganjerry@gmail.com> - 1.6-32 +- Rebuild for ntl 10.1.0 + +* Mon Sep 5 2016 Jerry James <loganjerry@gmail.com> - 1.6-31 +- Rebuild for ntl 9.11.0 + +* Fri Aug 12 2016 Jerry James <loganjerry@gmail.com> - 1.6-30 +- Rebuild for fflas-ffpack 2.2.2, givaro 4.0.2, and linbox 1.4.2 + +* Mon Jul 25 2016 Jerry James <loganjerry@gmail.com> - 1.6-29 +- Rebuild for ntl 9.10.0 + +* Thu Jun 2 2016 Jerry James <loganjerry@gmail.com> - 1.6-28 +- Rebuild for ntl 9.9.1 + +* Fri Apr 29 2016 Jerry James <loganjerry@gmail.com> - 1.6-27 +- Rebuild for ntl 9.8.0 +- Nauty is now available +- Drop -gcc-template-bug patch; gcc bug has been fixed + +* Sat Mar 19 2016 Jerry James <loganjerry@gmail.com> - 1.6-26 +- Rebuild for ntl 9.7.0 + +* Sat Feb 20 2016 Jerry James <loganjerry@gmail.com> - 1.6-25 +- Rebuild for ntl 9.6.4 +- Add -gcc-template-bug patch to work around gcc bug (bz 1307282) + +* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 14 2016 Jonathan Wakely <jwakely@redhat.com> - 1.6-23 +- Rebuilt for Boost 1.60 + +* Fri Dec 4 2015 Jerry James <loganjerry@gmail.com> - 1.6-22 +- Rebuild for ntl 9.6.2 +- Add python2 BR for the tests + +* Sat Oct 17 2015 Kalev Lember <klember@redhat.com> - 1.6-21 +- Rebuilt for libntl soname bump + +* Fri Oct 16 2015 Jerry James <loganjerry@gmail.com> - 1.6-20 +- Rebuild for ntl 9.4.0 + +* Tue Sep 29 2015 Rex Dieter <rdieter@fedoraproject.org> 1.6-19 +- refresh config.guess/config.sub hack, fix FTBFS on aarch64 + +* Sat Sep 19 2015 Jerry James <loganjerry@gmail.com> - 1.6-18 +- Rebuild for flint 2.5.2 and ntl 9.3.0 + +* Thu Aug 27 2015 Jonathan Wakely <jwakely@redhat.com> - 1.6-17 +- Rebuilt for Boost 1.59 + +* Wed Jul 29 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6-16 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon <dtardon@redhat.com> - 1.6-15 +- rebuild for Boost 1.58 + +* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon May 18 2015 Jerry James <loganjerry@gmail.com> - 1.6-13 +- Rebuild for ntl 9.1.1 and cddlib-094h + +* Fri May 15 2015 Jerry James <loganjerry@gmail.com> - 1.6-12 +- Bump and rebuild + +* Sat May 9 2015 Jerry James <loganjerry@gmail.com> - 1.6-11 +- Rebuild for ntl 9.1.0 + +* Mon Feb 2 2015 Jerry James <loganjerry@gmail.com> - 1.6-10 +- Rebuild for ntl 8.1.2 + +* Mon Jan 26 2015 Petr Machata <pmachata@redhat.com> - 1.6-9 +- Rebuild for boost 1.57.0 + +* Thu Jan 15 2015 Jerry James <loganjerry@gmail.com> - 1.6-8 +- Rebuild for ntl 8.1.0 +- Fix the desktop file name + +* Wed Oct 29 2014 Jerry James <loganjerry@gmail.com> - 1.6-7 +- Rebuild for ntl 6.2.1 +- Revert Apr 8 HTML creation timeout, now handled upstream +- Revert use of -common subpkg; various arches timeout differently + +* Wed Sep 24 2014 Rex Dieter <rdieter@fedoraproject.org> 1.6-6 +- enable -common subpkg (to be more compatible with upstream packaging) + +* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Jun 25 2014 Rex Dieter <rdieter@fedoraproject.org> 1.6-4 +- restore --build/--host configure options lost in 1.6 update, should help arm + +* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Petr Machata <pmachata@redhat.com> - 1.6-2 +- Rebuild for boost 1.55.0 + +* Mon May 19 2014 Rex Dieter <rdieter@fedoraproject.org> 1.6-1 +- Macaulay2-1.6 (#1074594) +- ExcludeArch: %%arm (#1099598) + +* Wed May 14 2014 Rex Dieter <rdieter@fedoraproject.org> 1.5-8 +- rebuild (gc) + +* Tue Apr 8 2014 Jerry James <loganjerry@gmail.com> - 1.5-7 +- Build for all arches +- Increase HTML creation timeouts for slower processors, such as ARM +- Add --build and --host invocations to configure to fix mismatched ARM names + +* Wed Apr 2 2014 Jerry James <loganjerry@gmail.com> - 1.5-6 +- Rebuild for ntl 6.1.0 + +* Fri Mar 21 2014 Jerry James <loganjerry@gmail.com> - 1.5-5 +- The normaliz patch was used; bring it back +- Complete the removal of the system_normaliz variable +- Link with RPM_LD_FLAGS +- Due to use of a static library, explicitly link with -lflint + +* Fri Jan 24 2014 Rex Dieter <rdieter@fedoraproject.org> - 1.5-5 +- drop unused patches (4ti2, normalize) + +* Tue Jan 21 2014 Rex Dieter <rdieter@fedoraproject.org> - 1.5-4 +- utilize %%_libexecdir/Macaulay2/... for helper/system binaries +- libdir: %%_libdir => %%_prefix/lib +- -common subpkg option (not used yet) + +* Tue Jan 14 2014 Jerry James <loganjerry@gmail.com> - 1.5-3 +- Update normaliz interface for normaliz 2.8 and later + +* Tue Jul 30 2013 Petr Machata <pmachata@redhat.com> - 1.5-2 +- Rebuild for boost 1.54.0 + +* Thu May 23 2013 Rex Dieter <rdieter@fedoraproject.org> 1.5-1 +- Release: 1 (using non-snapshot release tarball now) + +* Tue May 21 2013 Rex Dieter <rdieter@fedoraproject.org> - 1.5-0.7.20130401 +- update to 20130401 r15955 snapshot release +- (Build)Requires: factory-gftables (see bug #965655) +- refresh INFO_FILES content + +* Mon May 6 2013 Jerry James <loganjerry@gmail.com> - 1.5-0.6.20130214 +- Rebuild for m4ri 20130416 + +* Fri Feb 15 2013 Rex Dieter <rdieter@fedoraproject.org> 1.5-0.5.20130214 +- r15838 (20130214 snapshot) + +* Wed Feb 13 2013 Rex Dieter <rdieter@fedoraproject.org> 1.5-0.4.20120807 +- BR: doxygen-latex + +* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5-0.3.20120807 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Aug 07 2012 Rex Dieter <rdieter@fedoraproject.org> 1.5-0.2.20120807 +- 1.5 20120807 r15022 snapshot + +* Thu Jul 19 2012 Rex Dieter <rdieter@fedoraproject.org> 1.4-9 +- rebuild against (Singular's) libfac/factory 3.1.3 + +* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 03 2012 Rex Dieter <rdieter@fedoraproject.org> 1.4-7 +- rebuild (pari) + +* Sun Jul 1 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 1.4-6 +- Link to gmp not mpir. +- Rebuild with pari 2.5. + +* Wed May 30 2012 Rex Dieter <rdieter@fedoraproject.org> +- 1.4-5 +- License: GPLv2 or GPLv3 (#821036) +- pkgconfig-style deps + +* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-4 +- Rebuilt for c++ ABI breakage + +* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Sep 30 2011 Rex Dieter <rdieter@fedoraproject.org> 1.4-2 +- rebuild (gdbm) + +* Thu May 26 2011 Rex Dieter <rdieter@fedoraproject.org> 1.4-1 +- 1.4 + +* Thu May 26 2011 Rex Dieter <rdieter@fedoraproject.org> 1.3.1-9 +- Typo in INFO_FILES (#708086) + +* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jun 30 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.3.1-7 +- BR: cddlib-static (#609698) + +* Tue Mar 16 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.3.1-6 +- rebuild (factory/libfac) + +* Tue Mar 16 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.1-5 +- Run install-info on all of the .info files we installed +- Re-enable the now functional ppc64 build + +* Wed Mar 10 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.1-4 +- Add in missing Requires runtime dependancies + +* Wed Mar 10 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.1-3 +- GPLv3/GPLv2 conflict, use compat-readline5 - bz#511299 + +* Tue Mar 09 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.1-2 +- Replace DSO patch with one accepted upstream +- Completely disable static linking + +* Wed Feb 24 2010 Mark Chappell <tremble@fedoraproject.org> - 1.3.1-1 +- Upstream version increment +- Remove unused patch +- Remove patch applied upstream +- Ensure consistent use of buildroot macro instead of RPM_BUILD_ROOT +- Fix implicit linking DSO failure +- Don't package empty .okay files which simply indicate test passes + +* Tue Dec 8 2009 Michael Schwendt <mschwendt@fedoraproject.org> - 1.2-7 +- Explicitly BR factory-static and libfac-static in accordance with the + Packaging Guidelines (factory-devel/libfac-devel are still static-only). + +* Tue Sep 22 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.2-6 +- fixup/optimize scriplets + +* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Apr 17 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.2-4 +- rebuild for ntl-devel (shared) + +* Wed Feb 25 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.2-3 +- BR: libfac-devel,factory-devel >= 3.1 +- restore ExcludeArch: ppc64 (#253847) + +* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 13 2009 Rex Dieter <rdieter@fedoraproject.org> 1.2-1 +- Macaulay-1.2 + +* Thu Oct 02 2008 Rex Dieter <rdieter@fedoraproject.org> 1.1-2 +- respin (factory/libfac) + +* Tue Mar 11 2008 Rex Dieter <rdieter@fedoraproject.org> 1.1-1 +- Macaulay2-1.1 +- Obsoletes/Provides: Macaulay2-common (upstream compatibility) +- re-enable ppc64 (#253847) +- IgnoreExampleErrors=true + +* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 0.9.95-10 +- Autorebuild for GCC 4.3 + +* Tue Dec 18 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-9 +- Provides: macaulay2 +- respin against new(er) factory,libfac,ntl + +* Wed Aug 22 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-8 +- ExcludeArch: ppc64 (#253847) + +* Tue Aug 21 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-7 +- BR: gawk + +* Tue Aug 21 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-6 +- gc-7.0 patches + +* Sat Aug 11 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-5 +- License: GPLv2 + +* Mon Jan 15 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-4 +- Ob/Pr: Macaulay2-doc, not -docs (#222609) + +* Sat Jan 06 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-3 +- re-enable ppc build (#201739) + +* Tue Jan 02 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 0.9.95-2 +- ./configure --disable-strip, for usable -debuginfo (#220893) + +* Mon Dec 18 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.95-1 +- Macaulay2-0.9.95 + +* Wed Nov 22 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.20-0.5.20060808svn +- .desktop Categories: -Application,Scientific,X-Fedora +ConsoleOnly + +* Tue Aug 29 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.20-0.4.20060808svn +- fc6 respin + +* Tue Aug 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.20-0.3.20060808svn +- ExcludeArch: ppc (bug #201739) +- %%ghost (x)emacs site-lisp bits (using hints from fedora-rpmdevtools) + +* Tue Aug 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.20-0.2.20060808svn +- 20060808 snapshot + +* Mon Jul 24 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.20-0.1.20060724svn +- 2006-07-15-0.9.20 + +* Wed Jul 12 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.10-0.6.20060710svn +- 0.9.10 + +-* Mon Jul 10 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.8-0.6.cvs20060327 +- BR: ncurses-devel + +* Fri May 05 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.8-0.4.cvs20060327 +- 64bit patch (#188709) + +* Wed Apr 12 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.8-0.3.cvs20060327 +- omit x86_64, for now (#188709) + +* Tue Apr 11 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.8-0.2.cvs20060327 +- 0.9.8 (cvs, no tarball yet) +- drop -doc subpkg (in main now) + +* Mon Apr 10 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.2-22 +- fix icon location (#188384) + +* Thu Mar 30 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.2-21 +- really disable %%check (fails on fc5+ anyway) + +* Fri Jan 20 2006 Rex Dieter <rexdieter[AT]users.sf.net> 0.9.2-20 +- .desktop: drop Category=Development +- app icon: follow icon spec +- drop -emacs subpkg (in main now) + +* Fri Sep 16 2005 Rex Dieter <rexdieter[AT]users.sf.net> - 0.9.2-19 +- disable 'make check' (fc5/buildsystem error), besides, we get a + good consistency check when M2 builds all the doc examples. + +* Wed Sep 14 2005 Rex Dieter <rexdieter[AT]users.sf.net> - 0.9.2-18 +- rebuild against gc-6.6 + +* Thu May 26 2005 Michael Schwendt <mschwendt[AT]users.sf.net> - 0.9.2-17 +- rebuild (build system x86_64 repository access failed for 0.9.2-16) +- fix build for GCC 4 (#156223) + +* Thu Apr 7 2005 Michael Schwendt <mschwendt[AT]users.sf.net> - 0.9.2-15 +- rebuilt + +* Mon Feb 21 2005 Rex Dieter <rexdieter[AT]users.sf.net> 0:0.9.2-14 +- x86_64 issues (%%_libdir -> %%_prefix/lib ) +- remove desktop_file macro usage + +* Sat Oct 23 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.13 +- BR: time (again) +- omit m2_dir/setup (not needed/wanted) + +* Mon Oct 18 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.12 +- actually *apply* gcc34 patch this time. + +* Mon Oct 18 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.11 +- gcc34 patch + +* Fri Oct 1 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.10 +- explicit BR versions for gc-devel, libfac-devel, factory-devel + +* Tue Aug 10 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.9 +- BR: time + +* Thu Jun 03 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.8 +- .desktop: remove Terminaloptions to be desktop agnostic +- .desktop: Categories += Education;Math;Development (Devel only + added so it shows *somewhere* in gnome menus) + +* Tue Jun 01 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.7 +- disable default 'make check' (util/screen fails on fc2) + +* Tue Mar 30 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.6 +- desktop-file is now on by default +- use separate (not inline) .desktop file + +* Mon Jan 05 2004 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.5 +- fix BuildRequires: desktop-file-utils to satisfy rpmlint. +- put emacs files in emacs subdir too (to follow supplied docs) +- *really* nuke .cvsignore files +- fix desktop-file-install --add-cateagories usage + +* Tue Dec 23 2003 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.4 +- -emacs: use %%defattr +- -emacs: fix M2-init.el + +* Mon Nov 17 2003 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.3 +- update/simplify macros +- desktop_file support. +- emacs subpkg. +- relax Req's on subpkgs to just: Requires: %%name = %%epoch:%%version +- use non-versioned BuildRequires +- remove redundant BuildRequires: gmp-devel +- remove gc patch, no longer needed. +- delete/not-package a bunch of unuseful files. +- use --disable-strip when debug_package is in use. + +* Thu Nov 13 2003 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.2 +- no longer explictly Requires: emacs + +* Wed Nov 05 2003 Rex Dieter <rexdieter at sf.net> 0:0.9.2-0.fdr.1 +- missing Epoch: 0 + +* Fri Sep 12 2003 Rex Dieter <rexdieter at sf.net> 0.9.2-0.fdr.0 +- fedora'ize + diff --git a/com.macaulay2.macaulay2.desktop b/com.macaulay2.macaulay2.desktop new file mode 100644 index 0000000..3bbebc5 --- /dev/null +++ b/com.macaulay2.macaulay2.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=Macaulay2 +Exec=M2 +Icon=Macaulay2 +Terminal=true +Type=Application +Categories=ConsoleOnly;Education;Math; diff --git a/com.macaulay2.macaulay2.metainfo.xml b/com.macaulay2.macaulay2.metainfo.xml new file mode 100644 index 0000000..2ae837e --- /dev/null +++ b/com.macaulay2.macaulay2.metainfo.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>com.macaulay2.macaulay2</id> + <metadata_license>0BSD</metadata_license> + <project_license>GPL-2.0-only OR GPL-3.0-only</project_license> + <name>Macaulay2</name> + <summary>System for algebraic geometry and commutative algebra</summary> + <description> + <p> + Macaulay 2 is a software system devoted to supporting research in + algebraic geometry and commutative algebra written by Daniel R. Grayson + and Michael E. Stillman. + </p> + </description> + <launchable type="desktop-id">com.macaulay2.macaulay2.desktop</launchable> + <screenshots> + <screenshot type="default"> + <image>https://faculty.math.illinois.edu/Macaulay2/Screenshots/texmacs.png</image> + <caption>Macaulay2 with TeXmacs</caption> + </screenshot> + <screenshot> + <image>https://faculty.math.illinois.edu/Macaulay2/Screenshots/emacs-M2-c.png</image> + <caption>Macaulay2 with Emacs</caption> + </screenshot> + </screenshots> + <update_contact>loganjerry@gmail.com</update_contact> + <url type="homepage">https://macaulay2.com/</url> + <url type="bugtracker">https://github.com/Macaulay2/M2/issues</url> + <url type="contact">https://groups.google.com/g/macaulay2</url> + <content_rating type="oars-1.0"></content_rating> + <provides> + <binary>M2</binary> + <binary>M2-binary</binary> + </provides> +</component> diff --git a/etags.sh b/etags.sh new file mode 100644 index 0000000..17d0c2e --- /dev/null +++ b/etags.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +for ETAGS in etags.emacs etags ; do + test -x /usr/bin/$ETAGS && exec $ETAGS ${1+"$@"} +done + +exit 1 diff --git a/linbox-1.6.3.patch b/linbox-1.6.3.patch new file mode 100644 index 0000000..f2481c0 --- /dev/null +++ b/linbox-1.6.3.patch @@ -0,0 +1,35 @@ +--- linbox-1.6.3/configure.ac.orig 2019-06-07 07:22:08.000000000 -0600 ++++ linbox-1.6.3/configure.ac 2020-06-05 12:24:32.920910975 -0600 +@@ -65,9 +65,8 @@ AC_PROG_CXX + + AC_COMPILER_NAME + +-STDFLAG=${CXXFLAGS} ++STDFLAG="" + +-CXXFLAGS="" + + # We need a C++11 compiler now - AB 2014-12-12 + # clang-3.8 does not support __float128 without explicitly passing it -std=c++11 +@@ -187,10 +186,6 @@ echo "---------------------------------- + echo " START LINBOX CONFIG " + echo "-----------------------------------------------" + +-# Checks which SIMD optimization flags to use and set SIMD_CFLAGS accordingly +-INSTR_SET +-AC_SUBST(SIMD_FLAGS) +- + dnl gcc-4.9.2 bug See https://trac.sagemath.org/ticket/17635#comment:178 + AS_IF([ test "x$CCNAM" = "xgcc492" ],[CXXFLAGS="${CXXFLAGS} -fpermissive"],[]) + +--- linbox-1.6.3/linbox/algorithms/gauss/gauss-solve-gf2.inl.orig 2019-06-07 07:22:08.000000000 -0600 ++++ linbox-1.6.3/linbox/algorithms/gauss/gauss-solve-gf2.inl 2020-02-01 16:19:20.692143829 -0700 +@@ -72,7 +72,7 @@ namespace LinBox + + Vector1 w(F2, A.coldim()); + +- for(typename Vector1::iterator it=w.begin()+(ptrdiff_t)Rank;it!=w.end();++it) ++ for(typename Vector1::iterator it=w.begin()+(long)Rank;it!=w.end();++it) + F2.assign(*it,F2.zero); + + return this->solve(x, w, Rank, Q, L, A, P, b); diff --git a/mpfr-4.1.0.patch b/mpfr-4.1.0.patch new file mode 100644 index 0000000..30775a5 --- /dev/null +++ b/mpfr-4.1.0.patch @@ -0,0 +1,1747 @@ +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:40:40.079363480 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:40:40.119363040 +0000 +@@ -0,0 +1 @@ ++decimal128-conv +--- mpfr-4.1.0/VERSION.orig 2020-07-10 11:52:33.000000000 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:40:40.119363040 +0000 +@@ -1 +1 @@ +-4.1.0 ++4.1.0-p1 +--- mpfr-4.1.0/src/get_d128.c.orig 2020-04-08 22:39:35.000000000 +0000 ++++ mpfr-4.1.0/src/get_d128.c 2021-02-11 12:40:40.103363216 +0000 +@@ -40,22 +40,21 @@ + static _Decimal128 + get_decimal128_nan (void) + { +- return (_Decimal128) MPFR_DBL_NAN; ++ return 0.0dl / 0.0dl; + } + + /* construct the decimal128 Inf with given sign */ + static _Decimal128 + get_decimal128_inf (int negative) + { +- return (_Decimal128) (negative ? MPFR_DBL_INFM : MPFR_DBL_INFP); ++ return negative ? - 1.0dl / 0.0dl : 1.0dl / 0.0dl; + } + + /* construct the decimal128 zero with given sign */ + static _Decimal128 + get_decimal128_zero (int negative) + { +- _Decimal128 zero = 0; +- return (_Decimal128) (negative ? -zero : zero); ++ return negative ? - 0.0dl : 0.0dl; + } + + /* construct the decimal128 smallest non-zero with given sign: +--- mpfr-4.1.0/src/mpfr.h.orig 2020-07-10 11:52:33.000000000 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:40:40.115363084 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0" ++#define MPFR_VERSION_STRING "4.1.0-p1" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2020-07-10 11:52:33.000000000 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:40:40.119363040 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0"; ++ return "4.1.0-p1"; + } +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:43:51.761257868 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:43:51.801257430 +0000 +@@ -0,0 +1 @@ ++random_deviate +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:40:40.119363040 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:43:51.801257430 +0000 +@@ -1 +1 @@ +-4.1.0-p1 ++4.1.0-p2 +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:40:40.115363084 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:43:51.801257430 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p1" ++#define MPFR_VERSION_STRING "4.1.0-p2" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/random_deviate.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/random_deviate.c 2021-02-11 12:43:51.789257562 +0000 +@@ -289,6 +289,7 @@ + mpfr_random_size_t p = mpfr_get_prec (z); /* Number of bits in result */ + mpz_t t; + int inex; ++ mpfr_exp_t negxe; + + if (n == 0) + { +@@ -370,14 +371,22 @@ + mpz_setbit (t, 0); /* Set the trailing bit so result is always inexact */ + if (neg) + mpz_neg (t, t); +- /* Is -x->e representable as a mpfr_exp_t? */ +- MPFR_ASSERTN (x->e <= (mpfr_uexp_t)(-1) >> 1); ++ /* Portable version of the negation of x->e, with a check of overflow. */ ++ if (MPFR_UNLIKELY (x->e > MPFR_EXP_MAX)) ++ { ++ /* Overflow, except when x->e = MPFR_EXP_MAX + 1 = - MPFR_EXP_MIN. */ ++ MPFR_ASSERTN (MPFR_EXP_MIN + MPFR_EXP_MAX == -1 && ++ x->e == (mpfr_random_size_t) MPFR_EXP_MAX + 1); ++ negxe = MPFR_EXP_MIN; ++ } ++ else ++ negxe = - (mpfr_exp_t) x->e; + /* + * Let mpfr_set_z_2exp do all the work of rounding to the requested + * precision, setting overflow/underflow flags, and returning the right + * inexact value. + */ +- inex = mpfr_set_z_2exp (z, t, -x->e, rnd); ++ inex = mpfr_set_z_2exp (z, t, negxe, rnd); + mpz_clear (t); + return inex; + } +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:40:40.119363040 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:43:51.801257430 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p1"; ++ return "4.1.0-p2"; + } +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:46:49.075316772 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:46:49.115316335 +0000 +@@ -0,0 +1 @@ ++set_z_2exp-overflow +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:43:51.801257430 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:46:49.115316335 +0000 +@@ -1 +1 @@ +-4.1.0-p2 ++4.1.0-p3 +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:43:51.801257430 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:46:49.115316335 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p2" ++#define MPFR_VERSION_STRING "4.1.0-p3" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/set_z_exp.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/set_z_exp.c 2021-02-11 12:46:49.103316466 +0000 +@@ -28,10 +28,11 @@ + int + mpfr_set_z_2exp (mpfr_ptr f, mpz_srcptr z, mpfr_exp_t e, mpfr_rnd_t rnd_mode) + { +- mp_size_t fn, zn, dif, en; ++ mp_size_t fn, zn, dif; + int k, sign_z, inex; + mp_limb_t *fp, *zp; +- mpfr_exp_t exp; ++ mpfr_exp_t exp, nmax; ++ mpfr_uexp_t uexp; + + sign_z = mpz_sgn (z); + if (MPFR_UNLIKELY (sign_z == 0)) /* ignore the exponent for 0 */ +@@ -43,10 +44,15 @@ + MPFR_ASSERTD (sign_z == MPFR_SIGN_POS || sign_z == MPFR_SIGN_NEG); + + zn = ABSIZ(z); /* limb size of z */ +- /* compute en = floor(e/GMP_NUMB_BITS) */ +- en = (e >= 0) ? e / GMP_NUMB_BITS : (e + 1) / GMP_NUMB_BITS - 1; + MPFR_ASSERTD (zn >= 1); +- if (MPFR_UNLIKELY (zn + en > MPFR_EMAX_MAX / GMP_NUMB_BITS + 1)) ++ nmax = MPFR_EMAX_MAX / GMP_NUMB_BITS + 1; ++ /* Detect early overflow with zn + en > nmax, ++ where en = floor(e / GMP_NUMB_BITS). ++ This is checked without an integer overflow (even assuming some ++ future version of GMP, where limitations may be removed). */ ++ if (MPFR_UNLIKELY (e >= 0 ? ++ zn > nmax - e / GMP_NUMB_BITS : ++ zn + (e + 1) / GMP_NUMB_BITS - 1 > nmax)) + return mpfr_overflow (f, rnd_mode, sign_z); + /* because zn + en >= MPFR_EMAX_MAX / GMP_NUMB_BITS + 2 + implies (zn + en) * GMP_NUMB_BITS >= MPFR_EMAX_MAX + GMP_NUMB_BITS + 1 +@@ -64,8 +70,21 @@ + and exp = zn * GMP_NUMB_BITS + e - k + <= (zn + en) * GMP_NUMB_BITS - k + GMP_NUMB_BITS - 1 + <= MPFR_EMAX_MAX + 2 * GMP_NUMB_BITS - 1 */ +- exp = (mpfr_prec_t) zn * GMP_NUMB_BITS + e - k; ++ /* We need to compute exp = zn * GMP_NUMB_BITS + e - k with well-defined ++ operations (no integer overflows / no implementation-defined results). ++ The mathematical result of zn * GMP_NUMB_BITS may be larger than ++ the largest value of mpfr_exp_t while exp could still be less than ++ __gmpfr_emax. Thanks to early overflow detection, we can compute the ++ result in modular arithmetic, using mpfr_uexp_t, and convert it to ++ mpfr_exp_t. */ ++ uexp = (mpfr_uexp_t) zn * GMP_NUMB_BITS + (mpfr_uexp_t) e - k; ++ ++ /* Convert to signed in a portable way (see doc/README.dev). ++ On most platforms, this can be optimized to identity (no-op). */ ++ exp = uexp > MPFR_EXP_MAX ? -1 - (mpfr_exp_t) ~uexp : (mpfr_exp_t) uexp; ++ + /* The exponent will be exp or exp + 1 (due to rounding) */ ++ + if (MPFR_UNLIKELY (exp > __gmpfr_emax)) + return mpfr_overflow (f, rnd_mode, sign_z); + if (MPFR_UNLIKELY (exp + 1 < __gmpfr_emin)) +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:43:51.801257430 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:46:49.115316335 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p2"; ++ return "4.1.0-p3"; + } +--- mpfr-4.1.0/tests/tset_z_exp.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tset_z_exp.c 2021-02-11 12:46:49.103316466 +0000 +@@ -97,49 +97,149 @@ + mpfr_get_si is a rather indirect test of a low level routine. */ + + static void +-check (long i, mpfr_rnd_t rnd) ++check (long i, mpfr_rnd_t rnd, int reduced) + { +- mpfr_t f; ++ mpfr_t f1, f2, f3; + mpz_t z; +- mpfr_exp_t e; ++ mpfr_exp_t e, old_emin, old_emax; + int inex; ++ mpfr_flags_t flags; ++ ++ old_emin = mpfr_get_emin (); ++ old_emax = mpfr_get_emax (); + + /* using CHAR_BIT * sizeof(long) bits of precision ensures that + mpfr_set_z_2exp is exact below */ +- mpfr_init2 (f, CHAR_BIT * sizeof(long)); ++ mpfr_inits2 (CHAR_BIT * sizeof(long), f1, f2, f3, (mpfr_ptr) 0); + mpz_init (z); + mpz_set_ui (z, i); + /* the following loop ensures that no overflow occurs */ + do + e = randexp (); + while (e > mpfr_get_emax () - CHAR_BIT * sizeof(long)); +- inex = mpfr_set_z_2exp (f, z, e, rnd); +- if (inex != 0) ++ ++ mpfr_clear_flags (); ++ inex = mpfr_set_z_2exp (f1, z, e, rnd); ++ flags = __gmpfr_flags; ++ ++ if (inex != 0 || flags != 0 || ++ (mpfr_div_2si (f2, f1, e, rnd), mpfr_get_si (f2, MPFR_RNDZ) != i)) + { +- printf ("Error in mpfr_set_z_2exp for i=%ld, e=%ld," +- " wrong ternary value\n", i, (long) e); +- printf ("expected 0, got %d\n", inex); ++ printf ("Error in mpfr_set_z_2exp for i=%ld e=%" MPFR_EXP_FSPEC ++ "d rnd_mode=%d\n", i, (mpfr_eexp_t) e, rnd); ++ mpfr_set_si_2exp (f2, i, e, MPFR_RNDN); ++ printf ("expected "); mpfr_dump (f2); ++ printf ("with inex = %d and flags =", 0); ++ flags_out (0); ++ printf ("got "); mpfr_dump (f1); ++ printf ("with inex = %d and flags =", inex); ++ flags_out (flags); + exit (1); + } +- mpfr_div_2si (f, f, e, rnd); +- if (mpfr_get_si (f, MPFR_RNDZ) != i) ++ ++ if (reduced) + { +- printf ("Error in mpfr_set_z_2exp for i=%ld e=", i); +- if (e < LONG_MIN) +- printf ("(<LONG_MIN)"); +- else if (e > LONG_MAX) +- printf ("(>LONG_MAX)"); +- else +- printf ("%ld", (long) e); +- printf (" rnd_mode=%d\n", rnd); +- printf ("expected %ld\n", i); +- printf ("got "); mpfr_dump (f); +- exit (1); ++ mpfr_exp_t ef, emin, emax; ++ int inex2, inex3; ++ mpfr_flags_t flags2, flags3; ++ ++ ef = i == 0 ? 0 : mpfr_get_exp (f1); ++ for (emin = ef - 2; emin <= ef + 2; emin++) ++ for (emax = emin; emax <= ef + 2; emax++) ++ { ++ inex3 = mpfr_set (f3, f1, rnd); ++ MPFR_ASSERTN (inex3 == 0); ++ mpfr_set_emin (emin); ++ mpfr_set_emax (emax); ++ mpfr_clear_flags (); ++ inex2 = mpfr_set_z_2exp (f2, z, e, rnd); ++ flags2 = __gmpfr_flags; ++ mpfr_clear_flags (); ++ inex3 = mpfr_check_range (f3, 0, rnd); ++ flags3 = __gmpfr_flags; ++ if (!(mpfr_equal_p (f2, f3) && ++ SAME_SIGN (inex2, inex3) && ++ flags2 == flags3)) ++ { ++ printf ("Error in mpfr_set_z_2exp for i=%ld e=%" ++ MPFR_EXP_FSPEC "d rnd_mode=%d\nand emin=%" ++ MPFR_EXP_FSPEC "d emax=%" MPFR_EXP_FSPEC ++ "d\n", i, (mpfr_eexp_t) e, rnd, ++ (mpfr_eexp_t) emin, (mpfr_eexp_t) emax); ++ printf ("expected "); mpfr_dump (f3); ++ printf ("with inex = %d and flags =", inex3); ++ flags_out (flags3); ++ printf ("got "); mpfr_dump (f2); ++ printf ("with inex = %d and flags =", inex2); ++ flags_out (flags2); ++ exit (1); ++ } ++ } ++ mpfr_set_emin (old_emin); ++ mpfr_set_emax (old_emax); + } +- mpfr_clear (f); ++ ++ mpfr_clears (f1, f2, f3, (mpfr_ptr) 0); + mpz_clear (z); + } + ++static void ++check_huge (void) ++{ ++ if (getenv ("MPFR_CHECK_LARGEMEM") != NULL) ++ { ++ mpfr_t x; ++ mpz_t z; ++ long e; ++ ++ /* Increase tests_memory_limit to the maximum in order to avoid ++ an obvious failure due to insufficient memory. */ ++ tests_memory_limit = (size_t) -1; /* no memory limit */ ++ ++ mpfr_init2 (x, 32); ++ ++ /* In r14140, with a 32-bit ABI (GCC's -m32): ++ - With UBsan (-fsanitize=undefined -fno-sanitize-recover), ++ this fails with: ++ set_z_2exp.c:71:26: runtime error: signed integer overflow: ++ 67108864 * 32 cannot be represented in type 'long int' ++ - With -D_MPFR_EXP_FORMAT=4, this fails with: ++ Expected 0.10001000000000000000000000000000E5 ++ Got 0 ++ */ ++ mpz_init_set_ui (z, 17); ++ e = 0x7ffffff0; ++ mpz_mul_2exp (z, z, e); ++ mpz_add_ui (z, z, 1); ++ mpfr_set_z_2exp (x, z, -e, MPFR_RNDN); ++ if (mpfr_cmp_ui0 (x, 17) != 0) ++ { ++ printf ("Error 1 in check_huge\n"); ++ printf ("Expected 0.10001000000000000000000000000000E5\n"); ++ printf ("Got "); ++ mpfr_dump (x); ++ exit (1); ++ } ++ mpz_clear (z); ++ ++ mpz_init_set_ui (z, 17); ++ mpz_mul_2exp (z, z, 0xffffffb0); ++ mpz_add_ui (z, z, 1); ++ mpfr_set_z_2exp (x, z, -1, MPFR_RNDN); ++ if (! MPFR_IS_INF (x) || MPFR_IS_NEG (x)) ++ { ++ printf ("Error 2 in check_huge\n"); ++ printf ("Expected @Inf@\n"); ++ printf ("Got "); ++ mpfr_dump (x); ++ exit (1); ++ } ++ mpz_clear (z); ++ ++ mpfr_clear (x); ++ } ++} ++ + int + main (int argc, char *argv[]) + { +@@ -147,11 +247,13 @@ + + tests_start_mpfr (); + +- check (0, MPFR_RNDN); ++ check (0, MPFR_RNDN, 0); + for (j = 0; j < 200000; j++) +- check (randlimb () & LONG_MAX, RND_RAND ()); ++ check (randlimb () & LONG_MAX, RND_RAND (), j < 200); + check0 (); + ++ check_huge (); ++ + tests_end_mpfr (); + + return 0; +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:48:27.322243271 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:48:27.370242746 +0000 +@@ -0,0 +1 @@ ++prototypes +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:46:49.115316335 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:48:27.370242746 +0000 +@@ -1 +1 @@ +-4.1.0-p3 ++4.1.0-p4 +--- mpfr-4.1.0/src/atan.c.orig 2020-04-22 15:27:07.000000000 +0000 ++++ mpfr-4.1.0/src/atan.c 2021-02-11 12:48:27.354242922 +0000 +@@ -56,7 +56,7 @@ + }; + + static void +-set_table (mpfr_t y, const mp_limb_t x[3]) ++set_table (mpfr_ptr y, const mp_limb_t x[3]) + { + mpfr_prec_t p = MPFR_PREC(y); + mp_size_t n = MPFR_PREC2LIMBS(p); +--- mpfr-4.1.0/src/const_euler.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/const_euler.c 2021-02-11 12:48:27.354242922 +0000 +@@ -181,7 +181,7 @@ + } + + int +-mpfr_const_euler_internal (mpfr_t x, mpfr_rnd_t rnd) ++mpfr_const_euler_internal (mpfr_ptr x, mpfr_rnd_t rnd) + { + mpfr_const_euler_bs_t sum; + mpz_t t, u, v; +--- mpfr-4.1.0/src/eint.c.orig 2020-03-09 15:31:45.000000000 +0000 ++++ mpfr-4.1.0/src/eint.c 2021-02-11 12:48:27.354242922 +0000 +@@ -36,7 +36,7 @@ + Return PREC(y) when the truncated series does not converge. + */ + static mpfr_exp_t +-mpfr_eint_aux (mpfr_t y, mpfr_srcptr x) ++mpfr_eint_aux (mpfr_ptr y, mpfr_srcptr x) + { + mpfr_t eps; /* dynamic (absolute) error bound on t */ + mpfr_t erru, errs; +--- mpfr-4.1.0/src/erandom.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/erandom.c 2021-02-11 12:48:27.354242922 +0000 +@@ -80,7 +80,7 @@ + + /* return an exponential random deviate with mean 1 as a MPFR */ + int +-mpfr_erandom (mpfr_t z, gmp_randstate_t r, mpfr_rnd_t rnd) ++mpfr_erandom (mpfr_ptr z, gmp_randstate_t r, mpfr_rnd_t rnd) + { + mpfr_random_deviate_t x, p, q; + int inex; +--- mpfr-4.1.0/src/fpif.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/fpif.c 2021-02-11 12:48:27.354242922 +0000 +@@ -291,7 +291,8 @@ + * until one has integer types larger than 128 bits). + */ + static unsigned char* +-mpfr_fpif_store_exponent (unsigned char *buffer, size_t *buffer_size, mpfr_t x) ++mpfr_fpif_store_exponent (unsigned char *buffer, size_t *buffer_size, ++ mpfr_ptr x) + { + unsigned char *result; + mpfr_uexp_t uexp; +@@ -372,7 +373,7 @@ + * than 128 bits). + */ + static int +-mpfr_fpif_read_exponent_from_file (mpfr_t x, FILE * fh) ++mpfr_fpif_read_exponent_from_file (mpfr_ptr x, FILE * fh) + { + mpfr_exp_t exponent; + mpfr_uexp_t uexp; +@@ -456,7 +457,7 @@ + * format + */ + static unsigned char* +-mpfr_fpif_store_limbs (unsigned char *buffer, size_t *buffer_size, mpfr_t x) ++mpfr_fpif_store_limbs (unsigned char *buffer, size_t *buffer_size, mpfr_ptr x) + { + unsigned char *result; + mpfr_prec_t precision; +@@ -492,7 +493,7 @@ + * Assume buffer is not NULL. + */ + static void +-mpfr_fpif_read_limbs (mpfr_t x, unsigned char *buffer, size_t nb_byte) ++mpfr_fpif_read_limbs (mpfr_ptr x, unsigned char *buffer, size_t nb_byte) + { + size_t mp_bytes_per_limb; + size_t nb_partial_byte; +@@ -522,7 +523,7 @@ + * return 0 if successful + */ + int +-mpfr_fpif_export (FILE *fh, mpfr_t x) ++mpfr_fpif_export (FILE *fh, mpfr_ptr x) + { + int status; + unsigned char *buf; +@@ -582,7 +583,7 @@ + * Return 0 if the import was successful. + */ + int +-mpfr_fpif_import (mpfr_t x, FILE *fh) ++mpfr_fpif_import (mpfr_ptr x, FILE *fh) + { + int status; + mpfr_prec_t precision; +--- mpfr-4.1.0/src/li2.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/li2.c 2021-02-11 12:48:27.354242922 +0000 +@@ -31,7 +31,7 @@ + for determinating the relative error. + */ + static int +-li2_series (mpfr_t sum, mpfr_srcptr z, mpfr_rnd_t rnd_mode) ++li2_series (mpfr_ptr sum, mpfr_srcptr z, mpfr_rnd_t rnd_mode) + { + int i; + mpfr_t s, u, v, w; +--- mpfr-4.1.0/src/lngamma.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/lngamma.c 2021-02-11 12:48:27.354242922 +0000 +@@ -31,7 +31,7 @@ + precision should be >= 4. + */ + static void +-mpfr_gamma_alpha (mpfr_t s, mpfr_prec_t p) ++mpfr_gamma_alpha (mpfr_ptr s, mpfr_prec_t p) + { + MPFR_LOG_FUNC + (("p=%Pu", p), +--- mpfr-4.1.0/src/mpfr-impl.h.orig 2020-06-10 21:50:12.000000000 +0000 ++++ mpfr-4.1.0/src/mpfr-impl.h 2021-02-11 12:48:27.354242922 +0000 +@@ -2474,7 +2474,8 @@ + __MPFR_DECLSPEC mpz_srcptr mpfr_bernoulli_cache (unsigned long); + __MPFR_DECLSPEC void mpfr_bernoulli_freecache (void); + +-__MPFR_DECLSPEC int mpfr_sincos_fast (mpfr_t, mpfr_t, mpfr_srcptr, mpfr_rnd_t); ++__MPFR_DECLSPEC int mpfr_sincos_fast (mpfr_ptr, mpfr_ptr, mpfr_srcptr, ++ mpfr_rnd_t); + + __MPFR_DECLSPEC double mpfr_scale2 (double, int); + +@@ -2485,7 +2486,7 @@ + mpfr_prec_t); + + __MPFR_DECLSPEC void mpfr_mpz_init (mpz_ptr); +-__MPFR_DECLSPEC void mpfr_mpz_init2 (mpz_t, mp_bitcnt_t); ++__MPFR_DECLSPEC void mpfr_mpz_init2 (mpz_ptr, mp_bitcnt_t); + __MPFR_DECLSPEC void mpfr_mpz_clear (mpz_ptr); + + __MPFR_DECLSPEC int mpfr_odd_p (mpfr_srcptr); +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:46:49.115316335 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:48:27.366242791 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p3" ++#define MPFR_VERSION_STRING "4.1.0-p4" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +@@ -781,8 +781,8 @@ + __MPFR_DECLSPEC int mpfr_strtofr (mpfr_ptr, const char *, char **, int, + mpfr_rnd_t); + +-__MPFR_DECLSPEC void mpfr_round_nearest_away_begin (mpfr_t); +-__MPFR_DECLSPEC int mpfr_round_nearest_away_end (mpfr_t, int); ++__MPFR_DECLSPEC void mpfr_round_nearest_away_begin (mpfr_ptr); ++__MPFR_DECLSPEC int mpfr_round_nearest_away_end (mpfr_ptr, int); + + __MPFR_DECLSPEC size_t mpfr_custom_get_size (mpfr_prec_t); + __MPFR_DECLSPEC void mpfr_custom_init (void *, mpfr_prec_t); +@@ -1080,10 +1080,12 @@ + #define mpfr_set_uj_2exp __gmpfr_set_uj_2exp + #define mpfr_get_sj __gmpfr_mpfr_get_sj + #define mpfr_get_uj __gmpfr_mpfr_get_uj +-__MPFR_DECLSPEC int mpfr_set_sj (mpfr_t, intmax_t, mpfr_rnd_t); +-__MPFR_DECLSPEC int mpfr_set_sj_2exp (mpfr_t, intmax_t, intmax_t, mpfr_rnd_t); +-__MPFR_DECLSPEC int mpfr_set_uj (mpfr_t, uintmax_t, mpfr_rnd_t); +-__MPFR_DECLSPEC int mpfr_set_uj_2exp (mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t); ++__MPFR_DECLSPEC int mpfr_set_sj (mpfr_ptr, intmax_t, mpfr_rnd_t); ++__MPFR_DECLSPEC int mpfr_set_sj_2exp (mpfr_ptr, intmax_t, intmax_t, ++ mpfr_rnd_t); ++__MPFR_DECLSPEC int mpfr_set_uj (mpfr_ptr, uintmax_t, mpfr_rnd_t); ++__MPFR_DECLSPEC int mpfr_set_uj_2exp (mpfr_ptr, uintmax_t, intmax_t, ++ mpfr_rnd_t); + __MPFR_DECLSPEC intmax_t mpfr_get_sj (mpfr_srcptr, mpfr_rnd_t); + __MPFR_DECLSPEC uintmax_t mpfr_get_uj (mpfr_srcptr, mpfr_rnd_t); + +--- mpfr-4.1.0/src/nrandom.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/nrandom.c 2021-02-11 12:48:27.354242922 +0000 +@@ -155,7 +155,7 @@ + + /* return a normal random deviate with mean 0 and variance 1 as a MPFR */ + int +-mpfr_nrandom (mpfr_t z, gmp_randstate_t r, mpfr_rnd_t rnd) ++mpfr_nrandom (mpfr_ptr z, gmp_randstate_t r, mpfr_rnd_t rnd) + { + mpfr_random_deviate_t x, p, q; + int inex; +--- mpfr-4.1.0/src/pool.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/pool.c 2021-02-11 12:48:27.354242922 +0000 +@@ -35,7 +35,7 @@ + static MPFR_THREAD_ATTR __mpz_struct mpz_tab[MPFR_POOL_NENTRIES]; + + MPFR_HOT_FUNCTION_ATTR void +-mpfr_mpz_init (mpz_t z) ++mpfr_mpz_init (mpz_ptr z) + { + if (MPFR_LIKELY (n_alloc > 0)) + { +@@ -54,7 +54,7 @@ + } + + MPFR_HOT_FUNCTION_ATTR void +-mpfr_mpz_init2 (mpz_t z, mp_bitcnt_t n) ++mpfr_mpz_init2 (mpz_ptr z, mp_bitcnt_t n) + { + /* The condition on n is used below as the argument n will be ignored if + the mpz_t is obtained from the MPFR stack of previously used mpz_t. +@@ -82,7 +82,7 @@ + + + MPFR_HOT_FUNCTION_ATTR void +-mpfr_mpz_clear (mpz_t z) ++mpfr_mpz_clear (mpz_ptr z) + { + /* We only put objects with at most MPFR_POOL_MAX_SIZE in the mpz_t pool, + to avoid it takes too much memory (and anyway the speedup is mainly +--- mpfr-4.1.0/src/random_deviate.c.orig 2021-02-11 12:43:51.789257562 +0000 ++++ mpfr-4.1.0/src/random_deviate.c 2021-02-11 12:48:27.354242922 +0000 +@@ -64,7 +64,7 @@ + + /* allocate and set to (0,1) */ + void +-mpfr_random_deviate_init (mpfr_random_deviate_t x) ++mpfr_random_deviate_init (mpfr_random_deviate_ptr x) + { + mpz_init (x->f); + x->e = 0; +@@ -72,21 +72,22 @@ + + /* reset to (0,1) */ + void +-mpfr_random_deviate_reset (mpfr_random_deviate_t x) ++mpfr_random_deviate_reset (mpfr_random_deviate_ptr x) + { + x->e = 0; + } + + /* deallocate */ + void +-mpfr_random_deviate_clear (mpfr_random_deviate_t x) ++mpfr_random_deviate_clear (mpfr_random_deviate_ptr x) + { + mpz_clear (x->f); + } + + /* swap two random deviates */ + void +-mpfr_random_deviate_swap (mpfr_random_deviate_t x, mpfr_random_deviate_t y) ++mpfr_random_deviate_swap (mpfr_random_deviate_ptr x, ++ mpfr_random_deviate_ptr y) + { + mpfr_random_size_t s; + unsigned long t; +@@ -107,7 +108,7 @@ + + /* ensure x has at least k bits */ + static void +-random_deviate_generate (mpfr_random_deviate_t x, mpfr_random_size_t k, ++random_deviate_generate (mpfr_random_deviate_ptr x, mpfr_random_size_t k, + gmp_randstate_t r, mpz_t t) + { + /* Various compile time checks on mpfr_random_deviate_t */ +@@ -223,7 +224,7 @@ + + /* return position of leading bit, counting from 1 */ + static mpfr_random_size_t +-random_deviate_leading_bit (mpfr_random_deviate_t x, gmp_randstate_t r) ++random_deviate_leading_bit (mpfr_random_deviate_ptr x, gmp_randstate_t r) + { + mpfr_random_size_t l; + random_deviate_generate (x, W, r, 0); +@@ -243,7 +244,7 @@ + + /* return kth bit of fraction, representing 2^-k */ + int +-mpfr_random_deviate_tstbit (mpfr_random_deviate_t x, mpfr_random_size_t k, ++mpfr_random_deviate_tstbit (mpfr_random_deviate_ptr x, mpfr_random_size_t k, + gmp_randstate_t r) + { + if (k == 0) +@@ -256,7 +257,8 @@ + + /* compare two random deviates, x < y */ + int +-mpfr_random_deviate_less (mpfr_random_deviate_t x, mpfr_random_deviate_t y, ++mpfr_random_deviate_less (mpfr_random_deviate_ptr x, ++ mpfr_random_deviate_ptr y, + gmp_randstate_t r) + { + mpfr_random_size_t k = 1; +@@ -280,7 +282,7 @@ + /* set mpfr_t z = (neg ? -1 : 1) * (n + x) */ + int + mpfr_random_deviate_value (int neg, unsigned long n, +- mpfr_random_deviate_t x, mpfr_t z, ++ mpfr_random_deviate_ptr x, mpfr_ptr z, + gmp_randstate_t r, mpfr_rnd_t rnd) + { + /* r is used to add as many bits as necessary to match the precision of z */ +--- mpfr-4.1.0/src/random_deviate.h.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/random_deviate.h 2021-02-11 12:48:27.354242922 +0000 +@@ -76,7 +76,7 @@ + /* set mpfr_t z = (neg ? -1 : 1) * (n + x) */ + __MPFR_DECLSPEC int + mpfr_random_deviate_value (int, unsigned long, +- mpfr_random_deviate_ptr, mpfr_t, ++ mpfr_random_deviate_ptr, mpfr_ptr, + gmp_randstate_t, mpfr_rnd_t); + + #if defined(__cplusplus) +--- mpfr-4.1.0/src/rndna.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/rndna.c 2021-02-11 12:48:27.354242922 +0000 +@@ -61,7 +61,7 @@ + and prepares rop to give it one more bit of precision + and to save its old value within it. */ + void +-mpfr_round_nearest_away_begin (mpfr_t rop) ++mpfr_round_nearest_away_begin (mpfr_ptr rop) + { + mpfr_t tmp; + mp_size_t xsize; +@@ -129,7 +129,7 @@ + copying it back the result of the applied function + and performing additional roundings. */ + int +-mpfr_round_nearest_away_end (mpfr_t rop, int inex) ++mpfr_round_nearest_away_end (mpfr_ptr rop, int inex) + { + mpfr_t tmp; + mp_size_t xsize; +--- mpfr-4.1.0/src/set_sj.c.orig 2020-06-01 10:39:52.000000000 +0000 ++++ mpfr-4.1.0/src/set_sj.c 2021-02-11 12:48:27.354242922 +0000 +@@ -26,13 +26,13 @@ + #ifdef _MPFR_H_HAVE_INTMAX_T + + int +-mpfr_set_sj (mpfr_t x, intmax_t j, mpfr_rnd_t rnd) ++mpfr_set_sj (mpfr_ptr x, intmax_t j, mpfr_rnd_t rnd) + { + return mpfr_set_sj_2exp (x, j, 0, rnd); + } + + int +-mpfr_set_sj_2exp (mpfr_t x, intmax_t j, intmax_t e, mpfr_rnd_t rnd) ++mpfr_set_sj_2exp (mpfr_ptr x, intmax_t j, intmax_t e, mpfr_rnd_t rnd) + { + if (j >= 0) + return mpfr_set_uj_2exp (x, j, e, rnd); +--- mpfr-4.1.0/src/set_str.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/set_str.c 2021-02-11 12:48:27.354242922 +0000 +@@ -23,7 +23,7 @@ + #include "mpfr-impl.h" + + int +-mpfr_set_str (mpfr_t x, const char *str, int base, mpfr_rnd_t rnd) ++mpfr_set_str (mpfr_ptr x, const char *str, int base, mpfr_rnd_t rnd) + { + char *p; + +--- mpfr-4.1.0/src/set_uj.c.orig 2020-06-01 10:39:52.000000000 +0000 ++++ mpfr-4.1.0/src/set_uj.c 2021-02-11 12:48:27.354242922 +0000 +@@ -29,13 +29,13 @@ + #define uintmaxpml (sizeof(uintmax_t) / sizeof(mp_limb_t)) + + int +-mpfr_set_uj (mpfr_t x, uintmax_t j, mpfr_rnd_t rnd) ++mpfr_set_uj (mpfr_ptr x, uintmax_t j, mpfr_rnd_t rnd) + { + return mpfr_set_uj_2exp (x, j, 0, rnd); + } + + int +-mpfr_set_uj_2exp (mpfr_t x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd) ++mpfr_set_uj_2exp (mpfr_ptr x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd) + { + int cnt, inex; + mp_size_t i, k; +--- mpfr-4.1.0/src/sin_cos.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/sin_cos.c 2021-02-11 12:48:27.354242922 +0000 +@@ -463,7 +463,7 @@ + Return err such that the relative error is bounded by 2^err ulps. + */ + static int +-sincos_aux (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd_mode) ++sincos_aux (mpfr_ptr s, mpfr_ptr c, mpfr_srcptr x, mpfr_rnd_t rnd_mode) + { + mpfr_prec_t prec_s, sh; + mpz_t Q, S, C, Q2, S2, C2, y; +@@ -577,7 +577,7 @@ + Assumes s differs from c. + */ + int +-mpfr_sincos_fast (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd) ++mpfr_sincos_fast (mpfr_ptr s, mpfr_ptr c, mpfr_srcptr x, mpfr_rnd_t rnd) + { + int inexs, inexc; + mpfr_t x_red, ts, tc; +--- mpfr-4.1.0/src/strtofr.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/strtofr.c 2021-02-11 12:48:27.354242922 +0000 +@@ -226,7 +226,7 @@ + BUT if it returns 0 (NAN or INF), the ternary value is also '0' + (ie NAN and INF are exact) */ + static int +-parse_string (mpfr_t x, struct parsed_string *pstr, ++parse_string (mpfr_ptr x, struct parsed_string *pstr, + const char **string, int base) + { + const char *str = *string; +@@ -451,7 +451,7 @@ + and the precision of x. + Returns the ternary value. */ + static int +-parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd) ++parsed_string_to_mpfr (mpfr_ptr x, struct parsed_string *pstr, mpfr_rnd_t rnd) + { + mpfr_prec_t precx, prec, ysize_bits, pstr_size; + mpfr_exp_t exp; +@@ -934,7 +934,7 @@ + } + + int +-mpfr_strtofr (mpfr_t x, const char *string, char **end, int base, ++mpfr_strtofr (mpfr_ptr x, const char *string, char **end, int base, + mpfr_rnd_t rnd) + { + int res; +--- mpfr-4.1.0/src/vasprintf.c.orig 2020-06-01 10:39:52.000000000 +0000 ++++ mpfr-4.1.0/src/vasprintf.c 2021-02-11 12:48:27.354242922 +0000 +@@ -963,7 +963,7 @@ + #define NDIGITS 8 + + MPFR_RETURNS_NONNULL static char * +-mpfr_get_str_wrapper (mpfr_exp_t *exp, int base, size_t n, const mpfr_t op, ++mpfr_get_str_wrapper (mpfr_exp_t *exp, int base, size_t n, mpfr_srcptr op, + const struct printf_spec spec) + { + size_t ndigits; +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:46:49.115316335 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:48:27.370242746 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p3"; ++ return "4.1.0-p4"; + } +--- mpfr-4.1.0/src/zeta.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/src/zeta.c 2021-02-11 12:48:27.354242922 +0000 +@@ -35,7 +35,7 @@ + sum(tc[i]*product((s+2j)*(s+2j-1)/n^2,j=1..i-1), i=1..p)*s*n^(-s-1) + */ + static void +-mpfr_zeta_part_b (mpfr_t b, mpfr_srcptr s, int n, int p, mpfr_t *tc) ++mpfr_zeta_part_b (mpfr_ptr b, mpfr_srcptr s, int n, int p, mpfr_t *tc) + { + mpfr_t s1, d, u; + unsigned long n2; +@@ -130,7 +130,7 @@ + n - an integer + Output: sum - a floating-point number approximating sum(1/i^s, i=1..n-1) */ + static void +-mpfr_zeta_part_a (mpfr_t sum, mpfr_srcptr s, int n) ++mpfr_zeta_part_a (mpfr_ptr sum, mpfr_srcptr s, int n) + { + mpfr_t u, s1; + int i; +@@ -158,7 +158,7 @@ + Output: z - Zeta(s) rounded to the precision of z with direction rnd_mode + */ + static int +-mpfr_zeta_pos (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) ++mpfr_zeta_pos (mpfr_ptr z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) + { + mpfr_t b, c, z_pre, f, s1; + double beta, sd, dnep; +@@ -356,8 +356,8 @@ + At input, p is Pi rounded down. + The comments in the code are for rnd = RNDD. */ + static void +-mpfr_reflection_overflow (mpfr_t z, mpfr_t s1, const mpfr_t s, mpfr_t y, +- mpfr_t p, mpfr_rnd_t rnd) ++mpfr_reflection_overflow (mpfr_ptr z, mpfr_ptr s1, mpfr_srcptr s, mpfr_ptr y, ++ mpfr_ptr p, mpfr_rnd_t rnd) + { + mpz_t sint; + +@@ -432,7 +432,7 @@ + } + + int +-mpfr_zeta (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) ++mpfr_zeta (mpfr_ptr z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) + { + mpfr_t z_pre, s1, y, p; + long add; +--- mpfr-4.1.0/tests/tcmp2.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tcmp2.c 2021-02-11 12:48:27.350242965 +0000 +@@ -24,7 +24,7 @@ + + /* set bit n of x to b, where bit 0 is the most significant one */ + static void +-set_bit (mpfr_t x, unsigned int n, int b) ++set_bit (mpfr_ptr x, unsigned int n, int b) + { + unsigned l; + mp_size_t xn; +--- mpfr-4.1.0/tests/tdiv.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tdiv.c 2021-02-11 12:48:27.350242965 +0000 +@@ -369,7 +369,7 @@ + /* given y = o(x/u), x, u, find the inexact flag by + multiplying y by u */ + static int +-get_inexact (mpfr_t y, mpfr_t x, mpfr_t u) ++get_inexact (mpfr_ptr y, mpfr_ptr x, mpfr_ptr u) + { + mpfr_t xx; + int inex; +--- mpfr-4.1.0/tests/teq.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/teq.c 2021-02-11 12:48:27.350242965 +0000 +@@ -23,7 +23,7 @@ + #include "mpfr-test.h" + + static void +-teq (mpfr_t x) ++teq (mpfr_ptr x) + { + mpfr_t y; + unsigned long k, px, mx; +--- mpfr-4.1.0/tests/terandom_chisq.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/terandom_chisq.c 2021-02-11 12:48:27.350242965 +0000 +@@ -26,7 +26,7 @@ + * exponential distribution. We only take differences of this function so the + * offset doesn't matter; here Phi(0) = 0. */ + static void +-exponential_cumulative (mpfr_t z, mpfr_t x, mpfr_rnd_t rnd) ++exponential_cumulative (mpfr_ptr z, mpfr_ptr x, mpfr_rnd_t rnd) + { + mpfr_neg (z, x, rnd); + mpfr_expm1 (z, z, rnd); +@@ -43,7 +43,7 @@ + * TAOCP, Vol 2, 3.3.1, Table 1. It more accurate than the similar formula, + * DLMF 8.11.10. */ + static void +-chisq_prob (mpfr_t q, long nu, mpfr_t chisqp) ++chisq_prob (mpfr_ptr q, long nu, mpfr_ptr chisqp) + { + mpfr_t t; + mpfr_rnd_t rnd; +@@ -170,7 +170,7 @@ + * this function. low precision means prec = 2, 3, or 4. High values of + * precision will result in integer overflow. */ + static long +-sequential (mpfr_t x) ++sequential (mpfr_ptr x) + { + long expt, prec; + +--- mpfr-4.1.0/tests/tfmma.c.orig 2020-03-24 13:47:38.000000000 +0000 ++++ mpfr-4.1.0/tests/tfmma.c 2021-02-11 12:48:27.350242965 +0000 +@@ -24,7 +24,7 @@ + + /* check both mpfr_fmma and mpfr_fmms */ + static void +-random_test (mpfr_t a, mpfr_t b, mpfr_t c, mpfr_t d, mpfr_rnd_t rnd) ++random_test (mpfr_ptr a, mpfr_ptr b, mpfr_ptr c, mpfr_ptr d, mpfr_rnd_t rnd) + { + mpfr_t ref, res, ab, cd; + int inex_ref, inex_res; +--- mpfr-4.1.0/tests/tfmod.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tfmod.c 2021-02-11 12:48:27.350242965 +0000 +@@ -62,8 +62,8 @@ + } + + static void +-test_failed (mpfr_t erem, mpfr_t grem, int eret, int gret, mpfr_t x, mpfr_t y, +- mpfr_rnd_t rnd) ++test_failed (mpfr_ptr erem, mpfr_ptr grem, int eret, int gret, ++ mpfr_ptr x, mpfr_ptr y, mpfr_rnd_t rnd) + { + printf ("error: mpfr_fmod (r, x, y, rnd)\n x = "); + mpfr_out_str (stdout, 10, 0, x, MPFR_RNDD); +@@ -83,7 +83,7 @@ + } + + static void +-check (mpfr_t r0, mpfr_t x, mpfr_t y, mpfr_rnd_t rnd) ++check (mpfr_ptr r0, mpfr_ptr x, mpfr_ptr y, mpfr_rnd_t rnd) + { + int inex0, inex1; + mpfr_t r1; +--- mpfr-4.1.0/tests/tfprintf.c.orig 2020-06-01 10:39:52.000000000 +0000 ++++ mpfr-4.1.0/tests/tfprintf.c 2021-02-11 12:48:27.350242965 +0000 +@@ -65,7 +65,7 @@ + const int prec_max_printf = 5000; + + static void +-check (FILE *fout, const char *fmt, mpfr_t x) ++check (FILE *fout, const char *fmt, mpfr_ptr x) + { + if (mpfr_fprintf (fout, fmt, x) == -1) + { +--- mpfr-4.1.0/tests/tgamma.c.orig 2020-06-01 00:15:37.000000000 +0000 ++++ mpfr-4.1.0/tests/tgamma.c 2021-02-11 12:48:27.350242965 +0000 +@@ -890,7 +890,7 @@ + computing with a working precision p2. Assume that x is not an + integer <= 2. */ + static void +-exp_lgamma (mpfr_t x, mpfr_prec_t p1, mpfr_prec_t p2) ++exp_lgamma (mpfr_ptr x, mpfr_prec_t p1, mpfr_prec_t p2) + { + mpfr_t yd, yu, zd, zu; + int inexd, inexu, sign; +--- mpfr-4.1.0/tests/tnrandom_chisq.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tnrandom_chisq.c 2021-02-11 12:48:27.350242965 +0000 +@@ -26,7 +26,7 @@ + * for the normal distribution. We only take differences of this function so + * the offset doesn't matter; here Phi(0) = 0. */ + static void +-normal_cumulative (mpfr_t z, mpfr_t x, mpfr_rnd_t rnd) ++normal_cumulative (mpfr_ptr z, mpfr_ptr x, mpfr_rnd_t rnd) + { + mpfr_sqrt_ui (z, 2, rnd); + mpfr_div (z, x, z, rnd); +@@ -44,7 +44,7 @@ + * TAOCP, Vol 2, 3.3.1, Table 1. It more accurate than the similar formula, + * DLMF 8.11.10. */ + static void +-chisq_prob (mpfr_t q, long nu, mpfr_t chisqp) ++chisq_prob (mpfr_ptr q, long nu, mpfr_ptr chisqp) + { + mpfr_t t; + mpfr_rnd_t rnd; +@@ -166,7 +166,7 @@ + * this function. low precision means prec = 2, 3, or 4. High values of + * precision will result in integer overflow. */ + static long +-sequential (mpfr_t x) ++sequential (mpfr_ptr x) + { + long expt, prec; + +--- mpfr-4.1.0/tests/tprintf.c.orig 2020-06-01 10:39:52.000000000 +0000 ++++ mpfr-4.1.0/tests/tprintf.c 2021-02-11 12:48:27.350242965 +0000 +@@ -74,7 +74,7 @@ + int stdout_redirect; + + static void +-check (const char *fmt, mpfr_t x) ++check (const char *fmt, mpfr_ptr x) + { + if (mpfr_printf (fmt, x) == -1) + { +--- mpfr-4.1.0/tests/trint.c.orig 2020-02-12 13:04:50.000000000 +0000 ++++ mpfr-4.1.0/tests/trint.c 2021-02-11 12:48:27.350242965 +0000 +@@ -367,7 +367,7 @@ + #endif + + static void +-err (const char *str, mp_size_t s, mpfr_t x, mpfr_t y, mpfr_prec_t p, ++err (const char *str, mp_size_t s, mpfr_ptr x, mpfr_ptr y, mpfr_prec_t p, + mpfr_rnd_t r, int trint, int inexact) + { + printf ("Error: %s\ns = %u, p = %u, r = %s, trint = %d, inexact = %d\nx = ", +--- mpfr-4.1.0/tests/tsinh_cosh.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tsinh_cosh.c 2021-02-11 12:48:27.350242965 +0000 +@@ -23,7 +23,7 @@ + #include "mpfr-test.h" + + static void +-failed (mpfr_t x, mpfr_t esh, mpfr_t gsh, mpfr_t ech, mpfr_t gch) ++failed (mpfr_ptr x, mpfr_ptr esh, mpfr_ptr gsh, mpfr_ptr ech, mpfr_ptr gch) + { + printf ("error : mpfr_sinh_cosh (x) x = "); + mpfr_out_str (stdout, 10, 0, x, MPFR_RNDD); +@@ -43,7 +43,7 @@ + + /* check against sinh, cosh */ + static void +-check (mpfr_t x, mpfr_rnd_t rnd) ++check (mpfr_ptr x, mpfr_rnd_t rnd) + { + mpfr_t s, c, sx, cx; + int isc, is, ic; +--- mpfr-4.1.0/tests/tsqr.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tsqr.c 2021-02-11 12:48:27.350242965 +0000 +@@ -33,7 +33,7 @@ + + static void + error1 (mpfr_rnd_t rnd, mpfr_prec_t prec, +- mpfr_t in, mpfr_t outmul, mpfr_t outsqr) ++ mpfr_t in, mpfr_ptr outmul, mpfr_ptr outsqr) + { + printf("ERROR: for %s and prec=%lu\nINPUT=", mpfr_print_rnd_mode(rnd), + (unsigned long) prec); +@@ -44,7 +44,7 @@ + } + + static void +-error2 (mpfr_rnd_t rnd, mpfr_prec_t prec, mpfr_t in, mpfr_t out, ++error2 (mpfr_rnd_t rnd, mpfr_prec_t prec, mpfr_ptr in, mpfr_ptr out, + int inexactmul, int inexactsqr) + { + printf("ERROR: for %s and prec=%lu\nINPUT=", mpfr_print_rnd_mode(rnd), +--- mpfr-4.1.0/tests/tsum.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tsum.c 2021-02-11 12:48:27.350242965 +0000 +@@ -59,7 +59,7 @@ + } + + static void +-get_exact_sum (mpfr_t sum, mpfr_t *tab, int n) ++get_exact_sum (mpfr_ptr sum, mpfr_t *tab, int n) + { + int i; + +@@ -1198,7 +1198,7 @@ + } + + static int +-mpfr_sum_naive (mpfr_t s, mpfr_t *x, int n, mpfr_rnd_t rnd) ++mpfr_sum_naive (mpfr_ptr s, mpfr_t *x, int n, mpfr_rnd_t rnd) + { + int ret, i; + switch (n) +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:50:22.384987438 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:50:22.424987002 +0000 +@@ -0,0 +1 @@ ++digamma-hugemem +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:48:27.370242746 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:50:22.424987002 +0000 +@@ -1 +1 @@ +-4.1.0-p4 ++4.1.0-p5 +--- mpfr-4.1.0/src/digamma.c.orig 2020-06-18 17:17:18.000000000 +0000 ++++ mpfr-4.1.0/src/digamma.c 2021-02-11 12:50:22.412987133 +0000 +@@ -214,19 +214,27 @@ + (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode), + ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y, inex)); + +- /* compute a precision q such that x+1 is exact */ +- if (MPFR_PREC(x) < MPFR_GET_EXP(x)) +- q = MPFR_EXP(x); +- else +- q = MPFR_PREC(x) + 1; +- +- /* for very large x, use |digamma(x) - log(x)| < 1/x < 2^(1-EXP(x)) */ +- if (MPFR_PREC(y) + 10 < MPFR_EXP(x)) ++ /* For very large x, use |digamma(x) - log(x)| < 1/x < 2^(1-EXP(x)). ++ However, for a fixed value of GUARD, MPFR_CAN_ROUND() might fail ++ with probability 1/2^GUARD, in which case the default code will ++ fail since it requires x+1 to be exact, thus a huge precision if ++ x is huge. There are two workarounds: ++ * either perform a Ziv's loop, by increasing GUARD at each step. ++ However, this might fail if x is moderately large, in which case ++ more terms of the asymptotic expansion would be needed. ++ * implement a full asymptotic expansion (with Ziv's loop). */ ++#define GUARD 30 ++ if (MPFR_PREC(y) + GUARD < MPFR_EXP(x)) + { + /* this ensures EXP(x) >= 3, thus x >= 4, thus log(x) > 1 */ +- mpfr_init2 (t, MPFR_PREC(y) + 10); +- mpfr_log (t, x, MPFR_RNDZ); +- if (MPFR_CAN_ROUND (t, MPFR_PREC(y) + 10, MPFR_PREC(y), rnd_mode)) ++ mpfr_init2 (t, MPFR_PREC(y) + GUARD); ++ mpfr_log (t, x, MPFR_RNDN); ++ /* |t - digamma(x)| <= 1/2*ulp(t) + |digamma(x) - log(x)| ++ <= 1/2*ulp(t) + 2^(1-EXP(x)) ++ <= 1/2*ulp(t) + 2^(-PREC(y)-GUARD) ++ <= ulp(t) ++ since |t| >= 1 thus ulp(t) >= 2^(1-PREC(y)-GUARD) */ ++ if (MPFR_CAN_ROUND (t, MPFR_PREC(y) + GUARD, MPFR_PREC(y), rnd_mode)) + { + inex = mpfr_set (y, t, rnd_mode); + mpfr_clear (t); +@@ -235,6 +243,21 @@ + mpfr_clear (t); + } + ++ /* compute a precision q such that x+1 is exact */ ++ if (MPFR_PREC(x) < MPFR_GET_EXP(x)) ++ { ++ /* The goal of the first assertion is to let the compiler ignore ++ the second one when MPFR_EMAX_MAX <= MPFR_PREC_MAX. */ ++ MPFR_ASSERTD (MPFR_EXP(x) <= MPFR_EMAX_MAX); ++ MPFR_ASSERTN (MPFR_EXP(x) <= MPFR_PREC_MAX); ++ q = MPFR_EXP(x); ++ } ++ else ++ q = MPFR_PREC(x) + 1; ++ ++ /* FIXME: q can be much too large, e.g. equal to the maximum exponent! */ ++ MPFR_LOG_MSG (("q=%Pu\n", q)); ++ + mpfr_init2 (x_plus_j, q); + + mpfr_init2 (t, p); +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:48:27.366242791 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:50:22.424987002 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p4" ++#define MPFR_VERSION_STRING "4.1.0-p5" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:48:27.370242746 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:50:22.424987002 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p4"; ++ return "4.1.0-p5"; + } +--- mpfr-4.1.0/tests/tdigamma.c.orig 2020-06-18 17:17:18.000000000 +0000 ++++ mpfr-4.1.0/tests/tdigamma.c 2021-02-11 12:50:22.412987133 +0000 +@@ -49,12 +49,54 @@ + mpfr_clear (y); + } + ++/* With some GMP_CHECK_RANDOMIZE values, test_generic triggers an error ++ tests_addsize(): too much memory (576460752303432776 bytes) ++ Each time on prec = 200, n = 3, xprec = 140. ++ The following test is a more general testcase. ++*/ ++static void ++bug20210206 (void) ++{ ++#define NPREC 4 ++ mpfr_t x, y[NPREC], z; ++ mpfr_exp_t emin, emax; ++ int i, precx, precy[NPREC] = { 200, 400, 520, 1416 }; ++ ++ emin = mpfr_get_emin (); ++ emax = mpfr_get_emax (); ++ set_emin (MPFR_EMIN_MIN); ++ set_emax (MPFR_EMAX_MAX); ++ ++ for (i = 0; i < NPREC; i++) ++ mpfr_init2 (y[i], precy[i]); ++ mpfr_init2 (z, precy[0]); ++ ++ for (precx = MPFR_PREC_MIN; precx < 150; precx++) ++ { ++ mpfr_init2 (x, precx); ++ mpfr_setmax (x, __gmpfr_emax); ++ for (i = 0; i < NPREC; i++) ++ mpfr_digamma (y[i], x, MPFR_RNDA); ++ mpfr_set (z, y[1], MPFR_RNDA); ++ MPFR_ASSERTN (mpfr_equal_p (y[0], z)); ++ mpfr_clear (x); ++ } ++ ++ for (i = 0; i < NPREC; i++) ++ mpfr_clear (y[i]); ++ mpfr_clear (z); ++ ++ set_emin (emin); ++ set_emax (emax); ++} ++ + int + main (int argc, char *argv[]) + { + tests_start_mpfr (); + + special (); ++ bug20210206 (); + + test_generic (MPFR_PREC_MIN, 200, 20); + +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:52:52.519350662 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:52:52.563350183 +0000 +@@ -0,0 +1 @@ ++digamma-interm-zero +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:50:22.424987002 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:52:52.563350183 +0000 +@@ -1 +1 @@ +-4.1.0-p5 ++4.1.0-p6 +--- mpfr-4.1.0/src/digamma.c.orig 2021-02-11 12:50:22.412987133 +0000 ++++ mpfr-4.1.0/src/digamma.c 2021-02-11 12:52:52.547350357 +0000 +@@ -296,21 +296,26 @@ + errt = mpfr_digamma_approx (t, x_plus_j); + expt = MPFR_GET_EXP (t); + mpfr_sub (t, t, u, MPFR_RNDN); +- if (MPFR_GET_EXP (t) < expt) +- errt += expt - MPFR_EXP(t); +- /* Warning: if u is zero (which happens when x_plus_j >= min at the +- beginning of the while loop above), EXP(u) is not defined. +- In this case we have no error from u. */ +- if (MPFR_NOTZERO(u) && MPFR_GET_EXP (t) < MPFR_GET_EXP (u)) +- erru += MPFR_EXP(u) - MPFR_EXP(t); +- if (errt > erru) +- errt = errt + 1; +- else if (errt == erru) +- errt = errt + 2; +- else +- errt = erru + 1; +- if (MPFR_CAN_ROUND (t, p - errt, MPFR_PREC(y), rnd_mode)) +- break; ++ /* Warning! t may be zero (more likely in small precision). Note ++ that in this case, this is an exact zero, not an underflow. */ ++ if (MPFR_NOTZERO(t)) ++ { ++ if (MPFR_GET_EXP (t) < expt) ++ errt += expt - MPFR_EXP(t); ++ /* Warning: if u is zero (which happens when x_plus_j >= min at the ++ beginning of the while loop above), EXP(u) is not defined. ++ In this case we have no error from u. */ ++ if (MPFR_NOTZERO(u) && MPFR_GET_EXP (t) < MPFR_GET_EXP (u)) ++ erru += MPFR_EXP(u) - MPFR_EXP(t); ++ if (errt > erru) ++ errt = errt + 1; ++ else if (errt == erru) ++ errt = errt + 2; ++ else ++ errt = erru + 1; ++ if (MPFR_CAN_ROUND (t, p - errt, MPFR_PREC(y), rnd_mode)) ++ break; ++ } + MPFR_ZIV_NEXT (loop, p); + mpfr_set_prec (t, p); + mpfr_set_prec (u, p); +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:50:22.424987002 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:52:52.559350226 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p5" ++#define MPFR_VERSION_STRING "4.1.0-p6" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:50:22.424987002 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:52:52.559350226 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p5"; ++ return "4.1.0-p6"; + } +--- mpfr-4.1.0/tests/tdigamma.c.orig 2021-02-11 12:50:22.412987133 +0000 ++++ mpfr-4.1.0/tests/tdigamma.c 2021-02-11 12:52:52.547350357 +0000 +@@ -90,6 +90,26 @@ + set_emax (emax); + } + ++/* another test that fails with GMP_CHECK_RANDOMIZE=1612741376857003 ++ on revision 14398 */ ++static void ++bug20210208 (void) ++{ ++ mpfr_t x, y; ++ int inex; ++ ++ mpfr_init2 (x, 73); ++ mpfr_init2 (y, 1); ++ mpfr_set_str (x, "1.4613470547060071827450", 10, MPFR_RNDN); ++ mpfr_clear_flags (); ++ inex = mpfr_digamma (y, x, MPFR_RNDU); ++ MPFR_ASSERTN (mpfr_cmp_si_2exp (y, -1, -12) == 0); ++ MPFR_ASSERTN (inex > 0); ++ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); ++ mpfr_clear (x); ++ mpfr_clear (y); ++} ++ + int + main (int argc, char *argv[]) + { +@@ -97,6 +117,7 @@ + + special (); + bug20210206 (); ++ bug20210208 (); + + test_generic (MPFR_PREC_MIN, 200, 20); + +--- mpfr-4.1.0/PATCHES.orig 2021-02-11 12:53:38.382850990 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-11 12:53:38.426850512 +0000 +@@ -0,0 +1 @@ ++jn-interm-zero +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:52:52.563350183 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-11 12:53:38.426850512 +0000 +@@ -1 +1 @@ +-4.1.0-p6 ++4.1.0-p7 +--- mpfr-4.1.0/src/jyn_asympt.c.orig 2020-07-10 10:33:32.000000000 +0000 ++++ mpfr-4.1.0/src/jyn_asympt.c 2021-02-11 12:53:38.410850685 +0000 +@@ -69,6 +69,8 @@ + MPFR_ZIV_INIT (loop, w); + for (;;) + { ++ int ok = 1; ++ + mpfr_set_prec (c, w); + mpfr_init2 (s, w); + mpfr_init2 (P, w); +@@ -92,6 +94,13 @@ + /* now s approximates sin(z)+cos(z), and c approximates sin(z)-cos(z), + with total absolute error bounded by 2^(1-w). */ + ++ /* if s or c is zero, MPFR_GET_EXP will fail below */ ++ if (MPFR_IS_ZERO(s) || MPFR_IS_ZERO(c)) ++ { ++ ok = 0; ++ goto clear; ++ } ++ + /* precompute 1/(8|z|) */ + mpfr_si_div (iz, MPFR_IS_POS(z) ? 1 : -1, z, MPFR_RNDN); /* err <= 1 */ + mpfr_div_2ui (iz, iz, 3, MPFR_RNDN); +@@ -257,6 +266,9 @@ + err = (err >= err2) ? err + 1 : err2 + 1; + /* the absolute error on c is bounded by 2^(err - w) */ + ++ err -= MPFR_GET_EXP (c); ++ ++ clear: + mpfr_clear (s); + mpfr_clear (P); + mpfr_clear (Q); +@@ -266,8 +278,7 @@ + mpfr_clear (err_s); + mpfr_clear (err_u); + +- err -= MPFR_GET_EXP (c); +- if (MPFR_LIKELY (MPFR_CAN_ROUND (c, w - err, MPFR_PREC(res), r))) ++ if (ok && MPFR_LIKELY (MPFR_CAN_ROUND (c, w - err, MPFR_PREC(res), r))) + break; + if (diverge != 0) + { +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:52:52.559350226 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-11 12:53:38.422850555 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p6" ++#define MPFR_VERSION_STRING "4.1.0-p7" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:52:52.559350226 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-11 12:53:38.426850512 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p6"; ++ return "4.1.0-p7"; + } +--- mpfr-4.1.0/tests/tj0.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tj0.c 2021-02-11 12:53:38.410850685 +0000 +@@ -27,6 +27,25 @@ + #define REDUCE_EMAX 262143 /* otherwise arg. reduction is too expensive */ + #include "tgeneric.c" + ++/* bug found in revision 14399 with GMP_CHECK_RANDOMIZE=1612721106588971 */ ++static void ++bug20210208 (void) ++{ ++ mpfr_t x, y; ++ int inex; ++ ++ mpfr_init2 (x, 79); ++ mpfr_init2 (y, 1); ++ mpfr_set_str (x, "2.552495117262005805960565e+02", 10, MPFR_RNDN); ++ mpfr_clear_flags (); ++ inex = mpfr_j0 (y, x, MPFR_RNDZ); ++ MPFR_ASSERTN (mpfr_cmp_si_2exp (y, -1, -5) == 0); ++ MPFR_ASSERTN (inex > 0); ++ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); ++ mpfr_clear (x); ++ mpfr_clear (y); ++} ++ + int + main (int argc, char *argv[]) + { +@@ -35,6 +54,8 @@ + + tests_start_mpfr (); + ++ bug20210208 (); ++ + mpfr_init (x); + mpfr_init (y); + +--- mpfr-4.1.0/PATCHES.orig 2021-02-17 17:22:34.594973310 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-17 17:22:34.702972090 +0000 +@@ -0,0 +1 @@ ++digamma-interm-zero2 +--- mpfr-4.1.0/VERSION.orig 2021-02-11 12:53:38.426850512 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-17 17:22:34.702972090 +0000 +@@ -1 +1 @@ +-4.1.0-p7 ++4.1.0-p8 +--- mpfr-4.1.0/src/digamma.c.orig 2021-02-11 12:52:52.547350357 +0000 ++++ mpfr-4.1.0/src/digamma.c 2021-02-17 17:22:34.690972226 +0000 +@@ -173,16 +173,19 @@ + mpfr_digamma (v, u, MPFR_RNDN); /* error <= 1/2 ulp */ + expv = MPFR_GET_EXP (v); + mpfr_sub (v, v, t, MPFR_RNDN); +- if (MPFR_GET_EXP (v) < MPFR_GET_EXP (t)) +- e1 += MPFR_EXP(t) - MPFR_EXP(v); /* scale error for t wrt new v */ +- /* now take into account the 1/2 ulp error for v */ +- if (expv - MPFR_EXP(v) - 1 > e1) +- e1 = expv - MPFR_EXP(v) - 1; +- else +- e1 ++; +- e1 ++; /* rounding error for mpfr_sub */ +- if (MPFR_CAN_ROUND (v, p - e1, MPFR_PREC(y), rnd_mode)) +- break; ++ if (MPFR_NOTZERO(v)) ++ { ++ if (MPFR_GET_EXP (v) < MPFR_GET_EXP (t)) ++ e1 += MPFR_EXP(t) - MPFR_EXP(v); /* scale error for t wrt new v */ ++ /* now take into account the 1/2 ulp error for v */ ++ if (expv - MPFR_EXP(v) - 1 > e1) ++ e1 = expv - MPFR_EXP(v) - 1; ++ else ++ e1 ++; ++ e1 ++; /* rounding error for mpfr_sub */ ++ if (MPFR_CAN_ROUND (v, p - e1, MPFR_PREC(y), rnd_mode)) ++ break; ++ } + MPFR_ZIV_NEXT (loop, p); + mpfr_set_prec (t, p); + mpfr_set_prec (v, p); +@@ -416,10 +419,8 @@ + } + } + +- if (MPFR_IS_NEG(x)) +- inex = mpfr_digamma_reflection (y, x, rnd_mode); + /* if x < 1/2 we use the reflection formula */ +- else if (MPFR_EXP(x) < 0) ++ if (MPFR_IS_NEG(x) || MPFR_EXP(x) < 0) + inex = mpfr_digamma_reflection (y, x, rnd_mode); + else + inex = mpfr_digamma_positive (y, x, rnd_mode); +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-11 12:53:38.422850555 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-17 17:22:34.702972090 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p7" ++#define MPFR_VERSION_STRING "4.1.0-p8" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2021-02-11 12:53:38.426850512 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-17 17:22:34.702972090 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p7"; ++ return "4.1.0-p8"; + } +--- mpfr-4.1.0/tests/tdigamma.c.orig 2021-02-11 12:52:52.547350357 +0000 ++++ mpfr-4.1.0/tests/tdigamma.c 2021-02-17 17:22:34.690972226 +0000 +@@ -110,6 +110,26 @@ + mpfr_clear (y); + } + ++/* another test that fails with GMP_CHECK_RANDOMIZE=1613197421465830 ++ on revision 14429 */ ++static void ++bug20210215 (void) ++{ ++ mpfr_t x, y; ++ int inex; ++ ++ mpfr_init2 (x, 510); ++ mpfr_init2 (y, 4); ++ mpfr_set_str (x, "-8.2923051438433494998166335341807999322052669984208422481227138906096000469898717007386115912802685588348601663465077353194268894939972221117314512518182580e+35", 10, MPFR_RNDN); ++ mpfr_clear_flags (); ++ inex = mpfr_digamma (y, x, MPFR_RNDU); ++ MPFR_ASSERTN (mpfr_cmp_ui0 (y, 88) == 0); ++ MPFR_ASSERTN (inex > 0); ++ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); ++ mpfr_clear (x); ++ mpfr_clear (y); ++} ++ + int + main (int argc, char *argv[]) + { +@@ -118,6 +138,7 @@ + special (); + bug20210206 (); + bug20210208 (); ++ bug20210215 (); + + test_generic (MPFR_PREC_MIN, 200, 20); + +--- mpfr-4.1.0/PATCHES.orig 2021-02-17 17:25:46.396981483 +0000 ++++ mpfr-4.1.0/PATCHES 2021-02-17 17:25:46.440981068 +0000 +@@ -0,0 +1 @@ ++jyn_asympt-interm-zero +--- mpfr-4.1.0/VERSION.orig 2021-02-17 17:22:34.702972090 +0000 ++++ mpfr-4.1.0/VERSION 2021-02-17 17:25:46.440981068 +0000 +@@ -1 +1 @@ +-4.1.0-p8 ++4.1.0-p9 +--- mpfr-4.1.0/src/jyn_asympt.c.orig 2021-02-11 12:53:38.410850685 +0000 ++++ mpfr-4.1.0/src/jyn_asympt.c 2021-02-17 17:25:46.424981219 +0000 +@@ -69,7 +69,7 @@ + MPFR_ZIV_INIT (loop, w); + for (;;) + { +- int ok = 1; ++ int ok = 0; + + mpfr_set_prec (c, w); + mpfr_init2 (s, w); +@@ -96,10 +96,7 @@ + + /* if s or c is zero, MPFR_GET_EXP will fail below */ + if (MPFR_IS_ZERO(s) || MPFR_IS_ZERO(c)) +- { +- ok = 0; +- goto clear; +- } ++ goto clear; /* with ok=0 */ + + /* precompute 1/(8|z|) */ + mpfr_si_div (iz, MPFR_IS_POS(z) ? 1 : -1, z, MPFR_RNDN); /* err <= 1 */ +@@ -227,6 +224,9 @@ + mpfr_sub (s, c, s, MPFR_RNDN); + #endif + } ++ if (MPFR_IS_ZERO(s)) ++ goto clear; /* with ok=0 */ ++ ok = 1; + if ((n & 2) != 0) + mpfr_neg (s, s, MPFR_RNDN); + if (MPFR_GET_EXP (s) > err) +--- mpfr-4.1.0/src/mpfr.h.orig 2021-02-17 17:22:34.702972090 +0000 ++++ mpfr-4.1.0/src/mpfr.h 2021-02-17 17:25:46.436981105 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 0 +-#define MPFR_VERSION_STRING "4.1.0-p8" ++#define MPFR_VERSION_STRING "4.1.0-p9" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +--- mpfr-4.1.0/src/version.c.orig 2021-02-17 17:22:34.702972090 +0000 ++++ mpfr-4.1.0/src/version.c 2021-02-17 17:25:46.440981068 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.0-p8"; ++ return "4.1.0-p9"; + } +--- mpfr-4.1.0/tests/mpfr-test.h.orig 2020-06-29 13:57:32.000000000 +0000 ++++ mpfr-4.1.0/tests/mpfr-test.h 2021-02-17 17:25:46.424981219 +0000 +@@ -191,6 +191,8 @@ + + #define mpfr_cmp0(x,y) (MPFR_ASSERTN (!MPFR_IS_NAN (x) && !MPFR_IS_NAN (y)), mpfr_cmp (x,y)) + #define mpfr_cmp_ui0(x,i) (MPFR_ASSERTN (!MPFR_IS_NAN (x)), mpfr_cmp_ui (x,i)) ++#define mpfr_cmp_si_2exp0(x,i,e) (MPFR_ASSERTN (!MPFR_IS_NAN (x)), \ ++ mpfr_cmp_si_2exp (x,i,e)) + + /* define CHECK_EXTERNAL if you want to check mpfr against another library + with correct rounding. You'll probably have to modify mpfr_print_raw() +--- mpfr-4.1.0/tests/tj1.c.orig 2020-01-08 18:11:13.000000000 +0000 ++++ mpfr-4.1.0/tests/tj1.c 2021-02-17 17:25:46.424981219 +0000 +@@ -55,14 +55,14 @@ + /* since |x| is just above 2^e, |j1(x)| is just above 2^(e-1), + thus y should be 2^(e-1) and the inexact flag should be + of opposite sign of x */ +- MPFR_ASSERTN(mpfr_cmp_si_2exp (y, sign, e - 1) == 0); ++ MPFR_ASSERTN(mpfr_cmp_si_2exp0 (y, sign, e - 1) == 0); + MPFR_ASSERTN(VSIGN (inex) * sign < 0); + } + else + { + /* here |y| should be 0.5*2^emin and the inexact flag should + have the sign of x */ +- MPFR_ASSERTN(mpfr_cmp_si_2exp (y, sign, e) == 0); ++ MPFR_ASSERTN(mpfr_cmp_si_2exp0 (y, sign, e) == 0); + MPFR_ASSERTN(VSIGN (inex) * sign > 0); + } + } +@@ -72,6 +72,26 @@ + mpfr_clear (y); + } + ++/* a test that fails with GMP_CHECK_RANDOMIZE=1613146232984428 ++ on revision 14429 */ ++static void ++bug20210215 (void) ++{ ++ mpfr_t x, y; ++ int inex; ++ ++ mpfr_init2 (x, 221); ++ mpfr_init2 (y, 1); ++ mpfr_set_str (x, "1.6484611511696130037307738844228498447763863563070374544054791168614e+01", 10, MPFR_RNDN); ++ mpfr_clear_flags (); ++ inex = mpfr_j1 (y, x, MPFR_RNDZ); ++ MPFR_ASSERTN (mpfr_cmp_si_2exp0 (y, -1, -9) == 0); ++ MPFR_ASSERTN (inex > 0); ++ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); ++ mpfr_clear (x); ++ mpfr_clear (y); ++} ++ + int + main (int argc, char *argv[]) + { +@@ -79,6 +99,8 @@ + + tests_start_mpfr (); + ++ bug20210215 (); ++ + test_small (); + + mpfr_init (x); @@ -0,0 +1,24 @@ +0737a44e5a8a6f005f5da335e8b6551f 4ti2-1.6.9.tar.gz +1edbbbc5b5a8238eb3ab7773d3e4fcf4 Csdp-6.2.0.tgz +5f7c0270602f8f4c85ec3be69ed8e462 M2-emacs-8615029.tar.gz +d4c39877ba95556d9affaf24c44da989 Macaulay2-1.21.tar.gz +fd63f5a26a91a8c87812b597c8176626 Macaulay2-icons.tar.xz +1c1bd2cbe79acf298d41634494440174 TOPCOM-0.17.8.tar.gz +b544a1400423ee71388a5c4c907eb3b1 cddlib-094m.tar.gz +5de43fbe9c17220bb140263abcca3012 cohomCalg-0.32.tar.gz +91031b6019ebbf9d4617cb79e5d14974 factory-4.2.1.tar.gz +484e62dd7326a4af6e2072f4edbc769f flint-2.8.4.tar.gz +2848fd987ea9de3221e6d3cf127ea7e4 frobby_v0.9.0.tar.gz +3d033d0914acc642696f045f089d4afc gfan0.6.2.tar.gz +975b8397dcc89e22bb72a3696c339aa2 givaro-4.1.1.tar.gz +a5b12cf4403ea46d8d10d9b7ebfbe7a2 glpk-4.59.tar.gz +ecd1fa65e7de707cd5c00bdac56022cd gtest-1.10.0.tar.gz +de95babce9a7bf6afbdaa094a5743d24 lapack-3.9.0.tgz +f76a73580b48fd9a5fa447fb3897c818 libfplll-5.2.0.tar.gz +4466b2daf6f0aec5c1f5530cedf77126 linbox-1.6.3.tar.gz +313d8c02390698541b353b9fd2652b8d lrslib-071a.tar.gz +da242c618b547069bd68700982fd94fe mathic-1.0.tar.gz +3902bf21f72dfc5abd77f23dd2174b3c mathicgb-1.0.tar.gz +4464e8ef59a2b8988fa18c20227572fa memtailor-1.0.tar.gz +bdd3d5efba9c17da8d83a35ec552baef mpfr-4.1.0.tar.xz +3edbd98a3b599c4d0a31afd5484ffbdd mpsolve-3.2.1.tar.gz |