Skip to content

Commit

Permalink
Fix mpich build
Browse files Browse the repository at this point in the history
  • Loading branch information
folmos-at-orange committed Apr 24, 2024
1 parent 67ee28b commit 0739d97
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 31 deletions.
29 changes: 20 additions & 9 deletions packaging/conda/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,31 @@
set -euo pipefail

# Choose the build preset for macOS/Linux
if [[ "$(uname)" == "Darwin" ]]
if [[ "$(uname)" == "Linux" ]]
then
CMAKE_PRESET="macos-clang-release"
else
CMAKE_PRESET="linux-gcc-release"
cmake --fresh --preset $CMAKE_PRESET -DBUILD_JARS=OFF -DTESTING=OFF -DMPI_SUFFIX=_mpich
else
CMAKE_PRESET="macos-clang-release"
cmake --fresh --preset $CMAKE_PRESET -DBUILD_JARS=OFF -DTESTING=OFF
fi

# Build MODL and MODL_Coclustering
cmake --fresh --preset $CMAKE_PRESET -DBUILD_JARS=OFF -DTESTING=OFF
cmake --build --preset $CMAKE_PRESET --parallel --target MODL MODL_Coclustering

# Copy the MODL binaries to the Conda PREFIX path
cp "./build/$CMAKE_PRESET/bin/MODL" "$PREFIX/bin"
cp "./build/$CMAKE_PRESET/bin/MODL_Coclustering" "$PREFIX/bin"
# Move the MODL binaries to the Conda PREFIX path
mv ./build/$CMAKE_PRESET/bin/MODL* "$PREFIX/bin"

# Rename MODL in Linux since it has a prefix depending of the MPI version
if [[ "$(uname)" == "Linux" ]]
then
if [[ -f "$PREFIX/bin/MODL_mpich" ]]
then
mv "$PREFIX/bin/MODL_mpich" "$PREFIX/bin/MODL"
else
mv "$PREFIX/bin/MODL_openmpi" "$PREFIX/bin/MODL"
fi
fi

# Custom rpath relocation and signing executables for macOS in arm64
#
Expand All @@ -30,8 +41,8 @@ cp "./build/$CMAKE_PRESET/bin/MODL_Coclustering" "$PREFIX/bin"
# application pressing on "Allow" works).
#
# However, in the default settings, `conda build` relocalizes the executable by changing rpath of
# the library paths at $PREFIX by relative ones and in doing so it nullifies any signature. So we
# do ourselves this procedure first and then sign the binary.
# the library paths at $PREFIX by relative ones and in doing so it nullifies any signature. So we do
# ourselves this procedure first and then sign the binary.
#
# Note that in meta.yaml for osx-arm64 we have custom build.binary_relocation and
# build.detect_binary_files_with_prefix option
Expand Down
26 changes: 26 additions & 0 deletions packaging/conda/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
---
# Note on MPI version pinning:
# We pin the MPI versions so the build does not suddently stop working
# Linux:
# - mpich=4.0.3 because of bugs of the 3.* series
# - requires conda-forge
# OSX:
# - mpich=3.4.3 because 4.* is still unstable
# - requires conda-forge
# Windows:
# - msmpi=10.1.1 is the latest as of this commit
mpi:
- mpich=4.0.3 # [linux]
- mpich=3.4.3 # [osx]
- msmpi=10.1.1 # [win]
c_compiler:
- gcc # [linux]
- clang # [osx]
c_compiler_version:
- 12 # [linux]
- 16 # [osx]
cxx_compiler:
- gxx # [linux]
- clangxx # [osx]
cxx_compiler_version:
- 12 # [linux]
- 16 # [osx]
# We need MacOS SDK 10.10 to be able to build on macOS Intel
# Download: https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.10.sdk.tar.xz
# Decompress then to /opt: tar -zxvf MacOSX10.10.sdk.tar.xz -C /opt
Expand Down
24 changes: 2 additions & 22 deletions packaging/conda/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,35 +26,15 @@ build:
detect_binary_files_with_prefix: false # [osx]
{% endif %}

# Note on version pinning:
# OSX:
# - mpich=3.4.3 because 4.* is still unstable
# - requires conda-forge
# Linux:
# - mpich=4.0.3 because of bugs of the 3.* series
# - requires conda-forge
requirements:
build:
- mpich 4.0.3 # [linux]
- mpich-mpicc 4.0.3 # [linux]
- mpich-mpicxx 4.0.3 # [linux]
- mpich 3.4.3 # [osx]
- mpich-mpicc 3.4.3 # [osx]
- mpich-mpicxx 3.4.3 # [osx]
- msmpi # [win]
- cmake
- ninja
- {{ compiler('cxx') }}
host:
- mpich 4.0.3 # [linux]
- mpich-mpicxx 4.0.3 # [linux]
- mpich 3.4.3 # [osx]
- mpich-mpicxx 3.4.3 # [osx]
- msmpi # [win]
- {{ mpi }}
run:
- mpich 4.0.3 # [linux]
- mpich 3.4.3 # [osx]
- msmpi # [win]
- {{ mpi }}

outputs:
- name: khiops-core
Expand Down

0 comments on commit 0739d97

Please sign in to comment.