diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index a5836e8d..ba4b251c 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -72,7 +72,6 @@ else --suppress-variables ${EXTRA_CB_OPTIONS:-} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" - ( startgroup "Inspecting artifacts" ) 2> /dev/null # inspect_artifacts was only added in conda-forge-ci-setup 4.6.0 diff --git a/recipe/build-mpi.sh b/recipe/build-mpi.sh index 5ebf122a..e8e364d5 100755 --- a/recipe/build-mpi.sh +++ b/recipe/build-mpi.sh @@ -11,22 +11,32 @@ export FC=$(basename "$FC") unset FFLAGS F77 F90 F95 # tweak compiler flags -wrapper_ldflags="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib" export LIBRARY_PATH="$PREFIX/lib" if [[ "$target_platform" == osx-* ]]; then + # FIXME: remove autogen when autotools patch no longer required + perl autogen.pl --force if [[ -n "$CONDA_BUILD_SYSROOT" ]]; then export CFLAGS="$CFLAGS -isysroot $CONDA_BUILD_SYSROOT" export CXXFLAGS="$CXXFLAGS -isysroot $CONDA_BUILD_SYSROOT" fi fi +# tweak wrapper ldflags +wrapper_ldflags="" +if [[ "$target_platform" == linux-* ]]; then + # allow-shlib-undefined required for dependencies to link against older sysroot + # avoids undefined + wrapper_ldflags='-Wl,--allow-shlib-undefined' +fi +if [[ "$target_platform" == osx-* ]]; then + # rpath required for '@rpath/libmpi.*.dylib' to be found at runtime + wrapper_ldflags='-Wl,-rpath,${libdir}' +fi + # UCX support build_with_ucx="" if [[ "$target_platform" == linux-* ]]; then build_with_ucx="--with-ucx=$PREFIX" - # allow-shlib-undefined required for dependencies to link against older sysroot - # avoids undefined - wrapper_ldflags="${wrapper_ldflags} -Wl,--allow-shlib-undefined" fi # CUDA support @@ -59,11 +69,7 @@ fi ./configure --prefix=$PREFIX \ --disable-dependency-tracking \ --enable-mpi-fortran \ - --disable-wrapper-rpath \ - --disable-wrapper-runpath \ - --with-wrapper-cflags="-I$PREFIX/include" \ - --with-wrapper-cxxflags="-I$PREFIX/include" \ - --with-wrapper-fcflags="-I$PREFIX/include" \ + --with-mpi-moduledir='${includedir}' \ --with-wrapper-ldflags="${wrapper_ldflags}" \ --with-sge \ --with-hwloc=$PREFIX \ @@ -78,13 +84,6 @@ fi make -j"${CPU_COUNT:-1}" make install -# openmpi installs .mod files in the wrong prefix (/lib instead of /include) -# symlink instead of copy to avoid breaking anything (unlikely) -for f in $PREFIX/lib/*.mod; do - modname=$(basename "$f") - ln -sv "../lib/${modname}" "$PREFIX/include/${modname}" -done - POST_LINK=$PREFIX/bin/.openmpi-post-link.sh if [ -n "$build_with_ucx" ]; then echo "setting MCA pml to ^ucx..." diff --git a/recipe/ldflags-mac.patch b/recipe/ldflags-mac.patch new file mode 100644 index 00000000..dcedc7b5 --- /dev/null +++ b/recipe/ldflags-mac.patch @@ -0,0 +1,31 @@ +From e70f0a4afb1277e52389267777d260229b468ec0 Mon Sep 17 00:00:00 2001 +From: Min RK +Date: Mon, 29 Jul 2024 12:50:59 +0200 +Subject: [PATCH] typo in LDFLAGS_save_xcode variable name + +resulted in effectively overriding LDFLAGS='' on mac +--- + config/ompi_setup_fc.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/config/ompi_setup_fc.m4 b/config/ompi_setup_fc.m4 +index 53c3cd96da..c147bf2b60 100644 +--- a/config/ompi_setup_fc.m4 ++++ b/config/ompi_setup_fc.m4 +@@ -212,11 +212,11 @@ end program + AS_IF([test $xcode_happy -eq 1], + [ # Restore LDFLAFGS + the new flags (i.e., get rid of the + # "-L." we added for this test) +- LDFLAGS="$LDFLAGS_xcode_save $1" ++ LDFLAGS="$LDFLAGS_save_xcode $1" + $2], + [ # If we failed the test, reset LDFLAGS back to its + # original value. +- LDFLAGS=$LDFLAGS_xcode_save ++ LDFLAGS=$LDFLAGS_save_xcode + $3]) + + OPAL_VAR_SCOPE_POP +-- +2.45.0 + diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 4578cdd7..4fd8f393 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,7 +1,7 @@ -{% set version = "5.0.3" %} +{% set version = "5.0.4" %} {% set major = version.rpartition('.')[0] %} {% set cuda_major = (cuda_compiler_version|default("11.8")).rpartition('.')[0] %} -{% set build = 10 %} +{% set build = 0 %} # give conda package a higher build number {% if mpi_type == 'conda' %} @@ -16,7 +16,10 @@ package: source: fn: openmpi-{{ version }}.tar.bz2 url: https://www.open-mpi.org/software/ompi/v{{ major }}/downloads/openmpi-{{ version }}.tar.bz2 - sha256: 990582f206b3ab32e938aa31bbf07c639368e4405dca196fabe7f0f76eeda90b + sha256: 64526852cdd88b2d30e022087c16ab3e03806c451b10cd691d5c1ac887d8ef9d + patches: + - pr12694.patch # remove after 5.0.5 + - ldflags-mac.patch # [osx] build: number: {{ build }} @@ -48,8 +51,10 @@ outputs: - {{ compiler('cuda') }} # [cuda_compiler != "None"] - {{ compiler('fortran') }} - {{ stdlib('c') }} - #- autoconf # [unix] - #- automake # [unix] + # FIXME: autotools, perl required for ldflags-mac.patch + - perl # [osx] + - autoconf # [osx] + - automake # [osx] - libtool # [unix] - make # [unix] host: diff --git a/recipe/pr12694.patch b/recipe/pr12694.patch new file mode 100644 index 00000000..e63c3467 --- /dev/null +++ b/recipe/pr12694.patch @@ -0,0 +1,24 @@ +From 2085433c0977d37cbd1631fa7695a29de3f578c5 Mon Sep 17 00:00:00 2001 +From: Jeff Squyres +Date: Thu, 6 Jun 2024 11:22:53 -0400 +Subject: [PATCH] aarch64_functions.c: fix trivial typo + +Signed-off-by: Jeff Squyres +(cherry picked from commit 7c5ef484b6f8ee4d13a40e2d6cd84dc11c19c6fe) +--- + ompi/mca/op/aarch64/op_aarch64_functions.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ompi/mca/op/aarch64/op_aarch64_functions.c b/ompi/mca/op/aarch64/op_aarch64_functions.c +index ea4fd488655..d5878913f2f 100644 +--- a/ompi/mca/op/aarch64/op_aarch64_functions.c ++++ b/ompi/mca/op/aarch64/op_aarch64_functions.c +@@ -119,7 +119,7 @@ _Generic((*(out)), \ + int left_over = *count; \ + type##type_size##_t *in = (type##type_size##_t *) _in, \ + *out = (type##type_size##_t *) _out; \ +- OP_CONCAT(OMPI_OP_TYPE_PREPEND, type##type_size####x##type_cnt##_t) vsrc, vdst; \ ++ OP_CONCAT(OMPI_OP_TYPE_PREPEND, type##type_size##x##type_cnt##_t) vsrc, vdst; \ + for (; left_over >= type_cnt; left_over -= type_cnt) { \ + vsrc = vld1q##_##type_name##type_size(in); \ + vdst = vld1q##_##type_name##type_size(out); \ diff --git a/recipe/run_test.sh b/recipe/run_test.sh index 38c4a0c1..e03f4f6c 100755 --- a/recipe/run_test.sh +++ b/recipe/run_test.sh @@ -28,8 +28,6 @@ if [[ $PKG_NAME == "openmpi" ]]; then $MPIEXEC -n 4 ./helloworld.sh test -f $PREFIX/include/mpi.mod - # keep duplicates in original location for now - test -f $PREFIX/lib/mpi.mod fi if [[ $PKG_NAME == "openmpi-mpicc" ]]; then