From 96ab7248fe4ea30588cc8e80547f3ae759299c32 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Wed, 6 Aug 2025 22:37:33 -0400 Subject: [PATCH 1/3] Bump mpsolve to version 3.2.2 --- M2/cmake/build-libraries.cmake | 5 ++--- M2/libraries/mpsolve/Makefile.in | 9 ++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/M2/cmake/build-libraries.cmake b/M2/cmake/build-libraries.cmake index e96138cc825..ba82bcc24bd 100644 --- a/M2/cmake/build-libraries.cmake +++ b/M2/cmake/build-libraries.cmake @@ -517,13 +517,12 @@ _ADD_COMPONENT_DEPENDENCY(programs msolve "gmp;mpfr;flint" MSOLVE_FOUND) # https://numpi.dm.unipi.it/software/mpsolve # Known issue: tests don't work with static library ExternalProject_Add(build-mpsolve - URL ${M2_SOURCE_URL}/mpsolve-3.2.1.tar.gz - URL_HASH SHA256=3d11428ae9ab2e020f24cabfbcd9e4d9b22ec572cf70af0d44fe8dae1d51e78e + URL https://numpi.dm.unipi.it/wp-content/uploads/2025/03/mpsolve-3.2.2.tgz + URL_HASH SHA256=c951b37ad0bf0761da495544453ac470e6d716a208577599d78ce6f0bfd30317 PREFIX libraries/mpsolve SOURCE_DIR libraries/mpsolve/build DOWNLOAD_DIR ${CMAKE_SOURCE_DIR}/BUILD/tarfiles BUILD_IN_SOURCE ON - PATCH_COMMAND patch --batch -p1 < ${CMAKE_SOURCE_DIR}/libraries/mpsolve/patch-3.2.1 CONFIGURE_COMMAND autoreconf -vif COMMAND ${CONFIGURE} --prefix=${M2_HOST_PREFIX} #-C --cache-file=${CONFIGURE_CACHE} diff --git a/M2/libraries/mpsolve/Makefile.in b/M2/libraries/mpsolve/Makefile.in index b8604b3816f..0180a007112 100644 --- a/M2/libraries/mpsolve/Makefile.in +++ b/M2/libraries/mpsolve/Makefile.in @@ -1,14 +1,13 @@ VPATH = @srcdir@ HOMEPAGE = https://numpi.dm.unipi.it/software/mpsolve -VERSION = 3.2.1 -URL = https://macaulay2.com/Downloads/OtherSourceCode +VERSION = 3.2.2 +TARFILE = $(LIBNAME)-$(VERSION).tgz +URL = https://numpi.dm.unipi.it/wp-content/uploads/2025/03 # obtained from https://numpi.dm.unipi.it/_media/software/mpsolve # https://numpi.dm.unipi.it/_media/software/mpsolve/mpsolve-3.2.1.tar.gz -# the patch disables the python tests, which don't know that the name of the -# sharable library in Mac OS is libmps.3.dylib instead of libmps.so.3 -PATCHFILE = @abs_srcdir@/patch-$(VERSION) +# PATCHFILE = @abs_srcdir@/patch-$(VERSION) LICENSEFILES = README From 4fe769db74d95900ded74ba57f87a974c31884cd Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Fri, 8 Aug 2025 08:48:22 -0400 Subject: [PATCH 2/3] Include cmath before defining isnan macro (mpsolve patch) --- M2/cmake/build-libraries.cmake | 1 + M2/libraries/mpsolve/Makefile.in | 2 +- M2/libraries/mpsolve/patch-3.2.2 | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 M2/libraries/mpsolve/patch-3.2.2 diff --git a/M2/cmake/build-libraries.cmake b/M2/cmake/build-libraries.cmake index ba82bcc24bd..e09ae01a32f 100644 --- a/M2/cmake/build-libraries.cmake +++ b/M2/cmake/build-libraries.cmake @@ -523,6 +523,7 @@ ExternalProject_Add(build-mpsolve SOURCE_DIR libraries/mpsolve/build DOWNLOAD_DIR ${CMAKE_SOURCE_DIR}/BUILD/tarfiles BUILD_IN_SOURCE ON + PATCH_COMMAND patch --batch -p1 < ${CMAKE_SOURCE_DIR}/libraries/mpsolve/patch-3.2.2 CONFIGURE_COMMAND autoreconf -vif COMMAND ${CONFIGURE} --prefix=${M2_HOST_PREFIX} #-C --cache-file=${CONFIGURE_CACHE} diff --git a/M2/libraries/mpsolve/Makefile.in b/M2/libraries/mpsolve/Makefile.in index 0180a007112..90243453bda 100644 --- a/M2/libraries/mpsolve/Makefile.in +++ b/M2/libraries/mpsolve/Makefile.in @@ -7,7 +7,7 @@ URL = https://numpi.dm.unipi.it/wp-content/uploads/2025/03 # obtained from https://numpi.dm.unipi.it/_media/software/mpsolve # https://numpi.dm.unipi.it/_media/software/mpsolve/mpsolve-3.2.1.tar.gz -# PATCHFILE = @abs_srcdir@/patch-$(VERSION) +PATCHFILE = @abs_srcdir@/patch-$(VERSION) LICENSEFILES = README diff --git a/M2/libraries/mpsolve/patch-3.2.2 b/M2/libraries/mpsolve/patch-3.2.2 new file mode 100644 index 00000000000..a6bdefa3f08 --- /dev/null +++ b/M2/libraries/mpsolve/patch-3.2.2 @@ -0,0 +1,37 @@ +From 260432c9d1002261f60159d0520af7862d4471ed Mon Sep 17 00:00:00 2001 +From: Doug Torrance +Date: Fri, 8 Aug 2025 14:05:58 -0400 +Subject: [PATCH] Include cmath in C++ before defining isnan macro + +Otherwise we get the following compile error in macOS: + + /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/cmath:587:17: error: expected unqualified-id + return std::isnan(__lcpp_x); + ^ + ../../include/mps/types.h:27:3: note: expanded from macro 'isnan' + (sizeof(x) == sizeof(long double) ? isnan_ld (x) \ + ^ +--- + include/mps/types.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/include/mps/types.h b/include/mps/types.h +index e3465aa5..4f427f59 100644 +--- a/include/mps/types.h ++++ mpsolve-3.2.2/include/mps/types.h +@@ -21,7 +21,11 @@ typedef bool mps_boolean; + typedef int mps_debug_level; + + /* Handle systems where isnan and isinf are not available */ +-#include ++#ifdef __cplusplus ++ #include ++#else ++ #include ++#endif + #ifndef isnan + # define isnan(x) \ + (sizeof(x) == sizeof(long double) ? isnan_ld (x) \ +-- +2.43.0 + From 71bbb872a85df53af7afd1ff67a0ffdc2adf9d33 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Sat, 9 Aug 2025 09:53:19 -0400 Subject: [PATCH 3/3] Use CPPFLAGS (not CFLAGS) for header directories (mpsolve patch) [ci skip] --- M2/libraries/mpsolve/patch-3.2.2 | 33 ++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/M2/libraries/mpsolve/patch-3.2.2 b/M2/libraries/mpsolve/patch-3.2.2 index a6bdefa3f08..a6448f749d8 100644 --- a/M2/libraries/mpsolve/patch-3.2.2 +++ b/M2/libraries/mpsolve/patch-3.2.2 @@ -15,8 +15,20 @@ Otherwise we get the following compile error in macOS: include/mps/types.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -diff --git a/include/mps/types.h b/include/mps/types.h -index e3465aa5..4f427f59 100644 +From 449d608b360fea0056049d7f8e874ea022fadab5 Mon Sep 17 00:00:00 2001 +From: Doug Torrance +Date: Sat, 9 Aug 2025 09:49:08 -0400 +Subject: [PATCH] Use CPPFLAGS instead of CFLAGS for specifying header + directories + +CPPFLAGS appear before CFLAGS, so if the user passes some directories +manually using CPPFLAGS, they will appear first. This is a problem if +these directories contain older versions of the mpsolve headers. We +want to ensure that the current versions are found first. +--- + src/mpsolve/Makefile.am | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + --- a/include/mps/types.h +++ mpsolve-3.2.2/include/mps/types.h @@ -21,7 +21,11 @@ typedef bool mps_boolean; @@ -32,6 +44,23 @@ index e3465aa5..4f427f59 100644 #ifndef isnan # define isnan(x) \ (sizeof(x) == sizeof(long double) ? isnan_ld (x) \ +--- a/src/mpsolve/Makefile.am ++++ mpsolve-3.2.2/src/mpsolve/Makefile.am +@@ -6,10 +6,12 @@ man_MANS = ${builddir}/mpsolve.1 + + EXTRA_DIST = mpsolve.1 + +-mpsolve_CFLAGS = \ ++mpsolve_CPPFLAGS = \ + -I${top_srcdir}/include \ + -I. \ +- -I${top_builddir}/include \ ++ -I${top_builddir}/include ++ ++mpsolve_CFLAGS = \ + $(GMP_CFLAGS) \ + $(GTK_CFLAGS) \ + $(PTHREAD_CFLAGS) \ -- 2.43.0