From 8fa206ebebefaf37edabf0db49679f432e3297be Mon Sep 17 00:00:00 2001 From: Hernan Martinez Date: Sun, 20 Apr 2025 13:09:50 -0600 Subject: [PATCH] hypre: Update to 2.33.0 and enable aarch64 (#24049) --- mingw-w64-hypre/0002-dsuperlu-cpu.patch | 14 ++++++ mingw-w64-hypre/PKGBUILD | 60 +++++++++++++++++-------- 2 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 mingw-w64-hypre/0002-dsuperlu-cpu.patch diff --git a/mingw-w64-hypre/0002-dsuperlu-cpu.patch b/mingw-w64-hypre/0002-dsuperlu-cpu.patch new file mode 100644 index 0000000000..3df48fb3ea --- /dev/null +++ b/mingw-w64-hypre/0002-dsuperlu-cpu.patch @@ -0,0 +1,14 @@ +diff -bur hypre-2.33.0-o/src/parcsr_ls/CMakeLists.txt hypre-2.33.0/src/parcsr_ls/CMakeLists.txt +--- hypre-2.33.0-o/src/parcsr_ls/CMakeLists.txt 2025-04-20 02:33:32.494730700 -0600 ++++ hypre-2.33.0/src/parcsr_ls/CMakeLists.txt 2025-04-20 02:37:05.188410400 -0600 +@@ -150,6 +150,10 @@ + par_mgr_device.c + ) + ++if (HYPRE_ENABLE_DSUPERLU) ++ list(APPEND SRCS dsuperlu.c) ++endif () ++ + target_sources(${PROJECT_NAME} + PRIVATE ${SRCS} + ${HDRS} diff --git a/mingw-w64-hypre/PKGBUILD b/mingw-w64-hypre/PKGBUILD index f6a2b7f4c3..6c1378a383 100644 --- a/mingw-w64-hypre/PKGBUILD +++ b/mingw-w64-hypre/PKGBUILD @@ -3,11 +3,11 @@ _realname=hypre pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=2.31.0 -pkgrel=2 +pkgver=2.33.0 +pkgrel=1 pkgdesc='A library for solving large, sparse linear systems on massively parallel computers (mingw-w64)' arch=('any') -mingw_arch=('mingw64' 'ucrt64' 'clang64') +mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') url='https://www.llnl.gov/casc/hypre/' msys2_repository_url='https://github.com/hypre-space/hypre/' msys2_documentation_url='https://hypre.readthedocs.io/' @@ -17,22 +17,37 @@ msys2_references=( license=('spdx:Apache-2.0 OR MIT') depends=("${MINGW_PACKAGE_PREFIX}-openblas" "${MINGW_PACKAGE_PREFIX}-superlu" - "${MINGW_PACKAGE_PREFIX}-superlu_dist" + $([[ ${CARCH} == aarch64 ]] || echo "${MINGW_PACKAGE_PREFIX}-superlu_dist") "${MINGW_PACKAGE_PREFIX}-omp") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-msmpi") + $([[ ${CARCH} == aarch64 ]] || echo "${MINGW_PACKAGE_PREFIX}-msmpi")) source=("https://github.com/hypre-space/hypre/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz" - "0001-fix-win32-check.patch") -sha256sums=('9a7916e2ac6615399de5010eb39c604417bb3ea3109ac90e199c5c63b0cb4334' - '9402d6d7115dc5e9f65209281c6783d973fe7fdc184963a9b346686023737ba1') + "0001-fix-win32-check.patch" + "0002-dsuperlu-cpu.patch") +sha256sums=('0f9103c34bce7a5dcbdb79a502720fc8aab4db9fd0146e0791cde7ec878f27da' + '9402d6d7115dc5e9f65209281c6783d973fe7fdc184963a9b346686023737ba1' + '6c13b611309957b0befe73e662b6410c99e2eea0e36e37e522082d4c2f41b2dd') + +apply_patch_with_msg() { + for _patch in "$@" + do + msg2 "Applying ${_patch}" + patch -Nbp1 -i "${srcdir}/${_patch}" + done +} prepare() { cd "${srcdir}/${_realname}-${pkgver}" # https://github.com/hypre-space/hypre/pull/578 - patch -p1 -i "${srcdir}/0001-fix-win32-check.patch" + apply_patch_with_msg \ + 0001-fix-win32-check.patch + + apply_patch_with_msg \ + 0002-dsuperlu-cpu.patch + } build() { @@ -43,6 +58,15 @@ build() { _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") fi + if [[ ${CARCH} == aarch64 ]]; then + _extra_config+=("-DHYPRE_ENABLE_DSUPERLU=OFF") + _extra_config+=("-DHYPRE_ENABLE_MPI=OFF") + + else + _extra_config+=("-DHYPRE_ENABLE_DSUPERLU=ON") + _extra_config+=("-DHYPRE_ENABLE_MPI=ON") + fi + #Static Build mkdir -p "${srcdir}/build-${MSYSTEM}-static" && cd "${srcdir}/build-${MSYSTEM}-static" @@ -51,12 +75,12 @@ build() { -GNinja \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ "${_extra_config[@]}" \ - -DHYPRE_WITH_OPENMP=ON \ - -DHYPRE_WITH_DSUPERLU=ON \ - -DTPL_DSUPERLU_LIBRARIES=ON \ + -DHYPRE_ENABLE_OPENMP=ON \ + -DHYPRE_ENABLE_SUPERLU=ON \ -DTPL_DSUPERLU_INCLUDE_DIRS=${MINGW_PREFIX}/include/superlu_dist \ -DTPL_DSUPERLU_LIBRARIES=${MINGW_PREFIX}/lib/libsuperlu_dist.a \ - -DBLA_VENDOR=OpenBLAS \ + -DTPL_SUPERLU_INCLUDE_DIRS=${MINGW_PREFIX}/include/superlu \ + -DTPL_SUPERLU_LIBRARIES=${MINGW_PREFIX}/lib/libsuperlu.a \ ../${_realname}-${pkgver}/src ${MINGW_PREFIX}/bin/cmake --build . @@ -69,13 +93,13 @@ build() { -GNinja \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ "${_extra_config[@]}" \ - -DHYPRE_ENABLE_SHARED=ON \ - -DHYPRE_WITH_OPENMP=ON \ - -DHYPRE_WITH_DSUPERLU=ON \ - -DTPL_DSUPERLU_LIBRARIES=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DHYPRE_ENABLE_OPENMP=ON \ + -DHYPRE_ENABLE_SUPERLU=ON \ -DTPL_DSUPERLU_INCLUDE_DIRS=${MINGW_PREFIX}/include/superlu_dist \ -DTPL_DSUPERLU_LIBRARIES=${MINGW_PREFIX}/lib/libsuperlu_dist.dll.a \ - -DBLA_VENDOR=OpenBLAS \ + -DTPL_SUPERLU_INCLUDE_DIRS=${MINGW_PREFIX}/include/superlu \ + -DTPL_SUPERLU_LIBRARIES=${MINGW_PREFIX}/lib/libsuperlu.dll.a \ ../${_realname}-${pkgver}/src ${MINGW_PREFIX}/bin/cmake --build .