├── .github └── CODEOWNERS ├── recipe ├── conda_build_config.yaml ├── tests │ ├── helloworld.sh │ ├── helloworld.c │ ├── helloworld.cxx │ ├── helloworld.f │ └── helloworld.f90 ├── post-link-cuda.sh ├── openmpi_activate.sh ├── run_test.sh ├── cross-gfortran.osx-arm64.sh ├── cross-gfortran.linux-aarch64.sh ├── cross-gfortran.linux-ppc64le.sh ├── build-mpi.sh └── recipe.yaml ├── .ci_support ├── README ├── linux_ppc64le_mpi_typeconda.yaml ├── linux_ppc64le_mpi_typeexternal.yaml ├── osx_64_.yaml ├── osx_arm64_.yaml ├── linux_64_cuda_compiler_version12.9mpi_typeconda.yaml ├── linux_64_cuda_compiler_version12.9mpi_typeexternal.yaml ├── linux_aarch64_cuda_compiler_version12.9mpi_typeconda.yaml ├── linux_aarch64_cuda_compiler_version12.9mpi_typeexternal.yaml └── migrations │ └── cuda129.yaml ├── conda-forge.yml ├── .circleci └── config.yml ├── .gitattributes ├── .gitignore ├── .scripts ├── logging_utils.sh ├── build_steps.sh ├── run_osx_build.sh └── run_docker_build.sh ├── .azure-pipelines ├── azure-pipelines-osx.yml └── azure-pipelines-linux.yml ├── azure-pipelines.yml ├── LICENSE.txt └── README.md /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @astrofrog @beckermr @bekozi @dalcinl @j34ni @leofang @minrk @msarahan @ocefpaf -------------------------------------------------------------------------------- /recipe/conda_build_config.yaml: -------------------------------------------------------------------------------- 1 | mpi_type: 2 | - external # [linux] 3 | - conda 4 | libfabric: 5 | - "1.19" 6 | libpmix_devel: 7 | - "5" 8 | -------------------------------------------------------------------------------- /recipe/tests/helloworld.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | rank=$OMPI_COMM_WORLD_RANK 4 | size=$OMPI_COMM_WORLD_SIZE 5 | printf "Hello, World! I am process %d of %d.\n" $rank $size 6 | -------------------------------------------------------------------------------- /.ci_support/README: -------------------------------------------------------------------------------- 1 | This file is automatically generated by conda-smithy. If any 2 | particular build configuration is expected, but it is not found, 3 | please make sure all dependencies are satisfiable. To add/modify any 4 | matrix elements, you should create/change conda-smithy's input 5 | recipe/conda_build_config.yaml and re-render the recipe, rather than 6 | editing these files directly. 7 | -------------------------------------------------------------------------------- /recipe/tests/helloworld.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | int provided, size, rank, len; 7 | char name[MPI_MAX_PROCESSOR_NAME]; 8 | 9 | MPI_Init(&argc, &argv); 10 | 11 | MPI_Comm_size(MPI_COMM_WORLD, &size); 12 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 13 | MPI_Get_processor_name(name, &len); 14 | 15 | printf("Hello, World! I am process %d of %d on %s.\n", rank, size, name); 16 | 17 | MPI_Finalize(); 18 | return 0; 19 | } 20 | -------------------------------------------------------------------------------- /conda-forge.yml: -------------------------------------------------------------------------------- 1 | azure: 2 | settings_linux: 3 | swapfile_size: 10GiB 4 | store_build_artifacts: false 5 | build_platform: 6 | linux_aarch64: linux_64 7 | linux_ppc64le: linux_64 8 | osx_arm64: osx_64 9 | conda_build: 10 | pkg_format: '2' 11 | conda_build_tool: rattler-build 12 | conda_forge_output_validation: true 13 | github: 14 | branch_name: main 15 | tooling_branch_name: main 16 | provider: 17 | linux_aarch64: default 18 | linux_ppc64le: default 19 | osx_arm64: default 20 | test: native_and_emulated 21 | -------------------------------------------------------------------------------- /recipe/post-link-cuda.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cat << EOF >> $PREFIX/.messages.txt 4 | 5 | On Linux, Open MPI is built with CUDA awareness but it is disabled by default. 6 | To enable it, please set the environment variable 7 | OMPI_MCA_opal_cuda_support=true 8 | before launching your MPI processes. 9 | Equivalently, you can set the MCA parameter in the command line: 10 | mpiexec --mca opal_cuda_support 1 ... 11 | Note that you might also need to set UCX_MEMTYPE_CACHE=n for CUDA awareness via 12 | UCX. Please consult UCX documentation for further details. 13 | 14 | EOF 15 | -------------------------------------------------------------------------------- /recipe/tests/helloworld.cxx: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | int provided, size, rank, len; 7 | char name[MPI_MAX_PROCESSOR_NAME]; 8 | 9 | MPI_Init(&argc, &argv); 10 | 11 | MPI_Comm_size(MPI_COMM_WORLD, &size); 12 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 13 | MPI_Get_processor_name(name, &len); 14 | 15 | std::cout << 16 | "Hello, World! " << 17 | "I am process " << rank << 18 | " of " << size << 19 | " on " << name << 20 | "." << std::endl; 21 | 22 | MPI_Finalize(); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /recipe/tests/helloworld.f: -------------------------------------------------------------------------------- 1 | program main 2 | 3 | include 'mpif.h' 4 | 5 | integer ierr, rank, size, len 6 | character name*(MPI_MAX_PROCESSOR_NAME) 7 | 8 | call MPI_INIT(ierr) 9 | call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) 10 | call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr) 11 | call MPI_GET_PROCESSOR_NAME(name, len, ierr) 12 | 13 | print '(2A,I2,A,I2,3A)', 14 | & 'Hello, World! ', 15 | & 'I am process ', rank, 16 | & ' of ', size, 17 | & ' on ', trim(name), '.' 18 | 19 | call MPI_FINALIZE(ierr) 20 | 21 | end 22 | -------------------------------------------------------------------------------- /recipe/tests/helloworld.f90: -------------------------------------------------------------------------------- 1 | program main 2 | 3 | use mpi 4 | implicit none 5 | 6 | integer :: provided, ierr, size, rank, len 7 | character (len=MPI_MAX_PROCESSOR_NAME) :: name 8 | 9 | call MPI_Init(ierr) 10 | 11 | call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) 12 | call MPI_Comm_size(MPI_COMM_WORLD, size, ierr) 13 | call MPI_Get_processor_name(name, len, ierr) 14 | 15 | write(*, '(2A,I2,A,I2,3A)') & 16 | 'Hello, World! ', & 17 | 'I am process ', rank, & 18 | ' of ', size, & 19 | ' on ', name(1:len), '.' 20 | 21 | call MPI_Finalize(ierr) 22 | 23 | end program main 24 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: jinja-yaml -*- 4 | 5 | version: 2 6 | 7 | jobs: 8 | build: 9 | working_directory: ~/test 10 | machine: 11 | image: ubuntu-2004:current 12 | steps: 13 | - run: 14 | # The Circle-CI build should not be active, but if this is not true for some reason, do a fast finish. 15 | command: exit 0 16 | 17 | workflows: 18 | version: 2 19 | build_and_test: 20 | jobs: 21 | - build: 22 | filters: 23 | branches: 24 | ignore: 25 | - /.*/ 26 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_mpi_typeconda.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - None 17 | cuda_compiler_version_min: 18 | - None 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - conda 39 | target_platform: 40 | - linux-ppc64le 41 | zip_keys: 42 | - - c_compiler_version 43 | - cxx_compiler_version 44 | - fortran_compiler_version 45 | - c_stdlib_version 46 | - cuda_compiler_version 47 | zlib: 48 | - '1' 49 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_mpi_typeexternal.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - None 17 | cuda_compiler_version_min: 18 | - None 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - external 39 | target_platform: 40 | - linux-ppc64le 41 | zip_keys: 42 | - - c_compiler_version 43 | - cxx_compiler_version 44 | - fortran_compiler_version 45 | - c_stdlib_version 46 | - cuda_compiler_version 47 | zlib: 48 | - '1' 49 | -------------------------------------------------------------------------------- /.ci_support/osx_64_.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cuda_compiler: 18 | - cuda-nvcc 19 | cuda_compiler_version: 20 | - None 21 | cuda_compiler_version_min: 22 | - None 23 | cxx_compiler: 24 | - clangxx 25 | cxx_compiler_version: 26 | - '19' 27 | fortran_compiler: 28 | - gfortran 29 | fortran_compiler_version: 30 | - '14' 31 | libevent: 32 | - 2.1.12 33 | libfabric: 34 | - '1.19' 35 | libhwloc: 36 | - 2.12.1 37 | libpmix_devel: 38 | - '5' 39 | macos_machine: 40 | - x86_64-apple-darwin13.4.0 41 | mpi_type: 42 | - conda 43 | target_platform: 44 | - osx-64 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | zlib: 50 | - '1' 51 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cuda_compiler: 18 | - cuda-nvcc 19 | cuda_compiler_version: 20 | - None 21 | cuda_compiler_version_min: 22 | - None 23 | cxx_compiler: 24 | - clangxx 25 | cxx_compiler_version: 26 | - '19' 27 | fortran_compiler: 28 | - gfortran 29 | fortran_compiler_version: 30 | - '14' 31 | libevent: 32 | - 2.1.12 33 | libfabric: 34 | - '1.19' 35 | libhwloc: 36 | - 2.12.1 37 | libpmix_devel: 38 | - '5' 39 | macos_machine: 40 | - arm64-apple-darwin20.0.0 41 | mpi_type: 42 | - conda 43 | target_platform: 44 | - osx-arm64 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | zlib: 50 | - '1' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_64_cuda_compiler_version12.9mpi_typeconda.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - '12.9' 17 | cuda_compiler_version_min: 18 | - '12.9' 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - conda 39 | target_platform: 40 | - linux-64 41 | ucc: 42 | - '1' 43 | ucx: 44 | - '1.19' 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | - c_stdlib_version 50 | - cuda_compiler_version 51 | zlib: 52 | - '1' 53 | -------------------------------------------------------------------------------- /.ci_support/linux_64_cuda_compiler_version12.9mpi_typeexternal.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - '12.9' 17 | cuda_compiler_version_min: 18 | - '12.9' 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - external 39 | target_platform: 40 | - linux-64 41 | ucc: 42 | - '1' 43 | ucx: 44 | - '1.19' 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | - c_stdlib_version 50 | - cuda_compiler_version 51 | zlib: 52 | - '1' 53 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.patch binary 4 | *.diff binary 5 | meta.yaml text eol=lf 6 | build.sh text eol=lf 7 | bld.bat text eol=crlf 8 | 9 | # github helper pieces to make some files not show up in diffs automatically 10 | .azure-pipelines/* linguist-generated=true 11 | .circleci/* linguist-generated=true 12 | .ci_support/README linguist-generated=true 13 | .drone/* linguist-generated=true 14 | .drone.yml linguist-generated=true 15 | .github/* linguist-generated=true 16 | .travis/* linguist-generated=true 17 | .appveyor.yml linguist-generated=true 18 | .gitattributes linguist-generated=true 19 | .gitignore linguist-generated=true 20 | .travis.yml linguist-generated=true 21 | .scripts/* linguist-generated=true 22 | .woodpecker.yml linguist-generated=true 23 | /LICENSE.txt linguist-generated=true 24 | /README.md linguist-generated=true 25 | azure-pipelines.yml linguist-generated=true 26 | build-locally.py linguist-generated=true 27 | pixi.toml linguist-generated=true 28 | shippable.yml linguist-generated=true 29 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_cuda_compiler_version12.9mpi_typeconda.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - '12.9' 17 | cuda_compiler_version_min: 18 | - '12.9' 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - conda 39 | target_platform: 40 | - linux-aarch64 41 | ucc: 42 | - '1' 43 | ucx: 44 | - '1.19' 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | - c_stdlib_version 50 | - cuda_compiler_version 51 | zlib: 52 | - '1' 53 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # User content belongs under recipe/. 2 | # Feedstock configuration goes in `conda-forge.yml` 3 | # Everything else is managed by the conda-smithy rerender process. 4 | # Please do not modify 5 | 6 | # Ignore all files and folders in root 7 | * 8 | !/conda-forge.yml 9 | 10 | # Don't ignore any files/folders if the parent folder is 'un-ignored' 11 | # This also avoids warnings when adding an already-checked file with an ignored parent. 12 | !/**/ 13 | # Don't ignore any files/folders recursively in the following folders 14 | !/recipe/** 15 | !/.ci_support/** 16 | 17 | # Since we ignore files/folders recursively, any folders inside 18 | # build_artifacts gets ignored which trips some build systems. 19 | # To avoid that we 'un-ignore' all files/folders recursively 20 | # and only ignore the root build_artifacts folder. 21 | !/build_artifacts/** 22 | /build_artifacts 23 | 24 | *.pyc 25 | 26 | # Rattler-build's artifacts are in `output` when not specifying anything. 27 | /output 28 | # Pixi's configuration 29 | .pixi 30 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_cuda_compiler_version12.9mpi_typeexternal.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cuda_compiler: 14 | - cuda-nvcc 15 | cuda_compiler_version: 16 | - '12.9' 17 | cuda_compiler_version_min: 18 | - '12.9' 19 | cxx_compiler: 20 | - gxx 21 | cxx_compiler_version: 22 | - '14' 23 | docker_image: 24 | - quay.io/condaforge/linux-anvil-x86_64:alma9 25 | fortran_compiler: 26 | - gfortran 27 | fortran_compiler_version: 28 | - '14' 29 | libevent: 30 | - 2.1.12 31 | libfabric: 32 | - '1.19' 33 | libhwloc: 34 | - 2.12.1 35 | libpmix_devel: 36 | - '5' 37 | mpi_type: 38 | - external 39 | target_platform: 40 | - linux-aarch64 41 | ucc: 42 | - '1' 43 | ucx: 44 | - '1.19' 45 | zip_keys: 46 | - - c_compiler_version 47 | - cxx_compiler_version 48 | - fortran_compiler_version 49 | - c_stdlib_version 50 | - cuda_compiler_version 51 | zlib: 52 | - '1' 53 | -------------------------------------------------------------------------------- /.scripts/logging_utils.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Provide a unified interface for the different logging 4 | # utilities CI providers offer. If unavailable, provide 5 | # a compatible fallback (e.g. bare `echo xxxxxx`). 6 | 7 | function startgroup { 8 | # Start a foldable group of log lines 9 | # Pass a single argument, quoted 10 | case ${CI:-} in 11 | azure ) 12 | echo "##[group]$1";; 13 | travis ) 14 | echo "$1" 15 | echo -en 'travis_fold:start:'"${1// /}"'\r';; 16 | github_actions ) 17 | echo "::group::$1";; 18 | * ) 19 | echo "$1";; 20 | esac 21 | } 2> /dev/null 22 | 23 | function endgroup { 24 | # End a foldable group of log lines 25 | # Pass a single argument, quoted 26 | 27 | case ${CI:-} in 28 | azure ) 29 | echo "##[endgroup]";; 30 | travis ) 31 | echo -en 'travis_fold:end:'"${1// /}"'\r';; 32 | github_actions ) 33 | echo "::endgroup::";; 34 | esac 35 | } 2> /dev/null 36 | -------------------------------------------------------------------------------- /.azure-pipelines/azure-pipelines-osx.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | jobs: 6 | - job: osx 7 | pool: 8 | vmImage: macOS-15 9 | strategy: 10 | matrix: 11 | osx_64_: 12 | CONFIG: osx_64_ 13 | UPLOAD_PACKAGES: 'True' 14 | osx_arm64_: 15 | CONFIG: osx_arm64_ 16 | UPLOAD_PACKAGES: 'True' 17 | timeoutInMinutes: 360 18 | variables: {} 19 | 20 | steps: 21 | # TODO: Fast finish on azure pipelines? 22 | - script: | 23 | export CI=azure 24 | export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) 25 | export remote_url=$(Build.Repository.Uri) 26 | export sha=$(Build.SourceVersion) 27 | export OSX_FORCE_SDK_DOWNLOAD="1" 28 | export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME 29 | export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) 30 | if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then 31 | export IS_PR_BUILD="True" 32 | else 33 | export IS_PR_BUILD="False" 34 | fi 35 | ./.scripts/run_osx_build.sh 36 | displayName: Run OSX build 37 | env: 38 | BINSTAR_TOKEN: $(BINSTAR_TOKEN) 39 | FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) 40 | STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) 41 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | stages: 6 | - stage: Check 7 | jobs: 8 | - job: Skip 9 | pool: 10 | vmImage: 'ubuntu-22.04' 11 | variables: 12 | DECODE_PERCENTS: 'false' 13 | RET: 'true' 14 | steps: 15 | - checkout: self 16 | fetchDepth: '2' 17 | - bash: | 18 | git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "` 19 | echo "##vso[task.setvariable variable=log]$git_log" 20 | displayName: Obtain commit message 21 | - bash: echo "##vso[task.setvariable variable=RET]false" 22 | condition: and(eq(variables['Build.Reason'], 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]'))) 23 | displayName: Skip build? 24 | - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET" 25 | name: result 26 | displayName: Export result 27 | - stage: Build 28 | condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) 29 | dependsOn: Check 30 | jobs: 31 | - template: ./.azure-pipelines/azure-pipelines-linux.yml 32 | - template: ./.azure-pipelines/azure-pipelines-osx.yml -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | BSD-3-Clause license 2 | Copyright (c) 2015-2022, conda-forge contributors 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. Neither the name of the copyright holder nor the names of its 14 | contributors may be used to endorse or promote products derived from 15 | this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR 21 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 24 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 27 | DAMAGE. 28 | -------------------------------------------------------------------------------- /recipe/openmpi_activate.sh: -------------------------------------------------------------------------------- 1 | # rattler-build sets PKG_NAME, not CONDA_BUILD in test env 2 | # ref: https://github.com/prefix-dev/rattler-build/issues/1317 3 | # since this is an activate script, it should run on all shells, 4 | # though only the first `if` really needs to since conda builds are necessarily bash 5 | if [ "${CONDA_BUILD:-}" = "1" ] || [ -n "${PKG_NAME:-}" ]; then 6 | echo "setting openmpi environment variables for conda-build" 7 | if [ "${CONDA_BUILD_CROSS_COMPILATION:-}" = "1" ]; then 8 | # set compilation variables during cross compilation 9 | if [ -z "${OMPI_CC:-}" ] && [ -n "${CC:-}" ]; then 10 | echo "OMPI_CC=${CC}" 11 | export "OMPI_CC=${CC}" 12 | fi 13 | 14 | if [ -z "${OMPI_CXX:-}" ] && [ -n "${CXX:-}" ]; then 15 | echo "OMPI_CXX=${CXX}" 16 | export "OMPI_CXX=${CXX}" 17 | fi 18 | 19 | if [ -z "${OMPI_FC:-}" ] && [ -n "${FC:-}" ]; then 20 | echo "OMPI_FC=${FC}" 21 | export "OMPI_FC=${FC}" 22 | fi 23 | 24 | # require pkg-config? 25 | if [ -z "${OMPI_CFLAGS:-}" ]; then 26 | # pkg-config --cflags ompi 27 | export OMPI_CFLAGS="-I$PREFIX/include" 28 | fi 29 | if [ -z "${OMPI_CXXFLAGS:-}" ]; then 30 | # pkg-config --cflags ompi-cxx 31 | export OMPI_CXXFLAGS="-I$PREFIX/include" 32 | fi 33 | if [ -z "${OMPI_FCFLAGS:-}" ]; then 34 | # pkg-config --cflags ompi-fort 35 | export OMPI_FCFLAGS="-I$PREFIX/include" 36 | fi 37 | if [ -z "${OMPI_LDFLAGS:-}" ]; then 38 | # pkg-config --libs-only-L --libs-only-other ompi 39 | export OMPI_LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib" 40 | case "${target_platform:-}" in 41 | linux-*) 42 | export OMPI_LDFLAGS="${OMPI_LDFLAGS} -Wl,--allow-shlib-undefined" 43 | ;; 44 | esac 45 | fi 46 | export OPAL_PREFIX="$PREFIX" 47 | fi 48 | 49 | # runtime variables 50 | export OMPI_MCA_plm_ssh_agent=false 51 | export OMPI_MCA_pml=ob1 52 | export OMPI_MCA_mpi_yield_when_idle=true 53 | export OMPI_MCA_btl_base_warn_component_unused=false 54 | export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe 55 | fi 56 | -------------------------------------------------------------------------------- /.ci_support/migrations/cuda129.yaml: -------------------------------------------------------------------------------- 1 | migrator_ts: 1738229377 2 | __migrator: 3 | kind: 4 | version 5 | migration_number: 6 | 1 7 | build_number: 8 | 1 9 | paused: false 10 | override_cbc_keys: 11 | - cuda_compiler_stub 12 | check_solvable: false 13 | primary_key: cuda_compiler_version 14 | ordering: 15 | cuda_compiler_version: 16 | - 12.4 17 | - 12.6 18 | - 12.8 19 | - None 20 | - 12.9 21 | # to allow manual opt-in for CUDA 11.8, see 22 | # https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/7472 23 | # must be last due to how cuda_compiler ordering in that migrator works 24 | - 11.8 25 | commit_message: | 26 | Upgrade to CUDA 12.9 27 | 28 | CUDA 12.8 added support for architectures `sm_100`, `sm_101` and `sm_120`, 29 | while CUDA 12.9 further added `sm_103` and `sm_121`. To build for these, 30 | maintainers will need to modify their existing list of specified architectures 31 | (e.g. `CMAKE_CUDA_ARCHITECTURES`, `TORCH_CUDA_ARCH_LIST`, etc.) 32 | for their package. A good balance between broad support and storage 33 | footprint (resp. compilation time) is to add `sm_100` and `sm_120`. 34 | 35 | Since CUDA 12.8, the conda-forge nvcc package now sets `CUDAARCHS` and 36 | `TORCH_CUDA_ARCH_LIST` in its activation script to a string containing all 37 | of the supported real architectures plus the virtual architecture of the 38 | latest. Recipes for packages who use these variables to control their build 39 | but do not want to build for all supported architectures will need to override 40 | these variables in their build script. 41 | 42 | ref: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#new-features 43 | 44 | cuda_compiler_version: # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 45 | - 12.9 # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 46 | 47 | cuda_compiler_version_min: # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 48 | - 12.9 # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 49 | 50 | c_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 51 | - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 52 | 53 | cxx_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 54 | - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 55 | 56 | fortran_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 57 | - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] 58 | -------------------------------------------------------------------------------- /recipe/run_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | MPIEXEC="mpiexec" 5 | 6 | pushd "tests" 7 | 8 | if [[ $PKG_NAME == "openmpi" ]]; then 9 | 10 | command -v ompi_info 11 | ompi_info 12 | 13 | if [[ "$target_platform" == linux-64 || "$target_platform" == linux-aarch64 ]]; then 14 | if [[ -z "$(ompi_info | grep ucc)" ]]; then 15 | echo "OpenMPI configured without UCC support!" 16 | exit 1 17 | fi 18 | if [[ -z "$(ompi_info | grep ucx)" ]]; then 19 | echo "OpenMPI configured without UCX support!" 20 | exit 1 21 | fi 22 | fi 23 | 24 | if [[ -n "$(conda list | grep cuda-version)" ]]; then 25 | echo "Improper CUDA dependency!" 26 | exit 1 27 | fi 28 | 29 | if [[ "$target_platform" == linux-* ]]; then 30 | if [[ -z "$(ompi_info | grep 'with-cuda')" ]]; then 31 | echo "OpenMPI configured without CUDA support!" 32 | exit 1 33 | fi 34 | # check for at least one cuda DSO 35 | # because ompi_info can report cuda being enabled when it isn't 36 | find "${PREFIX}/lib/openmpi" -name "*cuda*.so" 37 | test -f "${PREFIX}/lib/openmpi/mca_accelerator_cuda.so" 38 | 39 | # make sure libmpi doesn't link cuda 40 | # this doesn't actually check if cuda will be loaded, 41 | # only a direct link in libmpi. 42 | # But that's most likely if this gets mixed up again. 43 | if [[ $(patchelf --print-needed $CONDA_PREFIX/lib/libmpi.so | grep -cE 'libcuda.*\.so') -gt 0 ]]; then 44 | echo "improper dependency on CUDA shared libraries" 45 | patchelf --print-needed $CONDA_PREFIX/lib/libmpi.so 46 | fi 47 | fi 48 | 49 | command -v mpiexec 50 | $MPIEXEC --help 51 | $MPIEXEC -n 4 ./helloworld.sh 52 | 53 | test -f $PREFIX/include/mpi.mod 54 | 55 | export MPIEXEC_TIMEOUT=1 56 | 57 | if $MPIEXEC -n 2 sleep 5; then 58 | echo "should have timed out" 59 | exit 1 60 | fi 61 | fi 62 | 63 | if [[ $PKG_NAME == "openmpi-mpicc" ]]; then 64 | command -v mpicc 65 | mpicc -show 66 | 67 | env | grep OMPI 68 | 69 | test -z "${OMPI_CC:-}" 70 | test -z "${OMPI_CFLAGS:-}" 71 | test -z "${OMPI_CPPFLAGS:-}" 72 | test -z "${OMPI_LDFLAGS:-}" 73 | 74 | mpicc helloworld.c -o helloworld_c 75 | $MPIEXEC -n 4 ./helloworld_c 76 | fi 77 | 78 | if [[ $PKG_NAME == "openmpi-mpicxx" ]]; then 79 | command -v mpicxx 80 | mpicxx -show 81 | 82 | test -z "${OMPI_CXX:-}" 83 | test -z "${OMPI_CXXFLAGS:-}" 84 | 85 | mpicxx helloworld.cxx -o helloworld_cxx 86 | $MPIEXEC -n 4 ./helloworld_cxx 87 | fi 88 | 89 | if [[ $PKG_NAME == "openmpi-mpifort" ]]; then 90 | command -v mpifort 91 | mpifort -show 92 | 93 | test -z "${OMPI_FC:-}" 94 | test -z "${OMPI_FCFLAGS:-}" 95 | 96 | mpifort helloworld.f -o helloworld1_f 97 | $MPIEXEC -n 4 ./helloworld1_f 98 | 99 | mpifort helloworld.f90 -o helloworld1_f90 100 | $MPIEXEC -n 4 ./helloworld1_f90 101 | 102 | command -v mpif77 103 | mpif77 -show 104 | 105 | mpif77 helloworld.f -o helloworld2_f 106 | $MPIEXEC -n 4 ./helloworld2_f 107 | 108 | command -v mpif90 109 | mpif90 -show 110 | 111 | mpif90 helloworld.f90 -o helloworld2_f90 112 | $MPIEXEC -n 4 ./helloworld2_f90 113 | 114 | fi 115 | 116 | popd 117 | -------------------------------------------------------------------------------- /.azure-pipelines/azure-pipelines-linux.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | jobs: 6 | - job: linux 7 | pool: 8 | vmImage: ubuntu-latest 9 | strategy: 10 | matrix: 11 | linux_64_cuda_compiler_version12.9mpi_typeconda: 12 | CONFIG: linux_64_cuda_compiler_version12.9mpi_typeconda 13 | UPLOAD_PACKAGES: 'True' 14 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 15 | linux_64_cuda_compiler_version12.9mpi_typeexternal: 16 | CONFIG: linux_64_cuda_compiler_version12.9mpi_typeexternal 17 | UPLOAD_PACKAGES: 'True' 18 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 19 | linux_aarch64_cuda_compiler_version12.9mpi_typeconda: 20 | CONFIG: linux_aarch64_cuda_compiler_version12.9mpi_typeconda 21 | UPLOAD_PACKAGES: 'True' 22 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 23 | linux_aarch64_cuda_compiler_version12.9mpi_typeexternal: 24 | CONFIG: linux_aarch64_cuda_compiler_version12.9mpi_typeexternal 25 | UPLOAD_PACKAGES: 'True' 26 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 27 | linux_ppc64le_mpi_typeconda: 28 | CONFIG: linux_ppc64le_mpi_typeconda 29 | UPLOAD_PACKAGES: 'True' 30 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 31 | linux_ppc64le_mpi_typeexternal: 32 | CONFIG: linux_ppc64le_mpi_typeexternal 33 | UPLOAD_PACKAGES: 'True' 34 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 35 | timeoutInMinutes: 360 36 | variables: {} 37 | 38 | steps: 39 | - script: | 40 | SWAPFILE=/swapfile 41 | # If there is already a swapfile, disable it and remove it 42 | if swapon --show | grep -q $SWAPFILE; then 43 | echo "Disabling existing swapfile..." 44 | sudo swapoff $SWAPFILE || true 45 | fi 46 | [ -f "$SWAPFILE" ] && sudo rm -f $SWAPFILE 47 | sudo fallocate -l 10GiB $SWAPFILE 48 | sudo chmod 600 $SWAPFILE 49 | sudo mkswap $SWAPFILE 50 | sudo swapon $SWAPFILE 51 | displayName: Create swap file 52 | # configure qemu binfmt-misc running. This allows us to run docker containers 53 | # embedded qemu-static 54 | - script: | 55 | docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes 56 | ls /proc/sys/fs/binfmt_misc/ 57 | condition: not(startsWith(variables['CONFIG'], 'linux_64')) 58 | displayName: Configure binfmt_misc 59 | 60 | - script: | 61 | export CI=azure 62 | export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) 63 | export remote_url=$(Build.Repository.Uri) 64 | export sha=$(Build.SourceVersion) 65 | export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME 66 | export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) 67 | if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then 68 | export IS_PR_BUILD="True" 69 | else 70 | export IS_PR_BUILD="False" 71 | fi 72 | .scripts/run_docker_build.sh 73 | displayName: Run docker build 74 | env: 75 | BINSTAR_TOKEN: $(BINSTAR_TOKEN) 76 | FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) 77 | STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) 78 | -------------------------------------------------------------------------------- /.scripts/build_steps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here 4 | # will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent 5 | # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also 6 | # benefit from the improvement. 7 | 8 | # -*- mode: jinja-shell -*- 9 | 10 | set -xeuo pipefail 11 | export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" 12 | source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh 13 | 14 | 15 | ( endgroup "Start Docker" ) 2> /dev/null 16 | 17 | ( startgroup "Configuring conda" ) 2> /dev/null 18 | 19 | export PYTHONUNBUFFERED=1 20 | export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" 21 | export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" 22 | export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" 23 | 24 | cat >~/.condarc < /opt/conda/conda-meta/history 36 | micromamba install --root-prefix ~/.conda --prefix /opt/conda \ 37 | --yes --override-channels --channel conda-forge --strict-channel-priority \ 38 | pip rattler-build conda-forge-ci-setup=4 "conda-build>=24.1" 39 | export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 40 | 41 | # set up the condarc 42 | setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 43 | 44 | source run_conda_forge_build_setup 45 | 46 | 47 | 48 | # make the build number clobber 49 | make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 50 | 51 | if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then 52 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --test skip" 53 | fi 54 | 55 | 56 | ( endgroup "Configuring conda" ) 2> /dev/null 57 | 58 | if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then 59 | cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" 60 | fi 61 | 62 | if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then 63 | echo "rattler-build currently doesn't support debug mode" 64 | else 65 | 66 | rattler-build build --recipe "${RECIPE_ROOT}" \ 67 | -m "${CI_SUPPORT}/${CONFIG}.yaml" \ 68 | ${EXTRA_CB_OPTIONS:-} \ 69 | --target-platform "${HOST_PLATFORM}" \ 70 | --extra-meta flow_run_id="${flow_run_id:-}" \ 71 | --extra-meta remote_url="${remote_url:-}" \ 72 | --extra-meta sha="${sha:-}" 73 | ( startgroup "Inspecting artifacts" ) 2> /dev/null 74 | 75 | # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 76 | command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" 77 | 78 | ( endgroup "Inspecting artifacts" ) 2> /dev/null 79 | ( startgroup "Validating outputs" ) 2> /dev/null 80 | 81 | validate_recipe_outputs "${FEEDSTOCK_NAME}" 82 | 83 | ( endgroup "Validating outputs" ) 2> /dev/null 84 | 85 | ( startgroup "Uploading packages" ) 2> /dev/null 86 | 87 | if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then 88 | upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 89 | fi 90 | 91 | ( endgroup "Uploading packages" ) 2> /dev/null 92 | fi 93 | 94 | ( startgroup "Final checks" ) 2> /dev/null 95 | 96 | touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" 97 | -------------------------------------------------------------------------------- /.scripts/run_osx_build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # -*- mode: jinja-shell -*- 4 | 5 | source .scripts/logging_utils.sh 6 | 7 | set -xe 8 | 9 | MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" 10 | MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash 11 | export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" 12 | 13 | ( startgroup "Provisioning base env with micromamba" ) 2> /dev/null 14 | MICROMAMBA_VERSION="1.5.10-0" 15 | if [[ "$(uname -m)" == "arm64" ]]; then 16 | osx_arch="osx-arm64" 17 | else 18 | osx_arch="osx-64" 19 | fi 20 | MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" 21 | MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" 22 | echo "Downloading micromamba ${MICROMAMBA_VERSION}" 23 | micromamba_exe="$(mktemp -d)/micromamba" 24 | curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" 25 | chmod +x "${micromamba_exe}" 26 | echo "Creating environment" 27 | "${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ 28 | --channel conda-forge \ 29 | pip rattler-build conda-forge-ci-setup=4 "conda-build>=24.1" 30 | echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" 31 | mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" 32 | echo "Cleaning up micromamba" 33 | rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true 34 | ( endgroup "Provisioning base env with micromamba" ) 2> /dev/null 35 | 36 | ( startgroup "Configuring conda" ) 2> /dev/null 37 | echo "Activating environment" 38 | source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" 39 | conda activate base 40 | export CONDA_SOLVER="libmamba" 41 | export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 42 | 43 | 44 | 45 | 46 | 47 | echo -e "\n\nSetting up the condarc and mangling the compiler." 48 | setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml 49 | 50 | if [[ "${CI:-}" != "" ]]; then 51 | mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml 52 | fi 53 | 54 | if [[ "${CI:-}" != "" ]]; then 55 | echo -e "\n\nMangling homebrew in the CI to avoid conflicts." 56 | /usr/bin/sudo mangle_homebrew 57 | /usr/bin/sudo -k 58 | else 59 | echo -e "\n\nNot mangling homebrew as we are not running in CI" 60 | fi 61 | 62 | if [[ "${sha:-}" == "" ]]; then 63 | sha=$(git rev-parse HEAD) 64 | fi 65 | 66 | echo -e "\n\nRunning the build setup script." 67 | source run_conda_forge_build_setup 68 | 69 | 70 | 71 | ( endgroup "Configuring conda" ) 2> /dev/null 72 | 73 | if [[ -f LICENSE.txt ]]; then 74 | cp LICENSE.txt "recipe/recipe-scripts-license.txt" 75 | fi 76 | 77 | if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then 78 | echo "rattler-build does not currently support debug mode" 79 | else 80 | 81 | if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then 82 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --test skip" 83 | fi 84 | 85 | rattler-build build --recipe ./recipe \ 86 | -m ./.ci_support/${CONFIG}.yaml \ 87 | ${EXTRA_CB_OPTIONS:-} \ 88 | --target-platform "${HOST_PLATFORM}" \ 89 | --extra-meta flow_run_id="$flow_run_id" \ 90 | --extra-meta remote_url="$remote_url" \ 91 | --extra-meta sha="$sha" 92 | 93 | ( startgroup "Inspecting artifacts" ) 2> /dev/null 94 | 95 | # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 96 | command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir ./recipe -m ./.ci_support/${CONFIG}.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" 97 | 98 | ( endgroup "Inspecting artifacts" ) 2> /dev/null 99 | ( startgroup "Validating outputs" ) 2> /dev/null 100 | 101 | validate_recipe_outputs "${FEEDSTOCK_NAME}" 102 | 103 | ( endgroup "Validating outputs" ) 2> /dev/null 104 | 105 | ( startgroup "Uploading packages" ) 2> /dev/null 106 | 107 | if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then 108 | upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml 109 | fi 110 | 111 | ( endgroup "Uploading packages" ) 2> /dev/null 112 | fi 113 | -------------------------------------------------------------------------------- /.scripts/run_docker_build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here 4 | # will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent 5 | # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also 6 | # benefit from the improvement. 7 | 8 | source .scripts/logging_utils.sh 9 | 10 | ( startgroup "Configure Docker" ) 2> /dev/null 11 | 12 | set -xeo pipefail 13 | 14 | THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" 15 | PROVIDER_DIR="$(basename "$THISDIR")" 16 | 17 | FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )" 18 | RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" 19 | 20 | if [ -z ${FEEDSTOCK_NAME} ]; then 21 | export FEEDSTOCK_NAME=$(basename ${FEEDSTOCK_ROOT}) 22 | fi 23 | 24 | if [[ "${sha:-}" == "" ]]; then 25 | pushd "${FEEDSTOCK_ROOT}" 26 | sha=$(git rev-parse HEAD) 27 | popd 28 | fi 29 | 30 | docker info 31 | 32 | # In order for the conda-build process in the container to write to the mounted 33 | # volumes, we need to run with the same id as the host machine, which is 34 | # normally the owner of the mounted volumes, or at least has write permission 35 | export HOST_USER_ID=$(id -u) 36 | # Check if docker-machine is being used (normally on OSX) and get the uid from 37 | # the VM 38 | if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then 39 | export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) 40 | fi 41 | 42 | ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts" 43 | 44 | if [ -z "$CONFIG" ]; then 45 | set +x 46 | FILES=`ls .ci_support/linux_*` 47 | CONFIGS="" 48 | for file in $FILES; do 49 | CONFIGS="${CONFIGS}'${file:12:-5}' or "; 50 | done 51 | echo "Need to set CONFIG env variable. Value can be one of ${CONFIGS:0:-4}" 52 | exit 1 53 | fi 54 | 55 | if [ -z "${DOCKER_IMAGE}" ]; then 56 | SHYAML_INSTALLED="$(shyaml -h || echo NO)" 57 | if [ "${SHYAML_INSTALLED}" == "NO" ]; then 58 | echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Trying to parse with coreutils" 59 | DOCKER_IMAGE=$(cat .ci_support/${CONFIG}.yaml | grep '^docker_image:$' -A 1 | tail -n 1 | cut -b 3-) 60 | if [ "${DOCKER_IMAGE}" = "" ]; then 61 | echo "No docker_image entry found in ${CONFIG}. Falling back to quay.io/condaforge/linux-anvil-comp7" 62 | DOCKER_IMAGE="quay.io/condaforge/linux-anvil-comp7" 63 | fi 64 | else 65 | DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 quay.io/condaforge/linux-anvil-comp7 )" 66 | fi 67 | fi 68 | 69 | mkdir -p "$ARTIFACTS" 70 | DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" 71 | rm -f "$DONE_CANARY" 72 | 73 | # Allow people to specify extra default arguments to `docker run` (e.g. `--rm`) 74 | DOCKER_RUN_ARGS="${CONDA_FORGE_DOCKER_RUN_ARGS}" 75 | if [ -z "${CI}" ]; then 76 | DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" 77 | fi 78 | 79 | ( endgroup "Configure Docker" ) 2> /dev/null 80 | 81 | ( startgroup "Start Docker" ) 2> /dev/null 82 | 83 | export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" 84 | export IS_PR_BUILD="${IS_PR_BUILD:-False}" 85 | docker pull "${DOCKER_IMAGE}" 86 | docker run ${DOCKER_RUN_ARGS} \ 87 | -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z,delegated \ 88 | -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z,delegated \ 89 | -e CONFIG \ 90 | -e HOST_USER_ID \ 91 | -e UPLOAD_PACKAGES \ 92 | -e IS_PR_BUILD \ 93 | -e GIT_BRANCH \ 94 | -e UPLOAD_ON_BRANCH \ 95 | -e CI \ 96 | -e FEEDSTOCK_NAME \ 97 | -e CPU_COUNT \ 98 | -e BUILD_WITH_CONDA_DEBUG \ 99 | -e BUILD_OUTPUT_ID \ 100 | -e flow_run_id \ 101 | -e remote_url \ 102 | -e sha \ 103 | -e BINSTAR_TOKEN \ 104 | -e FEEDSTOCK_TOKEN \ 105 | -e STAGING_BINSTAR_TOKEN \ 106 | "${DOCKER_IMAGE}" \ 107 | bash \ 108 | "/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh" 109 | 110 | # verify that the end of the script was reached 111 | test -f "$DONE_CANARY" 112 | 113 | # This closes the last group opened in `build_steps.sh` 114 | ( endgroup "Final checks" ) 2> /dev/null 115 | -------------------------------------------------------------------------------- /recipe/cross-gfortran.osx-arm64.sh: -------------------------------------------------------------------------------- 1 | export ompi_cv_fortran_abstract=yes 2 | export ompi_cv_fortran_alignment_CHARACTER=1 3 | export ompi_cv_fortran_alignment_COMPLEX=4 4 | export ompi_cv_fortran_alignment_COMPLEXp16=8 5 | export ompi_cv_fortran_alignment_COMPLEXp8=4 6 | export ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 7 | export ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 8 | export ompi_cv_fortran_alignment_INTEGER=4 9 | export ompi_cv_fortran_alignment_INTEGERp1=1 10 | export ompi_cv_fortran_alignment_INTEGERp2=2 11 | export ompi_cv_fortran_alignment_INTEGERp4=4 12 | export ompi_cv_fortran_alignment_INTEGERp8=8 13 | export ompi_cv_fortran_alignment_LOGICAL=4 14 | export ompi_cv_fortran_alignment_LOGICALp1=1 15 | export ompi_cv_fortran_alignment_LOGICALp2=2 16 | export ompi_cv_fortran_alignment_LOGICALp4=4 17 | export ompi_cv_fortran_alignment_LOGICALp8=8 18 | export ompi_cv_fortran_alignment_REAL=4 19 | export ompi_cv_fortran_alignment_REALp4=4 20 | export ompi_cv_fortran_alignment_REALp8=8 21 | export ompi_cv_fortran_alignment_type_test_mpi_handle_=4 22 | export ompi_cv_fortran_common_alignment=16 23 | export ompi_cv_fortran_asynchronous=yes 24 | export ompi_cv_fortran_c_funloc=yes 25 | export ompi_cv_fortran_elemental=yes 26 | export ompi_cv_fortran_external_symbol='single underscore' 27 | export ompi_cv_fortran_f08_assumed_rank=yes 28 | export ompi_cv_fortran_handle_max=2147483647 29 | export ompi_cv_fortran_have_CHARACTER=yes 30 | export ompi_cv_fortran_have_COMPLEX=yes 31 | export ompi_cv_fortran_have_COMPLEXp16=yes 32 | export ompi_cv_fortran_have_COMPLEXp32=yes 33 | export ompi_cv_fortran_have_COMPLEXp4=no 34 | export ompi_cv_fortran_have_COMPLEXp8=yes 35 | export ompi_cv_fortran_have_DOUBLE_COMPLEX=yes 36 | export ompi_cv_fortran_have_DOUBLE_PRECISION=yes 37 | export ompi_cv_fortran_have_INTEGER=yes 38 | export ompi_cv_fortran_have_INTEGERp16=yes 39 | export ompi_cv_fortran_have_INTEGERp1=yes 40 | export ompi_cv_fortran_have_INTEGERp2=yes 41 | export ompi_cv_fortran_have_INTEGERp4=yes 42 | export ompi_cv_fortran_have_INTEGERp8=yes 43 | export ompi_cv_fortran_have_LOGICAL=yes 44 | export ompi_cv_fortran_have_LOGICALp1=yes 45 | export ompi_cv_fortran_have_LOGICALp2=yes 46 | export ompi_cv_fortran_have_LOGICALp4=yes 47 | export ompi_cv_fortran_have_LOGICALp8=yes 48 | export ompi_cv_fortran_have_REAL=yes 49 | export ompi_cv_fortran_have_REALp16=yes 50 | export ompi_cv_fortran_have_REALp2=no 51 | export ompi_cv_fortran_have_REALp4=yes 52 | export ompi_cv_fortran_have_REALp8=yes 53 | export ompi_cv_fortran_have_bind_c_sub=yes 54 | export ompi_cv_fortran_have_bind_c_type=yes 55 | export ompi_cv_fortran_have_bind_c_type_name=yes 56 | export ompi_cv_fortran_have_iso_c_binding=yes 57 | export ompi_cv_fortran_have_iso_fortran_env=yes 58 | export ompi_cv_fortran_have_iso_fortran_env_real16=no 59 | export ompi_cv_fortran_have_storage_size=yes 60 | export ompi_cv_fortran_ignore_tkr_data='1:type(*), dimension(*):!GCC$ ATTRIBUTES NO_ARG_CHECK ::' 61 | export ompi_cv_fortran_interface=yes 62 | export ompi_cv_fortran_kind_value_0=0 63 | export ompi_cv_fortran_kind_value_C_DOUBLE=8 64 | export ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 65 | export ompi_cv_fortran_kind_value_C_FLOAT=4 66 | export ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 67 | export ompi_cv_fortran_kind_value_C_INT16_T=2 68 | export ompi_cv_fortran_kind_value_C_INT32_T=4 69 | export ompi_cv_fortran_kind_value_C_INT64_T=8 70 | export ompi_cv_fortran_kind_value_C_INT=4 71 | export ompi_cv_fortran_kind_value_C_LONG_LONG=8 72 | export ompi_cv_fortran_kind_value_C_SHORT=2 73 | export ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 74 | export ompi_cv_fortran_logical_array_correct=yes 75 | export ompi_cv_fortran_max_array_rank=15 76 | export ompi_cv_fortran_module_include_flag=-I 77 | export ompi_cv_fortran_optional=yes 78 | export ompi_cv_fortran_private=yes 79 | export ompi_cv_fortran_procedure=yes 80 | export ompi_cv_fortran_sizeof_CHARACTER=1 81 | export ompi_cv_fortran_sizeof_COMPLEX=8 82 | export ompi_cv_fortran_sizeof_COMPLEXp16=16 83 | export ompi_cv_fortran_sizeof_COMPLEXp32=32 84 | export ompi_cv_fortran_sizeof_COMPLEXp8=8 85 | export ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 86 | export ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 87 | export ompi_cv_fortran_sizeof_INTEGER=4 88 | export ompi_cv_fortran_sizeof_INTEGERp16=16 89 | export ompi_cv_fortran_sizeof_INTEGERp1=1 90 | export ompi_cv_fortran_sizeof_INTEGERp2=2 91 | export ompi_cv_fortran_sizeof_INTEGERp4=4 92 | export ompi_cv_fortran_sizeof_INTEGERp8=8 93 | export ompi_cv_fortran_sizeof_LOGICAL=4 94 | export ompi_cv_fortran_sizeof_LOGICALp1=1 95 | export ompi_cv_fortran_sizeof_LOGICALp2=2 96 | export ompi_cv_fortran_sizeof_LOGICALp4=4 97 | export ompi_cv_fortran_sizeof_LOGICALp8=8 98 | export ompi_cv_fortran_sizeof_REAL=4 99 | export ompi_cv_fortran_sizeof_REALp16=16 100 | export ompi_cv_fortran_sizeof_REALp4=4 101 | export ompi_cv_fortran_sizeof_REALp8=8 102 | export ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 103 | export ompi_cv_fortran_true_value=1 104 | export ompi_cv_fortran_use_only=yes 105 | export ompi_cv_real16_c_equiv='skipped (no REAL*16)' 106 | -------------------------------------------------------------------------------- /recipe/cross-gfortran.linux-aarch64.sh: -------------------------------------------------------------------------------- 1 | export ompi_cv_fortran_abstract=yes 2 | export ompi_cv_fortran_alignment_CHARACTER=1 3 | export ompi_cv_fortran_alignment_COMPLEX=4 4 | export ompi_cv_fortran_alignment_COMPLEXp16=8 5 | export ompi_cv_fortran_alignment_COMPLEXp32=16 6 | export ompi_cv_fortran_alignment_COMPLEXp8=4 7 | export ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 8 | export ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 9 | export ompi_cv_fortran_alignment_INTEGER=4 10 | export ompi_cv_fortran_alignment_INTEGERp1=1 11 | export ompi_cv_fortran_alignment_INTEGERp2=2 12 | export ompi_cv_fortran_alignment_INTEGERp4=4 13 | export ompi_cv_fortran_alignment_INTEGERp8=8 14 | export ompi_cv_fortran_alignment_LOGICAL=4 15 | export ompi_cv_fortran_alignment_LOGICALp1=1 16 | export ompi_cv_fortran_alignment_LOGICALp2=2 17 | export ompi_cv_fortran_alignment_LOGICALp4=4 18 | export ompi_cv_fortran_alignment_LOGICALp8=8 19 | export ompi_cv_fortran_alignment_REAL=4 20 | export ompi_cv_fortran_alignment_REALp16=16 21 | export ompi_cv_fortran_alignment_REALp4=4 22 | export ompi_cv_fortran_alignment_REALp8=8 23 | export ompi_cv_fortran_alignment_type_test_mpi_handle_=8 24 | export ompi_cv_fortran_common_alignment=16 25 | export ompi_cv_fortran_asynchronous=yes 26 | export ompi_cv_fortran_c_funloc=yes 27 | export ompi_cv_fortran_elemental=yes 28 | export ompi_cv_fortran_external_symbol='single underscore' 29 | export ompi_cv_fortran_f08_assumed_rank=yes 30 | export ompi_cv_fortran_handle_max=2147483647 31 | export ompi_cv_fortran_have_CHARACTER=yes 32 | export ompi_cv_fortran_have_COMPLEX=yes 33 | export ompi_cv_fortran_have_COMPLEXp16=yes 34 | export ompi_cv_fortran_have_COMPLEXp32=yes 35 | export ompi_cv_fortran_have_COMPLEXp4=no 36 | export ompi_cv_fortran_have_COMPLEXp8=yes 37 | export ompi_cv_fortran_have_DOUBLE_COMPLEX=yes 38 | export ompi_cv_fortran_have_DOUBLE_PRECISION=yes 39 | export ompi_cv_fortran_have_INTEGER=yes 40 | export ompi_cv_fortran_have_INTEGERp16=yes 41 | export ompi_cv_fortran_have_INTEGERp1=yes 42 | export ompi_cv_fortran_have_INTEGERp2=yes 43 | export ompi_cv_fortran_have_INTEGERp4=yes 44 | export ompi_cv_fortran_have_INTEGERp8=yes 45 | export ompi_cv_fortran_have_LOGICAL=yes 46 | export ompi_cv_fortran_have_LOGICALp1=yes 47 | export ompi_cv_fortran_have_LOGICALp2=yes 48 | export ompi_cv_fortran_have_LOGICALp4=yes 49 | export ompi_cv_fortran_have_LOGICALp8=yes 50 | export ompi_cv_fortran_have_REAL=yes 51 | export ompi_cv_fortran_have_REALp16=yes 52 | export ompi_cv_fortran_have_REALp2=no 53 | export ompi_cv_fortran_have_REALp4=yes 54 | export ompi_cv_fortran_have_REALp8=yes 55 | export ompi_cv_fortran_have_bind_c_sub=yes 56 | export ompi_cv_fortran_have_bind_c_type=yes 57 | export ompi_cv_fortran_have_bind_c_type_name=yes 58 | export ompi_cv_fortran_have_iso_c_binding=yes 59 | export ompi_cv_fortran_have_iso_fortran_env=yes 60 | export ompi_cv_fortran_have_iso_fortran_env_real16=no 61 | export ompi_cv_fortran_have_storage_size=yes 62 | export ompi_cv_fortran_ignore_tkr_data='1:type(*), dimension(*):!GCC$ ATTRIBUTES NO_ARG_CHECK ::' 63 | export ompi_cv_fortran_interface=yes 64 | export ompi_cv_fortran_kind_value_0=0 65 | export ompi_cv_fortran_kind_value_C_DOUBLE=8 66 | export ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 67 | export ompi_cv_fortran_kind_value_C_FLOAT=4 68 | export ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 69 | export ompi_cv_fortran_kind_value_C_INT16_T=2 70 | export ompi_cv_fortran_kind_value_C_INT32_T=4 71 | export ompi_cv_fortran_kind_value_C_INT64_T=8 72 | export ompi_cv_fortran_kind_value_C_INT=4 73 | export ompi_cv_fortran_kind_value_C_LONG_DOUBLE=16 74 | export ompi_cv_fortran_kind_value_C_LONG_DOUBLE_COMPLEX=16 75 | export ompi_cv_fortran_kind_value_C_LONG_LONG=8 76 | export ompi_cv_fortran_kind_value_C_SHORT=2 77 | export ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 78 | export ompi_cv_fortran_logical_array_correct=yes 79 | export ompi_cv_fortran_max_array_rank=15 80 | export ompi_cv_fortran_module_include_flag=-I 81 | export ompi_cv_fortran_optional=yes 82 | export ompi_cv_fortran_private=yes 83 | export ompi_cv_fortran_procedure=yes 84 | export ompi_cv_fortran_sizeof_CHARACTER=1 85 | export ompi_cv_fortran_sizeof_COMPLEX=8 86 | export ompi_cv_fortran_sizeof_COMPLEXp16=16 87 | export ompi_cv_fortran_sizeof_COMPLEXp32=32 88 | export ompi_cv_fortran_sizeof_COMPLEXp8=8 89 | export ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 90 | export ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 91 | export ompi_cv_fortran_sizeof_INTEGER=4 92 | export ompi_cv_fortran_sizeof_INTEGERp16=16 93 | export ompi_cv_fortran_sizeof_INTEGERp1=1 94 | export ompi_cv_fortran_sizeof_INTEGERp2=2 95 | export ompi_cv_fortran_sizeof_INTEGERp4=4 96 | export ompi_cv_fortran_sizeof_INTEGERp8=8 97 | export ompi_cv_fortran_sizeof_LOGICAL=4 98 | export ompi_cv_fortran_sizeof_LOGICALp1=1 99 | export ompi_cv_fortran_sizeof_LOGICALp2=2 100 | export ompi_cv_fortran_sizeof_LOGICALp4=4 101 | export ompi_cv_fortran_sizeof_LOGICALp8=8 102 | export ompi_cv_fortran_sizeof_REAL=4 103 | export ompi_cv_fortran_sizeof_REALp16=16 104 | export ompi_cv_fortran_sizeof_REALp4=4 105 | export ompi_cv_fortran_sizeof_REALp8=8 106 | export ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 107 | export ompi_cv_fortran_true_value=1 108 | export ompi_cv_fortran_use_only=yes 109 | export ompi_cv_real16_c_equiv=yes 110 | -------------------------------------------------------------------------------- /recipe/cross-gfortran.linux-ppc64le.sh: -------------------------------------------------------------------------------- 1 | export ompi_cv_fortran_abstract=yes 2 | export ompi_cv_fortran_alignment_CHARACTER=1 3 | export ompi_cv_fortran_alignment_COMPLEX=4 4 | export ompi_cv_fortran_alignment_COMPLEXp16=8 5 | export ompi_cv_fortran_alignment_COMPLEXp32=16 6 | export ompi_cv_fortran_alignment_COMPLEXp8=4 7 | export ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 8 | export ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 9 | export ompi_cv_fortran_alignment_INTEGER=4 10 | export ompi_cv_fortran_alignment_INTEGERp1=1 11 | export ompi_cv_fortran_alignment_INTEGERp2=2 12 | export ompi_cv_fortran_alignment_INTEGERp4=4 13 | export ompi_cv_fortran_alignment_INTEGERp8=8 14 | export ompi_cv_fortran_alignment_LOGICAL=4 15 | export ompi_cv_fortran_alignment_LOGICALp1=1 16 | export ompi_cv_fortran_alignment_LOGICALp2=2 17 | export ompi_cv_fortran_alignment_LOGICALp4=4 18 | export ompi_cv_fortran_alignment_LOGICALp8=8 19 | export ompi_cv_fortran_alignment_REAL=4 20 | export ompi_cv_fortran_alignment_REALp16=16 21 | export ompi_cv_fortran_alignment_REALp4=4 22 | export ompi_cv_fortran_alignment_REALp8=8 23 | export ompi_cv_fortran_alignment_type_test_mpi_handle_=4 24 | export ompi_cv_fortran_common_alignment=16 25 | export ompi_cv_fortran_asynchronous=yes 26 | export ompi_cv_fortran_c_funloc=yes 27 | export ompi_cv_fortran_elemental=yes 28 | export ompi_cv_fortran_external_symbol='single underscore' 29 | export ompi_cv_fortran_f08_assumed_rank=yes 30 | export ompi_cv_fortran_handle_max=2147483647 31 | export ompi_cv_fortran_have_CHARACTER=yes 32 | export ompi_cv_fortran_have_COMPLEX=yes 33 | export ompi_cv_fortran_have_COMPLEXp16=yes 34 | export ompi_cv_fortran_have_COMPLEXp32=yes 35 | export ompi_cv_fortran_have_COMPLEXp4=no 36 | export ompi_cv_fortran_have_COMPLEXp8=yes 37 | export ompi_cv_fortran_have_DOUBLE_COMPLEX=yes 38 | export ompi_cv_fortran_have_DOUBLE_PRECISION=yes 39 | export ompi_cv_fortran_have_INTEGER=yes 40 | export ompi_cv_fortran_have_INTEGERp16=yes 41 | export ompi_cv_fortran_have_INTEGERp1=yes 42 | export ompi_cv_fortran_have_INTEGERp2=yes 43 | export ompi_cv_fortran_have_INTEGERp4=yes 44 | export ompi_cv_fortran_have_INTEGERp8=yes 45 | export ompi_cv_fortran_have_LOGICAL=yes 46 | export ompi_cv_fortran_have_LOGICALp1=yes 47 | export ompi_cv_fortran_have_LOGICALp2=yes 48 | export ompi_cv_fortran_have_LOGICALp4=yes 49 | export ompi_cv_fortran_have_LOGICALp8=yes 50 | export ompi_cv_fortran_have_REAL=yes 51 | export ompi_cv_fortran_have_REALp16=yes 52 | export ompi_cv_fortran_have_REALp2=no 53 | export ompi_cv_fortran_have_REALp4=yes 54 | export ompi_cv_fortran_have_REALp8=yes 55 | export ompi_cv_fortran_have_bind_c_sub=yes 56 | export ompi_cv_fortran_have_bind_c_type=yes 57 | export ompi_cv_fortran_have_bind_c_type_name=yes 58 | export ompi_cv_fortran_have_iso_c_binding=yes 59 | export ompi_cv_fortran_have_iso_fortran_env=yes 60 | export ompi_cv_fortran_have_iso_fortran_env_real16=no 61 | export ompi_cv_fortran_have_storage_size=yes 62 | export ompi_cv_fortran_ignore_tkr_data='1:type(*), dimension(*):!GCC$ ATTRIBUTES NO_ARG_CHECK ::' 63 | export ompi_cv_fortran_interface=yes 64 | export ompi_cv_fortran_kind_value_0=0 65 | export ompi_cv_fortran_kind_value_C_DOUBLE=8 66 | export ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 67 | export ompi_cv_fortran_kind_value_C_FLOAT=4 68 | export ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 69 | export ompi_cv_fortran_kind_value_C_INT16_T=2 70 | export ompi_cv_fortran_kind_value_C_INT32_T=4 71 | export ompi_cv_fortran_kind_value_C_INT64_T=8 72 | export ompi_cv_fortran_kind_value_C_INT=4 73 | export ompi_cv_fortran_kind_value_C_LONG_DOUBLE=16 74 | export ompi_cv_fortran_kind_value_C_LONG_DOUBLE_COMPLEX=16 75 | export ompi_cv_fortran_kind_value_C_LONG_LONG=8 76 | export ompi_cv_fortran_kind_value_C_SHORT=2 77 | export ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 78 | export ompi_cv_fortran_logical_array_correct=yes 79 | export ompi_cv_fortran_max_array_rank=15 80 | export ompi_cv_fortran_module_include_flag=-I 81 | export ompi_cv_fortran_optional=yes 82 | export ompi_cv_fortran_private=yes 83 | export ompi_cv_fortran_procedure=yes 84 | export ompi_cv_fortran_sizeof_CHARACTER=1 85 | export ompi_cv_fortran_sizeof_COMPLEX=8 86 | export ompi_cv_fortran_sizeof_COMPLEXp16=16 87 | export ompi_cv_fortran_sizeof_COMPLEXp32=32 88 | export ompi_cv_fortran_sizeof_COMPLEXp8=8 89 | export ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 90 | export ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 91 | export ompi_cv_fortran_sizeof_INTEGER=4 92 | export ompi_cv_fortran_sizeof_INTEGERp16=16 93 | export ompi_cv_fortran_sizeof_INTEGERp1=1 94 | export ompi_cv_fortran_sizeof_INTEGERp2=2 95 | export ompi_cv_fortran_sizeof_INTEGERp4=4 96 | export ompi_cv_fortran_sizeof_INTEGERp8=8 97 | export ompi_cv_fortran_sizeof_LOGICAL=4 98 | export ompi_cv_fortran_sizeof_LOGICALp1=1 99 | export ompi_cv_fortran_sizeof_LOGICALp2=2 100 | export ompi_cv_fortran_sizeof_LOGICALp4=4 101 | export ompi_cv_fortran_sizeof_LOGICALp8=8 102 | export ompi_cv_fortran_sizeof_REAL=4 103 | export ompi_cv_fortran_sizeof_REALp16=16 104 | export ompi_cv_fortran_sizeof_REALp4=4 105 | export ompi_cv_fortran_sizeof_REALp8=8 106 | export ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 107 | export ompi_cv_fortran_true_value=1 108 | export ompi_cv_fortran_use_only=yes 109 | export ompi_cv_real16_c_equiv=yes 110 | -------------------------------------------------------------------------------- /recipe/build-mpi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | if [[ "$mpi_type" == "external" ]]; then 5 | exit 0 6 | fi 7 | 8 | # validate POSIX-safety of activate script (no bash-isms) 9 | shellcheck -s sh $RECIPE_DIR/openmpi_activate.sh 10 | 11 | # avoid absolute-paths in compilers 12 | export CC=$(basename "$CC") 13 | export CXX=$(basename "$CXX") 14 | export FC=$(basename "$FC") 15 | 16 | # unset unused Fortran compiler variables 17 | unset FFLAGS F77 F90 F95 18 | 19 | # tweak compiler flags 20 | export LIBRARY_PATH="$PREFIX/lib" 21 | if [[ "$target_platform" == osx-* ]]; then 22 | if [[ -n "$CONDA_BUILD_SYSROOT" ]]; then 23 | export CFLAGS="$CFLAGS -isysroot $CONDA_BUILD_SYSROOT" 24 | export CXXFLAGS="$CXXFLAGS -isysroot $CONDA_BUILD_SYSROOT" 25 | fi 26 | fi 27 | 28 | # tweak wrapper ldflags 29 | wrapper_ldflags="" 30 | if [[ "$target_platform" == linux-* ]]; then 31 | # allow-shlib-undefined required for dependencies to link against older sysroot 32 | # avoids undefined 33 | wrapper_ldflags='-Wl,--allow-shlib-undefined' 34 | fi 35 | if [[ "$target_platform" == osx-* ]]; then 36 | # rpath required for '@rpath/libmpi.*.dylib' to be found at runtime 37 | wrapper_ldflags='-Wl,-rpath,${libdir}' 38 | fi 39 | 40 | # UCX and UCC support 41 | build_with_ucx="" 42 | build_with_ucc="" 43 | if [[ "$target_platform" == linux-* && "$target_platform" != linux-ppc64le ]]; then 44 | echo "Build with UCX/UCC support" 45 | build_with_ucx="--with-ucx=$PREFIX" 46 | build_with_ucc="--with-ucc=$PREFIX" 47 | fi 48 | 49 | 50 | # CUDA support 51 | cuda_version="${cuda_compiler_version:-}" 52 | if [[ ! -z "$cuda_version" && "$cuda_version" != "None" ]]; then 53 | echo "Build with CUDA support" 54 | # locate cuda.h target 55 | # nvcc activation already deals with this in $CFLAGS, etc. 56 | # but openmpi needs to find cuda.h itself for some reason 57 | if [[ "${target_platform}" == "linux-64" ]]; then 58 | cuda_target=x86_64-linux 59 | elif [[ "${target_platform}" == "linux-aarch64" ]]; then 60 | cuda_target=sbsa-linux 61 | elif [[ "${target_platform}" == "linux-ppc64le" ]]; then 62 | cuda_target=ppc64le-linux 63 | else 64 | echo "unexpected cuda target_platform=${target_platform}" 65 | exit 1 66 | fi 67 | cuda_dir="$BUILD_PREFIX/targets/$cuda_target" 68 | build_with_cuda="--with-cuda=$cuda_dir --with-io-romio-flags=ac_cv_lib_cudart_cudaStreamSynchronize=no" 69 | fi 70 | 71 | if [[ $CONDA_BUILD_CROSS_COMPILATION == "1" ]]; then 72 | # 73 | # To regenerate the `cross-gfortran.*.sh` files follow these steps: 74 | # 75 | # * Create and activate a conda environment with `gcc=X.Y gfortran` 76 | # packages and any other package required to configure openmpi. 77 | # $ conda create -n ompi-config gcc=X.Y gfortran 78 | # $ conda activate ompi-config 79 | # 80 | # * Run openmpi's `./configure` script 81 | # $ tar -xf openmpi-X.Y.Z.tar.bz2 82 | # $ cd openmpi-X.Y.Z 83 | # $ ./configure 84 | # 85 | # * Use `grep` to get configure variables out of `config.log`: 86 | # $ grep ompi_cv_fortran_ config.log | sed 's/^/export /' >> cross-gfortran.$target_arch.sh 87 | # $ grep ompi_cv_real16_ config.log | sed 's/^/export /' >> cross-gfortran.$target_arch.sh 88 | # 89 | source $RECIPE_DIR/cross-gfortran.$target_platform.sh 90 | fi 91 | 92 | # disable wrapper-runpath for consistency with conda-forge wrt dtags 93 | # openmpi's runpath adds new dtags to compiler wrappers 94 | ./configure --prefix=$PREFIX \ 95 | --disable-dependency-tracking \ 96 | --disable-wrapper-runpath \ 97 | --enable-mpi-fortran \ 98 | --docdir=$PWD/_noinst/doc \ 99 | --mandir=$PWD/_noinst/man \ 100 | --with-mpi-moduledir='${includedir}' \ 101 | --with-wrapper-ldflags="${wrapper_ldflags}" \ 102 | --with-hwloc=$PREFIX \ 103 | --with-libevent=$PREFIX \ 104 | --with-libfabric=$PREFIX \ 105 | --with-pmix=$PREFIX \ 106 | --with-zlib=$PREFIX \ 107 | --enable-ipv6 \ 108 | $build_with_ucx \ 109 | $build_with_ucc \ 110 | $build_with_cuda \ 111 | || (cat config.log; exit 1) 112 | 113 | make -j"${CPU_COUNT:-1}" 114 | make install 115 | 116 | # do not install unused bundled-prrte dev and doc files 117 | rm -rf $PREFIX/include/prte 118 | rm -rf $PREFIX/include/prte*.h 119 | rm -rf $PREFIX/share/prte/rst 120 | 121 | POST_LINK=$PREFIX/bin/.openmpi-post-link.sh 122 | if [ -n "$build_with_cuda" ]; then 123 | echo "setting MCA mca_base_component_show_load_errors to 0..." 124 | echo "mca_base_component_show_load_errors = 0" >> $PREFIX/etc/openmpi-mca-params.conf 125 | echo "setting MCA opal_warn_on_missing_libcuda to 0..." 126 | echo "opal_warn_on_missing_libcuda = 0" >> $PREFIX/etc/openmpi-mca-params.conf 127 | echo "setting MCA opal_cuda_support to 0..." 128 | echo "opal_cuda_support = 0" >> $PREFIX/etc/openmpi-mca-params.conf 129 | cat $RECIPE_DIR/post-link-cuda.sh >> $POST_LINK 130 | fi 131 | if [ -f $POST_LINK ]; then 132 | chmod +x $POST_LINK 133 | fi 134 | 135 | mkdir -p $PREFIX/etc/conda/activate.d 136 | cp -v $RECIPE_DIR/openmpi_activate.sh $PREFIX/etc/conda/activate.d/ 137 | -------------------------------------------------------------------------------- /recipe/recipe.yaml: -------------------------------------------------------------------------------- 1 | schema_version: 1 2 | 3 | context: 4 | version: 5.0.8 5 | init_build: 109 6 | mpi_type: ${{ mpi_type | default('conda') }} 7 | major_minor: ${{ (version | split('.'))[:2] | join('.') }} 8 | cuda_compiler_version: ${{ cuda_compiler_version | default('None') }} 9 | with_cuda: ${{ 'true' if cuda_compiler_version != 'None' else '' }} 10 | cuda_major: >- 11 | ${{ 12 | cuda_compiler_version | split('.') | first 13 | if with_cuda 14 | else "0" 15 | }} 16 | string_prefix: ${{ 'external_' if mpi_type == 'external' else '' }} 17 | build: ${{ (init_build | int) - 100 if mpi_type == 'external' else init_build }} 18 | 19 | recipe: 20 | name: openmpi 21 | version: ${{ version }} 22 | 23 | source: 24 | url: https://www.open-mpi.org/software/ompi/v${{ major_minor }}/downloads/openmpi-${{ version }}.tar.bz2 25 | sha256: 53131e1a57e7270f645707f8b0b65ba56048f5b5ac3f68faabed3eb0d710e449 26 | 27 | build: 28 | number: ${{ build }} 29 | skip: win or (linux and cuda_compiler_version != cuda_compiler_version_min) 30 | 31 | outputs: 32 | - package: 33 | name: openmpi 34 | build: 35 | script: build-mpi 36 | variant: 37 | # deprioritize external 38 | down_prioritize_variant: ${{ 4 if mpi_type == 'external' else 0 }} 39 | string: ${{ string_prefix }}h${{ hash }}_${{ build }} 40 | 41 | requirements: 42 | run_exports: 43 | - if: mpi_type != 'external' 44 | then: ${{ pin_subpackage('openmpi', lower_bound='x.x.x', upper_bound='x') }} 45 | build: 46 | - if: mpi_type != 'external' 47 | then: 48 | - ${{ compiler('c') }} 49 | - ${{ compiler('cxx') }} 50 | - if: with_cuda 51 | then: 52 | - ${{ compiler('cuda') }} 53 | - ${{ compiler('fortran') }} 54 | - ${{ stdlib('c') }} 55 | - pkg-config 56 | - make 57 | - shellcheck 58 | host: 59 | - if: mpi_type != 'external' 60 | then: 61 | - libevent 62 | - libfabric-devel ${{ libfabric }}.* 63 | - libhwloc 64 | - libpmix-devel 65 | - zlib 66 | - if: linux 67 | then: 68 | - libnl 69 | - if: linux and not ppc64le 70 | then: 71 | - ucc 72 | - ucx 73 | - if: with_cuda 74 | then: 75 | - cuda-version ${{ cuda_compiler_version }}.* 76 | run: 77 | - mpi 1.0.* openmpi 78 | run_constraints: 79 | - if: mpi_type != 'external' 80 | then: 81 | # Open MPI only uses CUDA Driver APIs, set the minimal driver version 82 | - if: with_cuda 83 | then: 84 | - __cuda >= ${{ cuda_major ~ ".0" }} 85 | # Ensure a consistent CUDA environment 86 | - cuda-version >= ${{ cuda_major ~ ".0" }} 87 | # conflict with prrte 88 | # openmpi (starting with 6) 89 | # bundles its own fork of prrte 90 | - libprrte ==0.0.0 91 | ignore_run_exports: 92 | from_package: 93 | - if: with_cuda 94 | then: 95 | - ${{ compiler("cuda") | split | first }} 96 | tests: 97 | - if: mpi_type == 'external' 98 | then: 99 | - script: 100 | - conda list --fields fn,track_features | grep "openmpi-p-3" 101 | requirements: 102 | run: 103 | - conda 104 | - if: mpi_type == 'conda' 105 | then: 106 | - package_contents: 107 | files: 108 | not_exists: 109 | - share/doc/openmpi 110 | - share/man/man3/MPI_Init.3 111 | - script: 112 | file: run_test 113 | requirements: 114 | run: 115 | - if: linux 116 | then: 117 | - patchelf 118 | files: 119 | recipe: 120 | - tests/helloworld.sh 121 | 122 | - package: 123 | name: openmpi-mpicc 124 | build: 125 | skip: mpi_type == 'external' 126 | script: 127 | - echo 'ok' 128 | requirements: 129 | build: 130 | - ${{ stdlib('c') }} 131 | run: 132 | - ${{ pin_subpackage('openmpi', exact=True) }} 133 | - ${{ compiler('c') | replace(' =', '>=') }} 134 | tests: 135 | - if: mpi_type == 'conda' 136 | then: 137 | - script: 138 | file: run_test 139 | files: 140 | recipe: 141 | - tests/helloworld.c 142 | 143 | - package: 144 | name: openmpi-mpicxx 145 | build: 146 | skip: mpi_type == 'external' 147 | script: 148 | - echo 'ok' 149 | requirements: 150 | build: 151 | - ${{ stdlib('c') }} 152 | run: 153 | - ${{ pin_subpackage('openmpi', exact=True) }} 154 | - ${{ compiler('cxx') | replace(' =', '>=') }} 155 | tests: 156 | - if: mpi_type == 'conda' 157 | then: 158 | - script: 159 | file: run_test 160 | files: 161 | recipe: 162 | - tests/helloworld.cxx 163 | 164 | - package: 165 | name: openmpi-mpifort 166 | build: 167 | skip: mpi_type == 'external' 168 | script: 169 | - echo 'ok' 170 | requirements: 171 | build: 172 | - ${{ stdlib('c') }} 173 | run: 174 | - ${{ pin_subpackage('openmpi', exact=True) }} 175 | - ${{ compiler('fortran') | replace(' =', '>=') }} 176 | tests: 177 | - if: mpi_type == 'conda' 178 | then: 179 | - script: 180 | file: run_test 181 | files: 182 | recipe: 183 | - tests/helloworld.f 184 | - tests/helloworld.f90 185 | 186 | about: 187 | homepage: https://www.open-mpi.org/ 188 | license: BSD-3-Clause 189 | license_family: BSD 190 | license_file: LICENSE 191 | summary: An open source Message Passing Interface implementation. 192 | description: | 193 | The Open MPI Project is an open source Message Passing Interface 194 | implementation that is developed and maintained by a consortium of academic, 195 | research, and industry partners. 196 | documentation: https://www.open-mpi.org/doc/ 197 | repository: https://github.com/open-mpi/ompi 198 | 199 | extra: 200 | recipe-maintainers: 201 | - astrofrog 202 | - bekozi 203 | - dalcinl 204 | - leofang 205 | - minrk 206 | - msarahan 207 | - ocefpaf 208 | - beckermr 209 | - j34ni 210 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | About openmpi-feedstock 2 | ======================= 3 | 4 | Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/openmpi-feedstock/blob/main/LICENSE.txt) 5 | 6 | Home: https://www.open-mpi.org/ 7 | 8 | Package license: BSD-3-Clause 9 | 10 | Summary: An open source Message Passing Interface implementation. 11 | 12 | Development: https://github.com/open-mpi/ompi 13 | 14 | Documentation: https://www.open-mpi.org/doc/ 15 | 16 | The Open MPI Project is an open source Message Passing Interface 17 | implementation that is developed and maintained by a consortium of academic, 18 | research, and industry partners. 19 | 20 | Current build status 21 | ==================== 22 | 23 | 24 | 25 | 26 | 27 | 28 | 98 | 99 |
Azure 29 |
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 46 | 51 | 52 | 53 | 58 | 59 | 60 | 65 | 66 | 67 | 72 | 73 | 74 | 79 | 80 | 81 | 86 | 87 | 88 | 93 | 94 | 95 |
VariantStatus
linux_64_cuda_compiler_version12.9mpi_typeconda 40 | 41 | variant 42 | 43 |
linux_64_cuda_compiler_version12.9mpi_typeexternal 47 | 48 | variant 49 | 50 |
linux_aarch64_cuda_compiler_version12.9mpi_typeconda 54 | 55 | variant 56 | 57 |
linux_aarch64_cuda_compiler_version12.9mpi_typeexternal 61 | 62 | variant 63 | 64 |
linux_ppc64le_mpi_typeconda 68 | 69 | variant 70 | 71 |
linux_ppc64le_mpi_typeexternal 75 | 76 | variant 77 | 78 |
osx_64 82 | 83 | variant 84 | 85 |
osx_arm64 89 | 90 | variant 91 | 92 |
96 |
97 |
100 | 101 | Current release info 102 | ==================== 103 | 104 | | Name | Downloads | Version | Platforms | 105 | | --- | --- | --- | --- | 106 | | [![Conda Recipe](https://img.shields.io/badge/recipe-openmpi-green.svg)](https://anaconda.org/conda-forge/openmpi) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/openmpi.svg)](https://anaconda.org/conda-forge/openmpi) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/openmpi.svg)](https://anaconda.org/conda-forge/openmpi) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/openmpi.svg)](https://anaconda.org/conda-forge/openmpi) | 107 | | [![Conda Recipe](https://img.shields.io/badge/recipe-openmpi--mpicc-green.svg)](https://anaconda.org/conda-forge/openmpi-mpicc) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/openmpi-mpicc.svg)](https://anaconda.org/conda-forge/openmpi-mpicc) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/openmpi-mpicc.svg)](https://anaconda.org/conda-forge/openmpi-mpicc) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/openmpi-mpicc.svg)](https://anaconda.org/conda-forge/openmpi-mpicc) | 108 | | [![Conda Recipe](https://img.shields.io/badge/recipe-openmpi--mpicxx-green.svg)](https://anaconda.org/conda-forge/openmpi-mpicxx) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/openmpi-mpicxx.svg)](https://anaconda.org/conda-forge/openmpi-mpicxx) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/openmpi-mpicxx.svg)](https://anaconda.org/conda-forge/openmpi-mpicxx) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/openmpi-mpicxx.svg)](https://anaconda.org/conda-forge/openmpi-mpicxx) | 109 | | [![Conda Recipe](https://img.shields.io/badge/recipe-openmpi--mpifort-green.svg)](https://anaconda.org/conda-forge/openmpi-mpifort) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/openmpi-mpifort.svg)](https://anaconda.org/conda-forge/openmpi-mpifort) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/openmpi-mpifort.svg)](https://anaconda.org/conda-forge/openmpi-mpifort) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/openmpi-mpifort.svg)](https://anaconda.org/conda-forge/openmpi-mpifort) | 110 | 111 | Installing openmpi 112 | ================== 113 | 114 | Installing `openmpi` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: 115 | 116 | ``` 117 | conda config --add channels conda-forge 118 | conda config --set channel_priority strict 119 | ``` 120 | 121 | Once the `conda-forge` channel has been enabled, `openmpi, openmpi-mpicc, openmpi-mpicxx, openmpi-mpifort` can be installed with `conda`: 122 | 123 | ``` 124 | conda install openmpi openmpi-mpicc openmpi-mpicxx openmpi-mpifort 125 | ``` 126 | 127 | or with `mamba`: 128 | 129 | ``` 130 | mamba install openmpi openmpi-mpicc openmpi-mpicxx openmpi-mpifort 131 | ``` 132 | 133 | It is possible to list all of the versions of `openmpi` available on your platform with `conda`: 134 | 135 | ``` 136 | conda search openmpi --channel conda-forge 137 | ``` 138 | 139 | or with `mamba`: 140 | 141 | ``` 142 | mamba search openmpi --channel conda-forge 143 | ``` 144 | 145 | Alternatively, `mamba repoquery` may provide more information: 146 | 147 | ``` 148 | # Search all versions available on your platform: 149 | mamba repoquery search openmpi --channel conda-forge 150 | 151 | # List packages depending on `openmpi`: 152 | mamba repoquery whoneeds openmpi --channel conda-forge 153 | 154 | # List dependencies of `openmpi`: 155 | mamba repoquery depends openmpi --channel conda-forge 156 | ``` 157 | 158 | 159 | About conda-forge 160 | ================= 161 | 162 | [![Powered by 163 | NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org) 164 | 165 | conda-forge is a community-led conda channel of installable packages. 166 | In order to provide high-quality builds, the process has been automated into the 167 | conda-forge GitHub organization. The conda-forge organization contains one repository 168 | for each of the installable packages. Such a repository is known as a *feedstock*. 169 | 170 | A feedstock is made up of a conda recipe (the instructions on what and how to build 171 | the package) and the necessary configurations for automatic building using freely 172 | available continuous integration services. Thanks to the awesome service provided by 173 | [Azure](https://azure.microsoft.com/en-us/services/devops/), [GitHub](https://github.com/), 174 | [CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/), 175 | [Drone](https://cloud.drone.io/welcome), and [TravisCI](https://travis-ci.com/) 176 | it is possible to build and upload installable packages to the 177 | [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) 178 | channel for Linux, Windows and OSX respectively. 179 | 180 | To manage the continuous integration and simplify feedstock maintenance, 181 | [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. 182 | Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of 183 | this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. 184 | 185 | For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). 186 | 187 | Terminology 188 | =========== 189 | 190 | **feedstock** - the conda recipe (raw material), supporting scripts and CI configuration. 191 | 192 | **conda-smithy** - the tool which helps orchestrate the feedstock. 193 | Its primary use is in the construction of the CI ``.yml`` files 194 | and simplify the management of *many* feedstocks. 195 | 196 | **conda-forge** - the place where the feedstock and smithy live and work to 197 | produce the finished article (built conda distributions) 198 | 199 | 200 | Updating openmpi-feedstock 201 | ========================== 202 | 203 | If you would like to improve the openmpi recipe or build a new 204 | package version, please fork this repository and submit a PR. Upon submission, 205 | your changes will be run on the appropriate platforms to give the reviewer an 206 | opportunity to confirm that the changes result in a successful build. Once 207 | merged, the recipe will be re-built and uploaded automatically to the 208 | `conda-forge` channel, whereupon the built conda packages will be available for 209 | everybody to install and use from the `conda-forge` channel. 210 | Note that all branches in the conda-forge/openmpi-feedstock are 211 | immediately built and any created packages are uploaded, so PRs should be based 212 | on branches in forks, and branches in the main repository should only be used to 213 | build distinct package versions. 214 | 215 | In order to produce a uniquely identifiable distribution: 216 | * If the version of a package **is not** being increased, please add or increase 217 | the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string). 218 | * If the version of a package **is** being increased, please remember to return 219 | the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string) 220 | back to 0. 221 | 222 | Feedstock Maintainers 223 | ===================== 224 | 225 | * [@astrofrog](https://github.com/astrofrog/) 226 | * [@beckermr](https://github.com/beckermr/) 227 | * [@bekozi](https://github.com/bekozi/) 228 | * [@dalcinl](https://github.com/dalcinl/) 229 | * [@j34ni](https://github.com/j34ni/) 230 | * [@leofang](https://github.com/leofang/) 231 | * [@minrk](https://github.com/minrk/) 232 | * [@msarahan](https://github.com/msarahan/) 233 | * [@ocefpaf](https://github.com/ocefpaf/) 234 | 235 | --------------------------------------------------------------------------------