andreas pushed a commit to branch master
in repository guix.

commit 665bbd041329aed89ae996478f015f7c83814046
Author: Ludovic Courtès <[email protected]>
AuthorDate: Thu Apr 24 16:36:55 2025 +0200

    gnu: scotch: Remove CMake machinery for the Metis compatibility layer.
    
    This fixes a bug whereby ‘SCOTCHConfig.cmake’ would fail to find
    ‘scotchmetisTargets.cmake’ because it expects it to be in the same
    directory as itself, ${CMAKE_CURRENT_LIST_DIR}.
    
    * gnu/packages/patches/scotch-cmake-remove-metis.patch: New file.
    * gnu/packages/maths.scm (scotch)[source]: Use it.
    * gnu/local.mk (dist_patch_DATA): Add it.
    
    Change-Id: If8d8f890852c35cede6e81c33d18b9101988a635
    Signed-off-by: Andreas Enge <[email protected]>
---
 gnu/local.mk                                       |  1 +
 gnu/packages/maths.scm                             |  3 +++
 .../patches/scotch-cmake-remove-metis.patch        | 24 ++++++++++++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 395cc192a9..3efe47fe17 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2252,6 +2252,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/scilab-better-compiler-detection.patch  \
   %D%/packages/patches/scilab-tbx_build_help.patch             \
   %D%/packages/patches/scons-test-environment.patch            \
+  %D%/packages/patches/scotch-cmake-remove-metis.patch         \
   %D%/packages/patches/screen-hurd-path-max.patch              \
   %D%/packages/patches/scsh-nonstring-search-path.patch        \
   %D%/packages/patches/seed-webkit.patch                       \
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 0a8627b3fa..b9f0e16832 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5180,6 +5180,7 @@ implemented in ANSI C, and MPI for communications.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "0rbc51albpd2923dkirpkj8rfkic6rsvwqqnv1mmsk391zhk3amr"))
+       (patches (search-patches "scotch-cmake-remove-metis.patch"))
        (modules '((guix build utils)))
        (snippet
         #~(substitute* "src/libscotchmetis/library_parmetis.h"
@@ -5200,6 +5201,8 @@ implemented in ANSI C, and MPI for communications.")
        (modify-phases %standard-phases
          (add-after 'install 'install-metis
            (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the METIS compatibility library to a separate output to
+             ;; avoid a name clash on <metis.h>.
              (let* ((out    (assoc-ref outputs "out"))
                     (metis  (assoc-ref outputs "metis"))
                     (prefix (string-length out)))
diff --git a/gnu/packages/patches/scotch-cmake-remove-metis.patch 
b/gnu/packages/patches/scotch-cmake-remove-metis.patch
new file mode 100644
index 0000000000..91bb36f86e
--- /dev/null
+++ b/gnu/packages/patches/scotch-cmake-remove-metis.patch
@@ -0,0 +1,24 @@
+Remove the CMake machinery for the Metis/Parmetis compatibility layer:
+it has zero users and complicates things due to the separate "metis"
+output.
+
+Notably, the assumption in 'SCOTCHConfig.cmake' is that *metisTargets.cmake
+are in the same directory, which is not the case here.  Furthermore,
+'*metisTargets-relwithdebuginfo.cmake' assumes 'libscotchmetis*.so*' is
+available under '_IMPORT_PREFIX', which is only the case when
+'libscotchmetis*.so' is installed in the same directory as 'libscotch.so'.
+
+diff --git a/cmake/SCOTCHConfig.cmake.in b/cmake/SCOTCHConfig.cmake.in
+index ec52ac5..4ce5c30 100644
+--- a/cmake/SCOTCHConfig.cmake.in
++++ b/cmake/SCOTCHConfig.cmake.in
+@@ -77,9 +77,3 @@ if(@BUILD_LIBESMUMPS@)
+     include("${CMAKE_CURRENT_LIST_DIR}/ptesmumpsTargets.cmake")
+   endif()
+ endif()
+-if(@BUILD_LIBSCOTCHMETIS@)
+-  include("${CMAKE_CURRENT_LIST_DIR}/scotchmetisTargets.cmake")
+-  if(@BUILD_PTSCOTCH@)
+-    include("${CMAKE_CURRENT_LIST_DIR}/ptscotchparmetisTargets.cmake")
+-  endif()
+-endif()

Reply via email to