diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index a20f3154..875d9966 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -13,6 +13,7 @@ jobs: UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 timeoutInMinutes: 360 + variables: {} steps: # configure qemu binfmt-misc running. This allows us to run docker containers @@ -25,6 +26,9 @@ jobs: - script: | export CI=azure + export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) + export remote_url=$(Build.Repository.Uri) + export sha=$(Build.SourceVersion) export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 8032e967..730a6268 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -15,11 +15,15 @@ jobs: CONFIG: osx_arm64_ UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 + variables: {} steps: # TODO: Fast finish on azure pipelines? - script: | export CI=azure + export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) + export remote_url=$(Build.Repository.Uri) + export sha=$(Build.SourceVersion) export OSX_FORCE_SDK_DOWNLOAD="1" export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index f6b44247..72a0ae22 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -1,3 +1,7 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: - cos6 channel_sources: @@ -12,3 +16,6 @@ docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 target_platform: - linux-64 +zip_keys: +- - c_stdlib_version + - cdt_name diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 5091a7be..1543c6de 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -1,7 +1,11 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' MACOSX_SDK_VERSION: - '10.14' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: - conda-forge channel_targets: @@ -9,12 +13,10 @@ channel_targets: cxx_compiler: - clang_bootstrap cxx_compiler_version: -- '15' +- '16' dummy_var: - '0' macos_machine: - x86_64-apple-darwin13.4.0 -openturns: -- '1.20' target_platform: - osx-64 diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index e28b302b..df1191e5 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -1,5 +1,9 @@ MACOSX_DEPLOYMENT_TARGET: - '11.0' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' channel_sources: - conda-forge channel_targets: @@ -7,12 +11,10 @@ channel_targets: cxx_compiler: - clang_bootstrap cxx_compiler_version: -- '15' +- '16' dummy_var: - '1' macos_machine: - arm64-apple-darwin20.0.0 -openturns: -- '1.20' target_platform: - osx-arm64 diff --git a/.gitignore b/.gitignore index c89ecb7d..179afe55 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,24 @@ -*.pyc +# User content belongs under recipe/. +# Feedstock configuration goes in `conda-forge.yml` +# Everything else is managed by the conda-smithy rerender process. +# Please do not modify + +# Ignore all files and folders in root +* +!/conda-forge.yml + +# Don't ignore any files/folders if the parent folder is 'un-ignored' +# This also avoids warnings when adding an already-checked file with an ignored parent. +!/**/ +# Don't ignore any files/folders recursively in the following folders +!/recipe/** +!/.ci_support/** -build_artifacts +# Since we ignore files/folders recursively, any folders inside +# build_artifacts gets ignored which trips some build systems. +# To avoid that we 'un-ignore' all files/folders recursively +# and only ignore the root build_artifacts folder. +!/build_artifacts/** +/build_artifacts + +*.pyc diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index a6b09f6b..899ba03c 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -28,14 +28,15 @@ conda-build: pkgs_dirs: - ${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache - /opt/conda/pkgs +solver: libmamba CONDARC +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 - -mamba install --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 -mamba update --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 +mamba install --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" @@ -67,9 +68,10 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then # Drop into an interactive shell /bin/bash else - conda mambabuild "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ + --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" ( startgroup "Validating outputs" ) 2> /dev/null validate_recipe_outputs "${FEEDSTOCK_NAME}" diff --git a/.scripts/logging_utils.sh b/.scripts/logging_utils.sh index 57bc95c2..aff009f0 100644 --- a/.scripts/logging_utils.sh +++ b/.scripts/logging_utils.sh @@ -12,7 +12,7 @@ function startgroup { echo "##[group]$1";; travis ) echo "$1" - echo -en 'travis_fold:start:'"${1// /}"'\\r';; + echo -en 'travis_fold:start:'"${1// /}"'\r';; github_actions ) echo "::group::$1";; * ) @@ -28,7 +28,7 @@ function endgroup { azure ) echo "##[endgroup]";; travis ) - echo -en 'travis_fold:end:'"${1// /}"'\\r';; + echo -en 'travis_fold:end:'"${1// /}"'\r';; github_actions ) echo "::endgroup::";; esac diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 92362398..00f377a8 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -21,6 +21,12 @@ if [ -z ${FEEDSTOCK_NAME} ]; then export FEEDSTOCK_NAME=$(basename ${FEEDSTOCK_ROOT}) fi +if [[ "${sha:-}" == "" ]]; then + pushd "${FEEDSTOCK_ROOT}" + sha=$(git rev-parse HEAD) + popd +fi + docker info # In order for the conda-build process in the container to write to the mounted @@ -91,6 +97,9 @@ docker run ${DOCKER_RUN_ARGS} \ -e CPU_COUNT \ -e BUILD_WITH_CONDA_DEBUG \ -e BUILD_OUTPUT_ID \ + -e flow_run_id \ + -e remote_url \ + -e sha \ -e BINSTAR_TOKEN \ -e FEEDSTOCK_TOKEN \ -e STAGING_BINSTAR_TOKEN \ diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 3969edf3..07dff219 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -22,11 +22,13 @@ bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} source ${MINIFORGE_HOME}/etc/profile.d/conda.sh conda activate base +export CONDA_SOLVER="libmamba" +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 -mamba install --update-specs --quiet --yes --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 -mamba update --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 +mamba install --update-specs --quiet --yes --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" @@ -45,6 +47,10 @@ else echo -e "\n\nNot mangling homebrew as we are not running in CI" fi +if [[ "${sha:-}" == "" ]]; then + sha=$(git rev-parse HEAD) +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup @@ -75,9 +81,10 @@ else EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi - conda mambabuild ./recipe -m ./.ci_support/${CONFIG}.yaml \ + conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file ./.ci_support/clobber_${CONFIG}.yaml + --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ + --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" ( startgroup "Validating outputs" ) 2> /dev/null validate_recipe_outputs "${FEEDSTOCK_NAME}" diff --git a/README.md b/README.md index 4e0b39ec..abccf9d0 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ available continuous integration services. Thanks to the awesome service provide [CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/), [Drone](https://cloud.drone.io/welcome), and [TravisCI](https://travis-ci.com/) it is possible to build and upload installable packages to the -[conda-forge](https://anaconda.org/conda-forge) [Anaconda-Cloud](https://anaconda.org/) +[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 diff --git a/build-locally.py b/build-locally.py index 3f4b7a79..e0d408d0 100755 --- a/build-locally.py +++ b/build-locally.py @@ -64,8 +64,9 @@ def verify_config(ns): elif ns.config.startswith("osx"): if "OSX_SDK_DIR" not in os.environ: raise RuntimeError( - "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=SDKs' " - "to download the SDK automatically to 'SDKs/MacOSX.sdk'. " + "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " + "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " + "Note: OSX_SDK_DIR must be set to an absolute path. " "Setting this variable implies agreement to the licensing terms of the SDK by Apple." ) diff --git a/conda-forge.yml b/conda-forge.yml index a624268e..4f8f38b0 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -2,16 +2,16 @@ bot: abi_migration_branches: - 15.x - 14.x -provider: {linux_aarch64: default, linux_ppc64le: default} -travis: - osx_image: xcode6.4 -conda_forge_output_validation: true build_platform: osx_arm64: osx_64 +conda_build: + pkg_format: '2' +conda_forge_output_validation: true channel_priority: flexible github: branch_name: main tooling_branch_name: main -conda_build: - pkg_format: '2' +provider: + linux_aarch64: default + linux_ppc64le: default test: native_and_emulated diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index ca8f85bc..21ce79ae 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -10,8 +10,13 @@ c_compiler_version: # [linux] cxx_compiler_version: # [linux] - 12 # [linux] -MACOSX_SDK_VERSION: # [osx and x86_64] - - 10.14 # [osx and x86_64] +c_stdlib_version: # [linux or (osx and x86_64)] + # actually would need >=2.24, but we don't have that in conda-forge yet + - "2.17" # [linux] + - "10.13" # [osx and x86_64] + +MACOSX_SDK_VERSION: # [osx and x86_64] + - "10.14" # [osx and x86_64] dummy_var: # [osx] - 0 # [osx and x86_64] diff --git a/recipe/meta.yaml b/recipe/meta.yaml index b14e2ed5..c2359057 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "16.0.6" %} +{% set version = "17.0.6" %} package: name: libcxx_and_libcxxabi @@ -6,17 +6,17 @@ package: source: - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version.replace(".rc", "-rc") }}/llvm-project-{{ version.replace(".rc", "rc") }}.src.tar.xz - sha256: ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e + sha256: 58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813 patches: - - patches/0001-libcxxabi-10.9-compatibility.patch # [osx and x86_64] - - patches/0002-Support-legacy-standalone-builds.patch + - patches/0001-Support-legacy-standalone-builds.patch # See https://lists.llvm.org/pipermail/libcxx-dev/2021-July/001172.html - - patches/0003-Fix-ABI-compatibility-with-system.patch - - patches/0004-custom-error-message-for-old-sdk.patch + - patches/0002-Fix-ABI-compatibility-with-system.patch + - patches/0003-custom-error-message-for-old-sdk.patch # upstream removed fallbacks in case the underlying libc didn't support C11 in # https://github.com/llvm/llvm-project/commit/21f73d5826fb5024a27eaacafadfa316f58949c5; - # however, it seems that the then-required using_if_exists does not work as desired yet - - patches/0005-Revert-libc-Remove-workaround-for-C11-features-on-co.patch + # using new libcxx with old clang versions (beyond what upstream supports) relies on + # having these fallbacks in place. Drop if conflict-resolution becomes too messy. + - patches/0004-Revert-libc-Remove-workaround-for-C11-features-on-co.patch build: number: 0 @@ -32,6 +32,7 @@ requirements: - cmake - ninja - {{ compiler('cxx') }} + - {{ stdlib('c') }} - python >3 # [not osx] host: - clangdev {{ version }} # [not osx] @@ -51,9 +52,12 @@ outputs: requirements: build: - {{ compiler('cxx') }} + - {{ stdlib('c') }} host: run: - {{ pin_subpackage("libcxxabi", exact=True) }} # [linux] + run_constrained: + - sysroot_{{ target_platform }} >={{ c_stdlib_version }} # [linux] test: requires: - clang # [osx] @@ -74,10 +78,10 @@ outputs: - bash compile_test.sh # [unix] - compile_test.bat # [win] # make sure we inserted link to our docs wherever it is necessary; - # i.e. everywhere there's a string "availability(macos,...,introduced=)" for osx version >10.9; + # i.e. everywhere there's a string "availability(macos,...,introduced=)" for osx version >10.13; # 'grep -v' inverts the match but returns non-zero exit code if no lines are returned; so we use 'wc -l'; - # we want to have zero lines that don't either: contain the link or are for 10.9 - - if [ 0 -eq $(cat ${PREFIX}/include/c++/v1/__availability | grep "availability(macos" | grep -vE "(conda-forge|10.9)" | wc -l) ]; then exit 0; else exit 1; fi # [osx] + # we want to have zero lines that don't either: contain our link or are for <=10.13 (lowest occurring in that file is 10.9) + - if [ 0 -eq $(cat ${PREFIX}/include/c++/v1/__availability | grep "availability(macos" | grep -vE "(conda-forge|10.9|10.1[0-3])" | wc -l) ]; then exit 0; else exit 1; fi # [osx] # !!!!!!!!!!!! README !!!!!!!!!!!!!!!!!! # we do not ship libcxxabi on OSX - this breaks exception passing - if [ -f $PREFIX/lib/libc++abi.dylib ]; then exit 1; fi # [osx] @@ -90,6 +94,8 @@ outputs: - openturns # [osx] # test current libcxx against old clang builds; # version correspondence is 0.{{ CLANG_MAJOR }} + - libcxx-testing 0.18 # [osx] + - libcxx-testing 0.17 # [osx] - libcxx-testing 0.16 # [osx] - libcxx-testing 0.15 # [osx] - libcxx-testing 0.14 # [osx] diff --git a/recipe/patches/0002-Support-legacy-standalone-builds.patch b/recipe/patches/0001-Support-legacy-standalone-builds.patch similarity index 85% rename from recipe/patches/0002-Support-legacy-standalone-builds.patch rename to recipe/patches/0001-Support-legacy-standalone-builds.patch index 2ce40421..eaa6e0e3 100644 --- a/recipe/patches/0002-Support-legacy-standalone-builds.patch +++ b/recipe/patches/0001-Support-legacy-standalone-builds.patch @@ -1,17 +1,17 @@ -From d29448d3a9f777674c2aea03ebbdba6bb245e97e Mon Sep 17 00:00:00 2001 +From d29ac5318e8e94e0365f6f93547d1b6e97ac48e4 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 18 May 2021 19:51:28 -0500 -Subject: [PATCH 2/5] Support legacy standalone builds +Subject: [PATCH 1/4] Support legacy standalone builds --- libcxx/src/CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt -index 9abf548abb..3f155af09e 100644 +index 35b466527096..720a4b65b83c 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt -@@ -236,6 +236,23 @@ if (LIBCXX_ENABLE_SHARED) +@@ -235,6 +235,23 @@ if (LIBCXX_ENABLE_SHARED) "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp") target_link_libraries(cxx_shared PRIVATE $) @@ -35,6 +35,3 @@ index 9abf548abb..3f155af09e 100644 endif() # Generate a linker script in place of a libc++.so symlink. --- -2.38.1.windows.1 - diff --git a/recipe/patches/0001-libcxxabi-10.9-compatibility.patch b/recipe/patches/0001-libcxxabi-10.9-compatibility.patch deleted file mode 100644 index d9600079..00000000 --- a/recipe/patches/0001-libcxxabi-10.9-compatibility.patch +++ /dev/null @@ -1,28 +0,0 @@ -From d5004a2bf64156684a7a2a113b2a2d9fa4bd153e Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 8 Aug 2020 15:52:31 +0000 -Subject: [PATCH 1/5] libcxxabi 10.9 compatibility - ---- - libcxx/src/support/runtime/exception_libcxxabi.ipp | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/libcxx/src/support/runtime/exception_libcxxabi.ipp b/libcxx/src/support/runtime/exception_libcxxabi.ipp -index ee15e437e6..8933a9b747 100644 ---- a/libcxx/src/support/runtime/exception_libcxxabi.ipp -+++ b/libcxx/src/support/runtime/exception_libcxxabi.ipp -@@ -17,11 +17,7 @@ bool uncaught_exception() noexcept { return uncaught_exceptions() > 0; } - - int uncaught_exceptions() noexcept - { --# if _LIBCPPABI_VERSION > 1001 -- return __cxa_uncaught_exceptions(); --# else - return __cxa_uncaught_exception() ? 1 : 0; --# endif - } - - } // namespace std --- -2.38.1.windows.1 - diff --git a/recipe/patches/0003-Fix-ABI-compatibility-with-system.patch b/recipe/patches/0002-Fix-ABI-compatibility-with-system.patch similarity index 81% rename from recipe/patches/0003-Fix-ABI-compatibility-with-system.patch rename to recipe/patches/0002-Fix-ABI-compatibility-with-system.patch index 84b63b70..033290c1 100644 --- a/recipe/patches/0003-Fix-ABI-compatibility-with-system.patch +++ b/recipe/patches/0002-Fix-ABI-compatibility-with-system.patch @@ -1,17 +1,17 @@ -From e30718656c41bd624ddd9895fb9f6e64ed4c2ab5 Mon Sep 17 00:00:00 2001 +From 123217eff2d5ceec3a0d7578d2c1256be6dc1943 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 13 Jul 2021 01:57:06 -0500 -Subject: [PATCH 3/5] Fix ABI compatibility with system +Subject: [PATCH 2/4] Fix ABI compatibility with system --- libcxx/src/locale.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp -index 6b454274e1..5e601e133a 100644 +index bd70a27be4ef..a2062e5d3f53 100644 --- a/libcxx/src/locale.cpp +++ b/libcxx/src/locale.cpp -@@ -194,10 +194,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_PUSH +@@ -193,10 +193,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_PUSH install(&make >(1u)); install(&make >(1u)); _LIBCPP_SUPPRESS_DEPRECATED_POP @@ -22,7 +22,7 @@ index 6b454274e1..5e601e133a 100644 install(&make >(1u)); #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS install(&make >(1u)); -@@ -236,6 +232,10 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP +@@ -235,6 +231,10 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS install(&make<_VSTD::messages >(1u)); #endif @@ -33,7 +33,7 @@ index 6b454274e1..5e601e133a 100644 } locale::__imp::__imp(const string& name, size_t refs) -@@ -267,10 +267,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_PUSH +@@ -266,10 +266,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_PUSH install(new codecvt_byname(name_)); install(new codecvt_byname(name_)); _LIBCPP_SUPPRESS_DEPRECATED_POP @@ -44,7 +44,7 @@ index 6b454274e1..5e601e133a 100644 install(new numpunct_byname(name_)); #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS install(new numpunct_byname(name_)); -@@ -293,6 +289,10 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP +@@ -292,6 +288,10 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS install(new messages_byname(name_)); #endif @@ -52,9 +52,6 @@ index 6b454274e1..5e601e133a 100644 + install(new codecvt_byname(name_)); + install(new codecvt_byname(name_)); +#endif - #ifndef _LIBCPP_NO_EXCEPTIONS + #ifndef _LIBCPP_HAS_NO_EXCEPTIONS } catch (...) --- -2.38.1.windows.1 - diff --git a/recipe/patches/0003-custom-error-message-for-old-sdk.patch b/recipe/patches/0003-custom-error-message-for-old-sdk.patch new file mode 100644 index 00000000..b3dd9c60 --- /dev/null +++ b/recipe/patches/0003-custom-error-message-for-old-sdk.patch @@ -0,0 +1,55 @@ +From 54fcf64308c718b275629a28678dcfcc90014205 Mon Sep 17 00:00:00 2001 +From: Isuru Fernando +Date: Wed, 29 Dec 2021 19:28:35 -0800 +Subject: [PATCH 3/4] custom error message for old sdk + +--- + libcxx/include/__availability | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/libcxx/include/__availability b/libcxx/include/__availability +index 7807f22b716f..94f6e070b936 100644 +--- a/libcxx/include/__availability ++++ b/libcxx/include/__availability +@@ -279,12 +279,12 @@ + # define _LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM_LIBRARY + # endif + # define _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY \ +- __attribute__((availability(macos,strict,introduced=10.15))) \ ++ __attribute__((availability(macos,strict,introduced=10.15,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ + __attribute__((availability(ios,strict,introduced=13.0))) \ + __attribute__((availability(tvos,strict,introduced=13.0))) \ + __attribute__((availability(watchos,strict,introduced=6.0))) + # define _LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH \ +- _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15))), apply_to=any(function,record))") \ ++ _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15,message=\"see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk\"))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") +@@ -302,7 +302,7 @@ + # define _LIBCPP_AVAILABILITY_HAS_NO_TO_CHARS_FLOATING_POINT + # endif + # define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT \ +- __attribute__((availability(macos,strict,introduced=13.3))) \ ++ __attribute__((availability(macos,strict,introduced=13.3,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ + __attribute__((availability(ios,strict,introduced=16.3))) \ + __attribute__((availability(tvos,strict,introduced=16.3))) \ + __attribute__((availability(watchos,strict,introduced=9.3))) +@@ -315,7 +315,7 @@ + # define _LIBCPP_AVAILABILITY_HAS_NO_SYNC + # endif + # define _LIBCPP_AVAILABILITY_SYNC \ +- __attribute__((availability(macos,strict,introduced=11.0))) \ ++ __attribute__((availability(macos,strict,introduced=11.0,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ + __attribute__((availability(ios,strict,introduced=14.0))) \ + __attribute__((availability(tvos,strict,introduced=14.0))) \ + __attribute__((availability(watchos,strict,introduced=7.0))) +@@ -340,7 +340,7 @@ + // use availability annotations until that bug has been fixed. + # if 0 + # define _LIBCPP_AVAILABILITY_PMR \ +- __attribute__((availability(macos, strict, introduced = 14.0))) \ ++ __attribute__((availability(macos, strict, introduced = 14.0,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ + __attribute__((availability(ios, strict, introduced = 17.0))) \ + __attribute__((availability(tvos, strict, introduced = 17.0))) \ + __attribute__((availability(watchos, strict, introduced = 10.0))) diff --git a/recipe/patches/0005-Revert-libc-Remove-workaround-for-C11-features-on-co.patch b/recipe/patches/0004-Revert-libc-Remove-workaround-for-C11-features-on-co.patch similarity index 86% rename from recipe/patches/0005-Revert-libc-Remove-workaround-for-C11-features-on-co.patch rename to recipe/patches/0004-Revert-libc-Remove-workaround-for-C11-features-on-co.patch index 85196bc0..ba0bec89 100644 --- a/recipe/patches/0005-Revert-libc-Remove-workaround-for-C11-features-on-co.patch +++ b/recipe/patches/0004-Revert-libc-Remove-workaround-for-C11-features-on-co.patch @@ -1,7 +1,7 @@ -From 9a092badf837696b3923197b6c0d9b10b1cfcb90 Mon Sep 17 00:00:00 2001 +From 428205712f3ebd4efb7b0ea71d9fa45e0b28fece Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Wed, 8 Feb 2023 16:44:15 +1100 -Subject: [PATCH 5/5] Revert "[libc++] Remove workaround for C11 features on +Subject: [PATCH 4/4] Revert "[libc++] Remove workaround for C11 features on compilers that don't support using_if_exists" This reverts commit 21f73d5826fb5024a27eaacafadfa316f58949c5. @@ -12,10 +12,10 @@ This reverts commit 21f73d5826fb5024a27eaacafadfa316f58949c5. 3 files changed, 84 insertions(+), 4 deletions(-) diff --git a/libcxx/include/__config b/libcxx/include/__config -index 810189c94a..d93059de6e 100644 +index 9759d3b9e8e0..9a27abe3367b 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config -@@ -410,6 +410,72 @@ If there are users of this configuration we are happy to provide support. +@@ -556,6 +556,72 @@ # define _LIBCPP_NO_CFI # endif @@ -89,10 +89,10 @@ index 810189c94a..d93059de6e 100644 # define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp) diff --git a/libcxx/include/cstdlib b/libcxx/include/cstdlib -index 457c31f625..27ca7aa010 100644 +index ab2c159c7259..44a6f6a5dc36 100644 --- a/libcxx/include/cstdlib +++ b/libcxx/include/cstdlib -@@ -131,11 +131,11 @@ using ::mbtowc _LIBCPP_USING_IF_EXISTS; +@@ -140,11 +140,11 @@ using ::mbtowc _LIBCPP_USING_IF_EXISTS; using ::wctomb _LIBCPP_USING_IF_EXISTS; using ::mbstowcs _LIBCPP_USING_IF_EXISTS; using ::wcstombs _LIBCPP_USING_IF_EXISTS; @@ -101,16 +101,16 @@ index 457c31f625..27ca7aa010 100644 using ::at_quick_exit _LIBCPP_USING_IF_EXISTS; using ::quick_exit _LIBCPP_USING_IF_EXISTS; #endif --#if _LIBCPP_STD_VER > 14 -+#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_ALIGNED_ALLOC) +-#if _LIBCPP_STD_VER >= 17 ++#if _LIBCPP_STD_VER >= 17 && defined(_LIBCPP_HAS_ALIGNED_ALLOC) using ::aligned_alloc _LIBCPP_USING_IF_EXISTS; #endif diff --git a/libcxx/include/ctime b/libcxx/include/ctime -index 0c6e4dfd6f..120af5ed83 100644 +index b61e19d6446d..6b48da7a7e4b 100644 --- a/libcxx/include/ctime +++ b/libcxx/include/ctime -@@ -53,13 +53,27 @@ int timespec_get( struct timespec *ts, int base); // C++17 +@@ -60,13 +60,27 @@ int timespec_get( struct timespec *ts, int base); // C++17 # pragma GCC system_header #endif @@ -134,20 +134,17 @@ index 0c6e4dfd6f..120af5ed83 100644 using ::size_t _LIBCPP_USING_IF_EXISTS; using ::time_t _LIBCPP_USING_IF_EXISTS; using ::tm _LIBCPP_USING_IF_EXISTS; --#if _LIBCPP_STD_VER > 14 -+#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET) +-#if _LIBCPP_STD_VER >= 17 ++#if _LIBCPP_STD_VER >= 17 && defined(_LIBCPP_HAS_TIMESPEC_GET) using ::timespec _LIBCPP_USING_IF_EXISTS; #endif using ::clock _LIBCPP_USING_IF_EXISTS; -@@ -71,7 +85,7 @@ using ::ctime _LIBCPP_USING_IF_EXISTS; +@@ -78,7 +92,7 @@ using ::ctime _LIBCPP_USING_IF_EXISTS; using ::gmtime _LIBCPP_USING_IF_EXISTS; using ::localtime _LIBCPP_USING_IF_EXISTS; using ::strftime _LIBCPP_USING_IF_EXISTS; --#if _LIBCPP_STD_VER > 14 -+#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET) && !defined(_LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED) +-#if _LIBCPP_STD_VER >= 17 ++#if _LIBCPP_STD_VER >= 17 && defined(_LIBCPP_HAS_TIMESPEC_GET) && !defined(_LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED) using ::timespec_get _LIBCPP_USING_IF_EXISTS; #endif --- -2.38.1.windows.1 - diff --git a/recipe/patches/0004-custom-error-message-for-old-sdk.patch b/recipe/patches/0004-custom-error-message-for-old-sdk.patch deleted file mode 100644 index 29a688fa..00000000 --- a/recipe/patches/0004-custom-error-message-for-old-sdk.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 9de9a236743b024d49e3311a582bae90435aa5dc Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Wed, 29 Dec 2021 19:28:35 -0800 -Subject: [PATCH 4/5] custom error message for old sdk - ---- - libcxx/include/__availability | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/libcxx/include/__availability b/libcxx/include/__availability -index 72ff663334..f60220a29c 100644 ---- a/libcxx/include/__availability -+++ b/libcxx/include/__availability -@@ -175,7 +175,7 @@ - #elif defined(__APPLE__) - - # define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ -- __attribute__((availability(macos,strict,introduced=10.12))) \ -+ __attribute__((availability(macos,strict,introduced=10.12,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -@@ -191,7 +191,7 @@ - // macOS and iOS versions, so the version mismatch between macOS and others - // is intended. - # define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \ -- __attribute__((availability(macos,strict,introduced=10.13))) \ -+ __attribute__((availability(macos,strict,introduced=10.13,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=12.0))) \ - __attribute__((availability(tvos,strict,introduced=12.0))) \ - __attribute__((availability(watchos,strict,introduced=5.0))) -@@ -201,13 +201,13 @@ - _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS - - # define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ -- __attribute__((availability(macos,strict,introduced=10.12))) \ -+ __attribute__((availability(macos,strict,introduced=10.12,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) - - # define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ -- __attribute__((availability(macos,strict,introduced=10.12))) \ -+ __attribute__((availability(macos,strict,introduced=10.12,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -@@ -228,14 +228,14 @@ - __attribute__((availability(ios,strict,introduced=7.0))) - - # define _LIBCPP_AVAILABILITY_FILESYSTEM \ -- __attribute__((availability(macos,strict,introduced=10.15))) \ -+ __attribute__((availability(macos,strict,introduced=10.15,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=13.0))) \ - __attribute__((availability(tvos,strict,introduced=13.0))) \ - __attribute__((availability(watchos,strict,introduced=6.0))) - # define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH \ -- _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15))), apply_to=any(function,record))") \ -- _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ -- _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ -+ _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15,message=\"see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk\"))), apply_to=any(function,record))") \ -+ _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ -+ _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") - # define _LIBCPP_AVAILABILITY_FILESYSTEM_POP \ - _Pragma("clang attribute pop") \ -@@ -253,7 +253,7 @@ - __attribute__((unavailable)) - - # define _LIBCPP_AVAILABILITY_SYNC \ -- __attribute__((availability(macos,strict,introduced=11.0))) \ -+ __attribute__((availability(macos,strict,introduced=11.0,message="see https://conda-forge.org/docs/maintainer/knowledge_base.html#newer-c-features-with-old-sdk"))) \ - __attribute__((availability(ios,strict,introduced=14.0))) \ - __attribute__((availability(tvos,strict,introduced=14.0))) \ - __attribute__((availability(watchos,strict,introduced=7.0))) --- -2.38.1.windows.1 -