diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index f04e699c..2e0430f9 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -11,7 +11,15 @@ jobs: linux_64_: CONFIG: linux_64_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + linux_aarch64_: + CONFIG: linux_aarch64_ + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64 + linux_ppc64le_: + CONFIG: linux_ppc64le_ + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le timeoutInMinutes: 360 steps: @@ -32,6 +40,11 @@ jobs: export CI=azure export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) + if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi .scripts/run_docker_build.sh displayName: Run docker build env: diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 39baad3f..84d4f421 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -23,6 +23,11 @@ jobs: export OSX_FORCE_SDK_DOWNLOAD="1" export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) + if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi ./.scripts/run_osx_build.sh displayName: Run OSX build env: diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 1fd8ea12..e8029d96 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -5,7 +5,7 @@ jobs: - job: win pool: - vmImage: vs2017-win2016 + vmImage: windows-2019 strategy: matrix: win_64_: @@ -52,7 +52,7 @@ jobs: - task: CondaEnvironment@1 inputs: - packageSpecs: 'python=3.6 conda-build conda "conda-forge-ci-setup=3" pip' # Optional + packageSpecs: 'python=3.9 conda-build conda "conda-forge-ci-setup=3" pip boa' # Optional installOptions: "-c conda-forge" updateConda: true displayName: Install conda-build and activate environment @@ -86,7 +86,7 @@ jobs: - script: | call activate base - conda.exe build "recipe" -m .ci_support\%CONFIG%.yaml + conda.exe mambabuild "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables displayName: Build recipe env: PYTHONUNBUFFERED: 1 @@ -107,4 +107,4 @@ jobs: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) - condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False'))) \ No newline at end of file + condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False')), not(eq(variables['Build.Reason'], 'PullRequest'))) \ No newline at end of file diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 4d9b930a..3ef0b661 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -1,7 +1,7 @@ cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -9,14 +9,13 @@ cxx_compiler: cxx_compiler_version: - '9' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 perl: -- 5.26.2 +- 5.32.1 pin_run_as_build: - perl: - max_pin: x.x.x + zlib: + max_pin: x.x target_platform: - linux-64 -zip_keys: -- - cdt_name - - docker_image +zlib: +- '1.2' diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index b9ef0c22..7dc25b84 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -15,9 +15,11 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-aarch64 perl: -- 5.26.2 +- 5.32.1 pin_run_as_build: - perl: - max_pin: x.x.x + zlib: + max_pin: x.x target_platform: - linux-aarch64 +zlib: +- '1.2' diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index b933c796..ab8c4113 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -1,7 +1,7 @@ cdt_name: - cos7 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -11,9 +11,11 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-ppc64le perl: -- 5.26.2 +- 5.32.1 pin_run_as_build: - perl: - max_pin: x.x.x + zlib: + max_pin: x.x target_platform: - linux-ppc64le +zlib: +- '1.2' diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index def0864c..33c68036 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -1,7 +1,7 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -11,9 +11,6 @@ cxx_compiler_version: macos_machine: - x86_64-apple-darwin13.4.0 perl: -- 5.26.2 -pin_run_as_build: - perl: - max_pin: x.x.x +- 5.32.1 target_platform: - osx-64 diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 95996ac6..21fa4258 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -1,7 +1,7 @@ MACOSX_DEPLOYMENT_TARGET: - '11.0' channel_sources: -- conda-forge/label/rust_dev,conda-forge +- conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -11,9 +11,6 @@ cxx_compiler_version: macos_machine: - arm64-apple-darwin20.0.0 perl: -- 5.32.0 -pin_run_as_build: - perl: - max_pin: x.x.x +- 5.32.1 target_platform: - osx-arm64 diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 06249cbd..114948d3 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -1,14 +1,11 @@ channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - vs2017 perl: -- 5.26.2 -pin_run_as_build: - perl: - max_pin: x.x.x +- 5.32.1 target_platform: - win-64 vc: diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index af150917..00000000 --- a/.drone.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -kind: pipeline -name: linux_aarch64_ - -platform: - os: linux - arch: arm64 - -steps: -- name: Install and build - image: quay.io/condaforge/linux-anvil-aarch64 - environment: - CONFIG: linux_aarch64_ - UPLOAD_PACKAGES: True - PLATFORM: linux-aarch64 - BINSTAR_TOKEN: - from_secret: BINSTAR_TOKEN - FEEDSTOCK_TOKEN: - from_secret: FEEDSTOCK_TOKEN - STAGING_BINSTAR_TOKEN: - from_secret: STAGING_BINSTAR_TOKEN - commands: - - export FEEDSTOCK_ROOT="$DRONE_WORKSPACE" - - export RECIPE_ROOT="$FEEDSTOCK_ROOT/recipe" - - export CI=drone - - export GIT_BRANCH="$DRONE_BRANCH" - - export FEEDSTOCK_NAME=$(basename ${DRONE_REPO_NAME}) - - sed -i '$ichown -R conda:conda "$FEEDSTOCK_ROOT"' /opt/docker/bin/entrypoint - - /opt/docker/bin/entrypoint $FEEDSTOCK_ROOT/.scripts/build_steps.sh - - echo "Done building" - diff --git a/.gitattributes b/.gitattributes index 9060b272..ce52713a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,6 +18,7 @@ bld.bat text eol=crlf .gitignore linguist-generated=true .travis.yml linguist-generated=true .scripts/* linguist-generated=true +.woodpecker.yml linguist-generated=true LICENSE.txt linguist-generated=true README.md linguist-generated=true azure-pipelines.yml linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2cb12bd6..5278c5b8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @beckermr @inducer @isuruf @jakirkham @katietz @yesimon \ No newline at end of file +* @beckermr @h-vetinari @inducer @isuruf @jakirkham @katietz @yesimon \ No newline at end of file diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 99baf86d..b3d5b819 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -5,6 +5,8 @@ # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also # benefit from the improvement. +# -*- mode: jinja-shell -*- + set -xeuo pipefail export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh @@ -25,9 +27,10 @@ conda-build: root-dir: ${FEEDSTOCK_ROOT}/build_artifacts CONDARC -BUILD_CMD=build -conda install --yes --quiet "conda-forge-ci-setup=3" conda-build pip ${GET_BOA:-} -c conda-forge + +mamba install --update-specs --yes --quiet "conda-forge-ci-setup=3" conda-build pip boa -c conda-forge +mamba update --update-specs --yes --quiet "conda-forge-ci-setup=3" conda-build pip boa -c conda-forge # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" @@ -37,8 +40,8 @@ source run_conda_forge_build_setup # make the build number clobber make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" -if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then - EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi @@ -55,7 +58,7 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then # Drop into an interactive shell /bin/bash else - conda $BUILD_CMD "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + conda mambabuild "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" ( startgroup "Validating outputs" ) 2> /dev/null @@ -66,7 +69,7 @@ else ( startgroup "Uploading packages" ) 2> /dev/null - if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then + if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" fi diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 244ccd1f..0c6515fc 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -75,12 +75,15 @@ fi ( startgroup "Start Docker" ) 2> /dev/null export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" +export IS_PR_BUILD="${IS_PR_BUILD:-False}" +docker pull "${DOCKER_IMAGE}" docker run ${DOCKER_RUN_ARGS} \ -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z,delegated \ -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z,delegated \ -e CONFIG \ -e HOST_USER_ID \ -e UPLOAD_PACKAGES \ + -e IS_PR_BUILD \ -e GIT_BRANCH \ -e UPLOAD_ON_BRANCH \ -e CI \ @@ -91,9 +94,9 @@ docker run ${DOCKER_RUN_ARGS} \ -e BINSTAR_TOKEN \ -e FEEDSTOCK_TOKEN \ -e STAGING_BINSTAR_TOKEN \ - $DOCKER_IMAGE \ + "${DOCKER_IMAGE}" \ bash \ - /home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh + "/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh" # verify that the end of the script was reached test -f "$DONE_CANARY" diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 708b1e1f..6774b01e 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +# -*- mode: jinja-shell -*- + source .scripts/logging_utils.sh set -xe @@ -9,21 +11,21 @@ MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3} ( startgroup "Installing a fresh version of Miniforge" ) 2> /dev/null MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download" -MINIFORGE_FILE="Miniforge3-MacOSX-x86_64.sh" +MINIFORGE_FILE="Mambaforge-MacOSX-$(uname -m).sh" curl -L -O "${MINIFORGE_URL}/${MINIFORGE_FILE}" +rm -rf ${MINIFORGE_HOME} bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} ( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null ( startgroup "Configuring conda" ) 2> /dev/null -BUILD_CMD=build - source ${MINIFORGE_HOME}/etc/profile.d/conda.sh conda activate base echo -e "\n\nInstalling conda-forge-ci-setup=3 and conda-build." -conda install -n base --quiet --yes "conda-forge-ci-setup=3" conda-build pip ${GET_BOA:-} +mamba install -n base --update-specs --quiet --yes "conda-forge-ci-setup=3" conda-build pip boa +mamba update -n base --update-specs --quiet --yes "conda-forge-ci-setup=3" conda-build pip boa @@ -57,7 +59,7 @@ if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi -conda $BUILD_CMD ./recipe -m ./.ci_support/${CONFIG}.yaml --suppress-variables --clobber-file ./.ci_support/clobber_${CONFIG}.yaml ${EXTRA_CB_OPTIONS:-} +conda mambabuild ./recipe -m ./.ci_support/${CONFIG}.yaml --suppress-variables --clobber-file ./.ci_support/clobber_${CONFIG}.yaml ${EXTRA_CB_OPTIONS:-} ( startgroup "Validating outputs" ) 2> /dev/null validate_recipe_outputs "${FEEDSTOCK_NAME}" @@ -66,7 +68,7 @@ validate_recipe_outputs "${FEEDSTOCK_NAME}" ( startgroup "Uploading packages" ) 2> /dev/null -if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then +if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml fi diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ecb962de..00000000 --- a/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. - -language: generic - - - -matrix: - include: - - env: CONFIG=linux_ppc64le_ UPLOAD_PACKAGES=True PLATFORM=linux-ppc64le DOCKER_IMAGE=quay.io/condaforge/linux-anvil-ppc64le - os: linux - arch: ppc64le - dist: focal - -script: - - export CI=travis - - export GIT_BRANCH="$TRAVIS_BRANCH" - - export FEEDSTOCK_NAME=$(basename ${TRAVIS_REPO_SLUG}) - - - - if [[ ${PLATFORM} =~ .*linux.* ]]; then ./.scripts/run_docker_build.sh; fi \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index ed3f451e..6ec14012 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,5 @@ BSD 3-clause license -Copyright (c) 2015-2021, conda-forge contributors +Copyright (c) 2015-2022, conda-forge contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 0de3197a..50763fce 100644 --- a/README.md +++ b/README.md @@ -13,21 +13,7 @@ Current build status ==================== - - - - - - - +
Travis - - macOS - -
Drone - - linux - -
@@ -123,7 +109,8 @@ conda search llvm-openmp --channel conda-forge About conda-forge ================= -[![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](http://numfocus.org) +[![Powered by +NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org) conda-forge is a community-led conda channel of installable packages. In order to provide high-quality builds, the process has been automated into the @@ -184,6 +171,7 @@ Feedstock Maintainers ===================== * [@beckermr](https://github.com/beckermr/) +* [@h-vetinari](https://github.com/h-vetinari/) * [@inducer](https://github.com/inducer/) * [@isuruf](https://github.com/isuruf/) * [@jakirkham](https://github.com/jakirkham/) diff --git a/build-locally.py b/build-locally.py index 00eeb34b..8b743489 100755 --- a/build-locally.py +++ b/build-locally.py @@ -13,6 +13,7 @@ def setup_environment(ns): os.environ["CONFIG"] = ns.config os.environ["UPLOAD_PACKAGES"] = "False" + os.environ["IS_PR_BUILD"] = "True" if ns.debug: os.environ["BUILD_WITH_CONDA_DEBUG"] = "1" if ns.output_id: @@ -21,6 +22,10 @@ def setup_environment(ns): os.environ["MINIFORGE_HOME"] = os.path.join( os.path.dirname(__file__), "miniforge3" ) + if "OSX_SDK_DIR" not in os.environ: + os.environ["OSX_SDK_DIR"] = os.path.join( + os.path.dirname(__file__), "SDKs" + ) def run_docker_build(ns): diff --git a/conda-forge.yml b/conda-forge.yml index 0a66ce74..8c9b4035 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,8 +1,5 @@ -provider: - linux_ppc64le: default - linux_aarch64: default +build_platform: {osx_arm64: osx_64} +channel_priority: flexible conda_forge_output_validation: true -build_platform: - osx_arm64: osx_64 +provider: {linux_aarch64: azure, linux_ppc64le: azure} test_on_native_only: true -channel_priority: flexible diff --git a/recipe/f1b9ce2736d826df2ff4cbd67116864f0856334f.patch b/recipe/f1b9ce2736d826df2ff4cbd67116864f0856334f.patch deleted file mode 100644 index 43aa01f7..00000000 --- a/recipe/f1b9ce2736d826df2ff4cbd67116864f0856334f.patch +++ /dev/null @@ -1,149 +0,0 @@ -From f1b9ce2736d826df2ff4cbd67116864f0856334f Mon Sep 17 00:00:00 2001 -From: Hansang Bae -Date: Wed, 30 Jun 2021 14:01:04 -0500 -Subject: [PATCH] [OpenMP] Fix a few issues with hidden helper task - -This patch includes the following changes to address a few issues when -using hidden helper task. - -- Assertion is triggered when there are inadvertent calls to hidden - helper functions on non-Linux OS -- Added deinit code in __kmp_internal_end_library function to fix random - shutdown crashes -- Moved task data access into the lock-guarded region in __kmp_push_task - -Differential Revision: https://reviews.llvm.org/D105308 ---- - openmp/runtime/src/kmp_runtime.cpp | 16 ++++++++++-- - openmp/runtime/src/kmp_tasking.cpp | 4 ++- - openmp/runtime/src/z_Linux_util.cpp | 40 +++++++++++++++++++++++++++++ - 3 files changed, 57 insertions(+), 3 deletions(-) - -diff --git a/openmp/runtime/src/kmp_runtime.cpp b/openmp/runtime/src/kmp_runtime.cpp -index 414e9ba4e36d7..f6a53825f2d10 100644 ---- a/openmp/runtime/src/kmp_runtime.cpp -+++ b/openmp/runtime/src/kmp_runtime.cpp -@@ -6204,6 +6204,16 @@ void __kmp_internal_end_library(int gtid_req) { - return; - } - -+ // If hidden helper team has been initialized, we need to deinit it -+ if (TCR_4(__kmp_init_hidden_helper) && -+ !TCR_4(__kmp_hidden_helper_team_done)) { -+ TCW_SYNC_4(__kmp_hidden_helper_team_done, TRUE); -+ // First release the main thread to let it continue its work -+ __kmp_hidden_helper_main_thread_release(); -+ // Wait until the hidden helper team has been destroyed -+ __kmp_hidden_helper_threads_deinitz_wait(); -+ } -+ - KMP_MB(); /* Flush all pending memory write invalidates. */ - /* find out who we are and what we should do */ - { -@@ -6317,7 +6327,8 @@ void __kmp_internal_end_thread(int gtid_req) { - } - - // If hidden helper team has been initialized, we need to deinit it -- if (TCR_4(__kmp_init_hidden_helper)) { -+ if (TCR_4(__kmp_init_hidden_helper) && -+ !TCR_4(__kmp_hidden_helper_team_done)) { - TCW_SYNC_4(__kmp_hidden_helper_team_done, TRUE); - // First release the main thread to let it continue its work - __kmp_hidden_helper_main_thread_release(); -@@ -8697,11 +8708,12 @@ void __kmp_omp_display_env(int verbose) { - // Globals and functions for hidden helper task - kmp_info_t **__kmp_hidden_helper_threads; - kmp_info_t *__kmp_hidden_helper_main_thread; --kmp_int32 __kmp_hidden_helper_threads_num = 8; - std::atomic __kmp_unexecuted_hidden_helper_tasks; - #if KMP_OS_LINUX -+kmp_int32 __kmp_hidden_helper_threads_num = 8; - kmp_int32 __kmp_enable_hidden_helper = TRUE; - #else -+kmp_int32 __kmp_hidden_helper_threads_num = 0; - kmp_int32 __kmp_enable_hidden_helper = FALSE; - #endif - -diff --git a/openmp/runtime/src/kmp_tasking.cpp b/openmp/runtime/src/kmp_tasking.cpp -index 62f0bdca4be93..7dfd256801b5a 100644 ---- a/openmp/runtime/src/kmp_tasking.cpp -+++ b/openmp/runtime/src/kmp_tasking.cpp -@@ -436,10 +436,12 @@ static kmp_int32 __kmp_push_task(kmp_int32 gtid, kmp_task_t *task) { - gtid, taskdata, thread_data->td.td_deque_ntasks, - thread_data->td.td_deque_head, thread_data->td.td_deque_tail)); - -+ auto hidden_helper = taskdata->td_flags.hidden_helper; -+ - __kmp_release_bootstrap_lock(&thread_data->td.td_deque_lock); - - // Signal one worker thread to execute the task -- if (taskdata->td_flags.hidden_helper) { -+ if (UNLIKELY(hidden_helper)) { - // Wake hidden helper threads up if they're sleeping - __kmp_hidden_helper_worker_thread_signal(); - } -diff --git a/openmp/runtime/src/z_Linux_util.cpp b/openmp/runtime/src/z_Linux_util.cpp -index bd50987a857ac..5c2486904a76e 100644 ---- a/openmp/runtime/src/z_Linux_util.cpp -+++ b/openmp/runtime/src/z_Linux_util.cpp -@@ -25,7 +25,9 @@ - #include - #endif - #include // HUGE_VAL. -+#if KMP_OS_LINUX - #include -+#endif // KMP_OS_LINUX - #include - #include - #include -@@ -2468,6 +2470,7 @@ int __kmp_invoke_microtask(microtask_t pkfn, int gtid, int tid, int argc, - - #endif - -+#if KMP_OS_LINUX - // Functions for hidden helper task - namespace { - // Condition variable for initializing hidden helper team -@@ -2628,5 +2631,42 @@ void __kmp_hidden_helper_threads_deinitz_release() { - status = pthread_mutex_unlock(&hidden_helper_threads_deinitz_lock); - KMP_CHECK_SYSFAIL("pthread_mutex_unlock", status); - } -+#else // KMP_OS_LINUX -+void __kmp_hidden_helper_worker_thread_wait() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_do_initialize_hidden_helper_threads() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_threads_initz_wait() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_initz_release() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_main_thread_wait() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_main_thread_release() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_worker_thread_signal() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_threads_deinitz_wait() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+ -+void __kmp_hidden_helper_threads_deinitz_release() { -+ KMP_ASSERT(0 && "Hidden helper task is not supported on this OS"); -+} -+#endif // KMP_OS_LINUX - - // end of file // diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 6f7d53ee..c68371d8 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "12.0.1" %} +{% set version = "13.0.1" %} {% set openmp_ver = "4.5" %} package: @@ -7,12 +7,13 @@ package: source: url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version.replace(".rc", "-rc") }}/openmp-{{ version.replace(".rc", "rc") }}.src.tar.xz - sha256: 60fe79440eaa9ebf583a6ea7f81501310388c02754dbe7dc210776014d06b091 + sha256: 6b79261371616c31fea18cd3ee1797c79ee38bcaf8417676d4fa366a24c96b4f patches: - - f1b9ce2736d826df2ff4cbd67116864f0856334f.patch + # minimal backport of https://reviews.llvm.org/D117230 to branch 13.x + - patches/0001-openmp-devicertl-Handle-missing-clang_tool.patch build: - number: 1 + number: 0 skip: true # [win and vc<14] outputs: @@ -39,6 +40,7 @@ outputs: - ninja # [win] host: - llvmdev {{ version }}|{{ version }}.* + - zlib # [linux] run_constrained: - clangdev {{ version }}|{{ version }}.* - llvmdev {{ version }}|{{ version }}.* @@ -64,7 +66,7 @@ outputs: about: home: http://openmp.llvm.org/ license: NCSA - license_file: LICENSE.txt + license_file: LICENSE.TXT summary: The OpenMP API supports multi-platform shared-memory parallel programming in C/C++ and Fortran. extra: @@ -75,3 +77,4 @@ extra: - isuruf - beckermr - katietz + - h-vetinari diff --git a/recipe/patches/0001-openmp-devicertl-Handle-missing-clang_tool.patch b/recipe/patches/0001-openmp-devicertl-Handle-missing-clang_tool.patch new file mode 100644 index 00000000..48e39d71 --- /dev/null +++ b/recipe/patches/0001-openmp-devicertl-Handle-missing-clang_tool.patch @@ -0,0 +1,41 @@ +From b73ae2ec99d93ae07f50909192460cc1ffd6c04e Mon Sep 17 00:00:00 2001 +From: Jon Chesterfield +Date: Thu, 13 Jan 2022 22:43:25 +0000 +Subject: [PATCH] [openmp][devicertl] Handle missing clang_tool + +Fixes github issues/52910 + +Reviewed By: jdoerfert + +Differential Revision: https://reviews.llvm.org/D117230 + +Minimal backport to release/13.x by: H. Vetinari +--- + openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt b/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt +index e398f398c776..33e454ca5ca7 100644 +--- a/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt ++++ b/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt +@@ -33,10 +33,14 @@ endif() + if (LLVM_DIR) + # Builds that use pre-installed LLVM have LLVM_DIR set. + find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) +- find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} +- NO_DEFAULT_PATH) ++ find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) + find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) +- libomptarget_say("Building AMDGCN device RTL. Using clang: ${CLANG_TOOL}") ++ if ((NOT CLANG_TOOL) OR (NOT LINK_TOOL) OR (NOT OPT_TOOL)) ++ libomptarget_say("Not building AMDGCN device RTL. Missing clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL} or opt: ${OPT_TOOL}") ++ return() ++ else() ++ libomptarget_say("Building AMDGCN device RTL. Using clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL} and opt: ${OPT_TOOL}") ++ endif() + else() + # LLVM in-tree builds may use CMake target names to discover the tools. + set(CLANG_TOOL $) +-- +2.32.0.windows.2 +
Azure