diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index cde77002..d08eed2c 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,7 +5,7 @@ jobs: - job: osx pool: - vmImage: macOS-13 + vmImage: macOS-15 strategy: matrix: osx_64_: diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 9e91373a..fcb3633e 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index da038d44..5a559b26 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 968bdcbd..e9d46dc6 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: diff --git a/.gitattributes b/.gitattributes index 18f114a1..85ccb8f4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,4 +24,5 @@ bld.bat text eol=crlf /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true +pixi.toml linguist-generated=true shippable.yml linguist-generated=true diff --git a/README.md b/README.md index 95151221..3f4c3a11 100644 --- a/README.md +++ b/README.md @@ -155,12 +155,12 @@ it is possible to build and upload installable packages to the [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) channel for Linux, Windows and OSX respectively. -To manage the continuous integration and simplify feedstock maintenance +To manage the continuous integration and simplify feedstock maintenance, [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. -For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). +For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). Terminology =========== @@ -187,7 +187,7 @@ merged, the recipe will be re-built and uploaded automatically to the everybody to install and use from the `conda-forge` channel. Note that all branches in the conda-forge/openmp-feedstock are immediately built and any created packages are uploaded, so PRs should be based -on branches in forks and branches in the main repository should only be used to +on branches in forks, and branches in the main repository should only be used to build distinct package versions. In order to produce a uniquely identifiable distribution: diff --git a/recipe/install_pkg.bat b/recipe/install_pkg.bat index 5520a110..5f00a46f 100644 --- a/recipe/install_pkg.bat +++ b/recipe/install_pkg.bat @@ -26,7 +26,8 @@ for /L %%I in (18,1,%PKG_VERSION:~0,2%) do ( :: runtime is being loaded even though they are literally the same. :: To avoid this, let's make 'libiomp5md.dll' a DLL that forwards to 'libomp.dll' del /q "%LIBRARY_BIN%\\libiomp5md.dll" -python %SRC_DIR%\\create_forwarder_dll.py "%LIBRARY_BIN%\libomp.dll" "%LIBRARY_BIN%\libiomp5md.dll" --no-temp-dir +create-forwarder-dll "%LIBRARY_BIN%\libomp.dll" "%LIBRARY_BIN%\libiomp5md.dll" --no-temp-dir +if %ERRORLEVEL% neq 0 exit 1 :: remove fortran bits from regular llvm-openmp package if "%PKG_NAME%" NEQ "llvm-openmp-fortran" ( diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 4a6fa5dc..00abc2cd 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -3,11 +3,8 @@ # occasionally to see last fully supported openmp ver. {% set openmp_ver = "4.5" %} -# on osx we need to use cxx_compiler_version, rest can use package version {% set clang_major = version.split(".")[0]|int %} -{% if cxx_compiler_version is not undefined %} -{% set clang_major = cxx_compiler_version.split(".")[0]|int %} # [osx] -{% endif %} +{% set clang_test_version = "19" %} package: name: openmp @@ -24,11 +21,8 @@ source: # fix for https://github.com/llvm/llvm-project/issues/54596 - patches/0001-link-libomp-to-compiler-rt-on-osx-arm.patch - - url: https://github.com/isuruf/create-forwarder-dll/archive/refs/tags/v0.3.tar.gz - sha256: d96f5386685a1b6f4b6ba041181a0b5df39f4fa7dbc93efc3f72c5fe19fa9983 - build: - number: 2 + number: 3 requirements: build: @@ -41,7 +35,7 @@ requirements: host: - llvmdev {{ version }} # see https://github.com/llvm/llvm-project/issues/54596 - - compiler-rt # [osx and arm64] + - compiler-rt {{ version }} # [osx and arm64] outputs: - name: llvm-openmp @@ -64,24 +58,25 @@ outputs: - {{ stdlib("c") }} - {{ compiler("cxx") }} - python >=3 + - create-forwarder-dll # [win] host: run_constrained: - openmp {{ version }}|{{ version }}.* - intel-openmp <0.0a0 test: requires: - # ensure we don't pull in too-new clang (when on maintenance branch), - # which breaks assumption about symlink below - - clangxx <={{ version }} + - clang-{{ clang_test_version }} - {{ compiler('cxx') }} + - ld64 # [osx] files: - omp_hello.c commands: # headers + - "@echo on" # [win] - test -f $PREFIX/include/omp.h # [unix] - if not exist %LIBRARY_INC%\omp.h exit 1 # [win] # clang-specific one (symlink on unix; copies on win, see install_pkg.bat) - - test -f $PREFIX/lib/clang/{{ clang_major }}/include/omp.h # [unix] + - test -f $PREFIX/lib/clang/{{ clang_test_version }}/include/omp.h # [unix] {% for ver in range(18, clang_major + 1) %} - if not exist %LIBRARY_LIB%\clang\{{ ver }}\include\omp.h exit 1 # [win] {% endfor %} @@ -96,12 +91,14 @@ outputs: - test -f $PREFIX/lib/libomp.so # [linux] - test -f $PREFIX/lib/libomp.dylib # [osx] - if not exist %LIBRARY_BIN%\libomp.dll exit 1 # [win] + - if not exist %LIBRARY_BIN%\libiomp5md.dll exit 1 # [win] - if not exist %LIBRARY_LIB%\libomp.lib exit 1 # [win] # compilation test - - export LNK_XTRA="-Wl,--allow-shlib-undefined" # [linux] - - $PREFIX/bin/clang -v -fopenmp -I$PREFIX/include -L$PREFIX/lib -Wl,-rpath,$PREFIX/lib $LNK_XTRA omp_hello.c -o omp_hello # [unix] - - '%LIBRARY_BIN%\clang -v -fopenmp -I%LIBRARY_INC% -L%LIBRARY_LIB% omp_hello.c -o omp_hello.exe' # [win] + - export LNK="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib" # [unix] + - export LNK="${LNK} -Wl,--allow-shlib-undefined" # [linux] + - $PREFIX/bin/clang-{{ clang_test_version }} -v -fopenmp -I$PREFIX/include $LNK omp_hello.c -o omp_hello # [unix] + - '%LIBRARY_BIN%\clang-{{ clang_test_version }} -v -fopenmp -I%LIBRARY_INC% -L%LIBRARY_LIB% omp_hello.c -o omp_hello.exe' # [win] - ./omp_hello # [unix] - '%cd%\omp_hello.exe' # [win] @@ -123,6 +120,7 @@ outputs: - {{ stdlib("c") }} - {{ compiler("cxx") }} - {{ compiler("fortran") }} # [linux] + - create-forwarder-dll # [win] host: - {{ pin_subpackage("llvm-openmp", exact=True) }} run: