From 04c9589d5c44d2ebff844184141dad65f9a8e09e Mon Sep 17 00:00:00 2001 From: Felipe Olmos <92923444+folmos-at-orange@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:30:36 +0200 Subject: [PATCH] WIP openmpi conda --- .github/workflows/conda.yml | 4 ++-- packaging/conda/build.sh | 24 ++++++++++++++++++------ packaging/conda/meta.yaml | 30 ++++++++++-------------------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index e6e2fb379..7c7d754f3 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -74,7 +74,7 @@ jobs: # In Linux/macOS we need the conda-forge channel to install their pinned versions - name: Build conda packages (Linux/macOS) if: runner.os != 'Windows' - run: conda build --channel conda-forge --output-folder ./build/conda ./packaging/conda + run: conda build --output-folder ./build/conda ./packaging/conda - name: Upload conda packages artifact uses: actions/upload-artifact@v4 with: @@ -114,7 +114,7 @@ jobs: # In Linux/macOS we need the conda-forge channel to install their pinned versions - name: Install the Conda package (Linux/macOS) if: runner.os != 'Windows' - run: conda install --channel conda-forge --channel ./build/conda khiops-core + run: conda install --channel ./build/conda khiops-core - name: Test that the executables are installed run: | MODL -v diff --git a/packaging/conda/build.sh b/packaging/conda/build.sh index 85a4d1174..a00969242 100644 --- a/packaging/conda/build.sh +++ b/packaging/conda/build.sh @@ -4,20 +4,32 @@ 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=_openmpi +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" +ls -ltr "./build/$CMAKE_PRESET/bin" +cp ./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 # diff --git a/packaging/conda/meta.yaml b/packaging/conda/meta.yaml index 662716986..c2fc50442 100644 --- a/packaging/conda/meta.yaml +++ b/packaging/conda/meta.yaml @@ -26,35 +26,25 @@ 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] + - openmpi # [not win] + - openmpi-mpicc # [not win] + - openmpi-mpicxx # [not win] - 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] + - openmpi # [not win] + - openmpi-mpicc # [not win] + - openmpi-mpicxx # [not win] - msmpi # [win] run: - - mpich 4.0.3 # [linux] - - mpich 3.4.3 # [osx] - - msmpi # [win] + - openmpi # [not win] + - openmpi-mpicc # [not win] + - openmpi-mpicxx # [not win] + - msmpi # [win] outputs: - name: khiops-core