public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sci-mathematics/flint/files/
@ 2021-05-28 19:27 Michael Orlitzky
  0 siblings, 0 replies; only message in thread
From: Michael Orlitzky @ 2021-05-28 19:27 UTC (permalink / raw
  To: gentoo-commits

commit:     23c86f8f7da0613fef04521842168147f21bfc62
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Fri May 28 19:09:42 2021 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Fri May 28 19:27:46 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=23c86f8f

sci-mathematics/flint: update GMP detection patch.

The new patch to fix detection of GMP was unnecessarily hostile to
cross-compiling, but someone was nice enough to point it out on the
upstream pull request. Here's the patch that was accepted upstream.

Closes: https://bugs.gentoo.org/771663
Package-Manager: Portage-3.0.18, Repoman-3.0.2
Signed-off-by: Michael Orlitzky <mjo <AT> gentoo.org>

 .../files/flint-2.7.1-fix-cmake-findgmp.patch      | 72 ++++++++++------------
 1 file changed, 33 insertions(+), 39 deletions(-)

diff --git a/sci-mathematics/flint/files/flint-2.7.1-fix-cmake-findgmp.patch b/sci-mathematics/flint/files/flint-2.7.1-fix-cmake-findgmp.patch
index d94d65c08d7..ca6e56ce197 100644
--- a/sci-mathematics/flint/files/flint-2.7.1-fix-cmake-findgmp.patch
+++ b/sci-mathematics/flint/files/flint-2.7.1-fix-cmake-findgmp.patch
@@ -1,4 +1,4 @@
-From 9f1ef23f34a7ceca1063606cfc749e4d32bef81c Mon Sep 17 00:00:00 2001
+From 41c4a0869d68d894cbe74a63612df75fd1e93bdf Mon Sep 17 00:00:00 2001
 From: Michael Orlitzky <michael@orlitzky.com>
 Date: Mon, 19 Apr 2021 16:56:54 -0400
 Subject: [PATCH 1/1] CMake/FindGMP.cmake: compile a test program to check the
@@ -7,18 +7,18 @@ Subject: [PATCH 1/1] CMake/FindGMP.cmake: compile a test program to check the
 The existing GMP version check consists of grepping the contents of
 the gmp.h header to parse out a few constants. This test fails, at
 least, on Gentoo, where the usual header file is a wrapper that
-includes the true header (to allow for simultaneous 32/64-bit
-support).
+includes the true header to allow for simultaneous 32/64-bit
+support.
 
-This commit updates the FindGMP check to compile a test program
-against gmp.h that compares the version bounds within C, and reports
-success or failure as the return value from main().
+This commit updates FindGMP to compile a test program against gmp.h
+that compares version constants using the C preprocessor. If GMP is
+too old, the test program will fail to compile and CMake will know.
 ---
- CMake/FindGMP.cmake | 97 +++++++++++++++++++++++++--------------------
- 1 file changed, 53 insertions(+), 44 deletions(-)
+ CMake/FindGMP.cmake | 91 +++++++++++++++++++++++----------------------
+ 1 file changed, 47 insertions(+), 44 deletions(-)
 
 diff --git a/CMake/FindGMP.cmake b/CMake/FindGMP.cmake
-index ce4df70f5..bd2871ca3 100644
+index ce4df70f5..951151274 100644
 --- a/CMake/FindGMP.cmake
 +++ b/CMake/FindGMP.cmake
 @@ -2,28 +2,23 @@
@@ -55,7 +55,7 @@ index ce4df70f5..bd2871ca3 100644
    endif()
    if(NOT GMP_FIND_VERSION_PATCH)
      set(GMP_FIND_VERSION_PATCH 0)
-@@ -32,43 +27,57 @@ if(NOT GMP_FIND_VERSION)
+@@ -32,43 +27,51 @@ if(NOT GMP_FIND_VERSION)
      "${GMP_FIND_VERSION_MAJOR}.${GMP_FIND_VERSION_MINOR}.${GMP_FIND_VERSION_PATCH}")
  endif()
  
@@ -102,42 +102,36 @@ index ce4df70f5..bd2871ca3 100644
 +
 +if(GMP_INCLUDE_DIRS AND GMP_LIBRARIES)
 +
-+  # Return "1" if the version is OK, or "0" otherwise.  This is
-+  # opposite the usual C program conventions, but makes the purpose of
-+  # the result variable semantically clear. We create an integer using
-+  # a few basic GMP functions to ensure that we can actually link against
-+  # the GMP library.
++  # This program will fail to compile if GMP is too old.
++  # We prefer to perform this "test" at compile-time to
++  # avoid problems with e.g. try_run() during cross-compilation.
 +  file(WRITE ${PROJECT_BINARY_DIR}/gmp-version-check.c ""
 +  "#include <gmp.h>\n"
 +  "\n"
-+  "int main(int argc, char **argv) {\n"
-+  "  mpz_t x;\n"
-+  "  mpz_init_set_str(x, \"7612058254738945\", 10);\n"
-+  "  mpz_clear(x);\n"
-+  "  if (__GNU_MP_VERSION < ${GMP_FIND_VERSION_MAJOR}) {\n"
-+  "    return 0;\n"
-+  "  }\n"
-+  "  else {\n"
-+  "    if (__GNU_MP_VERSION_MINOR < ${GMP_FIND_VERSION_MINOR}) {\n"
-+  "      return 0;\n"
-+  "    }\n"
-+  "    else {\n"
-+  "      if (__GNU_MP_VERSION_PATCHLEVEL < ${GMP_FIND_VERSION_PATCH}) {\n"
-+  "        return 0;\n"
-+  "      }\n"
-+  "    }\n"
-+  "  }\n"
-+  "  return 1;\n"
-+  "}\n")
++  "#define GMP_FIND_VERSION_MAJOR ${GMP_FIND_VERSION_MAJOR}\n"
++  "#define GMP_FIND_VERSION_MINOR ${GMP_FIND_VERSION_MINOR}\n"
++  "#define GMP_FIND_VERSION_PATCH ${GMP_FIND_VERSION_PATCH}\n"
++  "\n"
++  "#if __GNU_MP_VERSION < GMP_FIND_VERSION_MAJOR\n"
++  "#error insufficient GMP major version\n"
++  "#elif __GNU_MP_VERSION == GMP_FIND_VERSION_MAJOR\n"
++  "#if __GNU_MP_VERSION_MINOR < GMP_FIND_VERSION_MINOR\n"
++  "#error insufficient GMP minor version\n"
++  "#elif __GNU_MP_VERSION_MINOR == GMP_FIND_VERSION_MINOR\n"
++  "#if __GNU_MP_VERSION_PATCH < GMP_FIND_VERSION_PATCH\n"
++  "#error insufficient GMP patch version\n"
++  "#endif\n"
++  "#endif\n"
++  "#endif\n"
++  "\n"
++  "int main(int argc, char** argv) { return 0; }\n")
 +
-+  # Try to run the test program above with the appropriate version
++  # Try to compile the test program above with the appropriate version
 +  # strings substituted in.
-+  try_run(GMP_VERSION_OK
-+          GMP_VERSION_COMPILE_OK
++  try_compile(GMP_VERSION_OK
 +          "${PROJECT_BINARY_DIR}"
 +          "${PROJECT_BINARY_DIR}/gmp-version-check.c"
-+          CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${GMP_INCLUDE_DIRS}"
-+          LINK_LIBRARIES "${GMP_LIBRARIES}")
++          CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${GMP_INCLUDE_DIRS}")
  endif()
  
 -find_library(GMP_LIBRARIES gmp PATHS $ENV{GMPDIR} ${LIB_INSTALL_DIR})


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-05-28 19:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-28 19:27 [gentoo-commits] repo/gentoo:master commit in: sci-mathematics/flint/files/ Michael Orlitzky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox