diff --git a/packaging/conda/build.sh b/packaging/conda/build.sh index 85a4d1174..80357b5bb 100644 --- a/packaging/conda/build.sh +++ b/packaging/conda/build.sh @@ -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 # @@ -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 diff --git a/packaging/conda/conda_build_config.yaml b/packaging/conda/conda_build_config.yaml index 03d8c9e6a..185e09f7c 100644 --- a/packaging/conda/conda_build_config.yaml +++ b/packaging/conda/conda_build_config.yaml @@ -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 diff --git a/packaging/conda/meta.yaml b/packaging/conda/meta.yaml index 662716986..0cc60d079 100644 --- a/packaging/conda/meta.yaml +++ b/packaging/conda/meta.yaml @@ -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