From e2391b2f7468132bb279e8b54e22b6cffab11184 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 10 May 2021 15:08:09 -0700 Subject: [PATCH 1/4] Use latest SDK --- recipe/conda_build_config.yaml | 2 ++ recipe/meta.yaml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index 00623e8f9..302402d5b 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -10,3 +10,5 @@ cxx_compiler: # [win] - vs2017 # [win] vc: # [win] - 14.1 # [win] +MACOSX_SDK_VERSION: # [osx and x86_64] + - 11.0 # [osx and x86_64] diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 58d1229bf..7a384bb28 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -78,7 +78,7 @@ source: sha256: 4872e72e188a5aa1124db0c3b163a4163e84ead359a514d86dd7c6fa2d2ff02a # [win] build: - number: 0 + number: 1 script_env: - PY_INTERP_LINKAGE_NATURE - PY_INTERP_DEBUG From 0194e390b5e9c212d785676bb951c1b3e8cdcca3 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 10 May 2021 15:09:38 -0700 Subject: [PATCH 2/4] MNT: Re-rendered with conda-build 3.21.4, conda-smithy 3.10.1, and conda-forge-pinning 2021.05.10.18.04.02 --- .ci_support/linux_64_.yaml | 4 +- .ci_support/linux_aarch64_.yaml | 2 +- .ci_support/linux_ppc64le_.yaml | 2 +- .ci_support/migrations/libffi33.yaml | 7 --- .ci_support/osx_64_.yaml | 4 +- .ci_support/osx_arm64_.yaml | 2 +- .github/CODEOWNERS | 2 +- .scripts/build_steps.sh | 29 ++++++++++-- .scripts/logging_utils.sh | 35 +++++++++++++++ .scripts/run_docker_build.sh | 27 +++++++++--- .scripts/run_osx_build.sh | 66 ++++++++++++++++------------ .travis.yml | 1 + LICENSE.txt | 2 +- README.md | 6 +-- build-locally.py | 27 ++++++++++-- 15 files changed, 159 insertions(+), 57 deletions(-) delete mode 100644 .ci_support/migrations/libffi33.yaml create mode 100644 .scripts/logging_utils.sh diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index d98c066bb..f55eceffb 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -47,7 +47,7 @@ pin_run_as_build: python: - '3.8' readline: -- '8.0' +- '8' sqlite: - '3' target_platform: @@ -59,5 +59,7 @@ xz: zip_keys: - - c_compiler_version - cxx_compiler_version +- - cdt_name + - docker_image zlib: - '1.2' diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index 452db15af..22d699308 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -51,7 +51,7 @@ pin_run_as_build: python: - '3.8' readline: -- '8.0' +- '8' sqlite: - '3' target_platform: diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index c3b40d28d..774465c2a 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -45,7 +45,7 @@ pin_run_as_build: python: - '3.8' readline: -- '8.0' +- '8' sqlite: - '3' target_platform: diff --git a/.ci_support/migrations/libffi33.yaml b/.ci_support/migrations/libffi33.yaml deleted file mode 100644 index 97cba7069..000000000 --- a/.ci_support/migrations/libffi33.yaml +++ /dev/null @@ -1,7 +0,0 @@ -__migrator: - build_number: 1 - kind: version - migration_number: 1 -libffi: -- '3.3' -migrator_ts: 1606336603.4597452 diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 33bcacd9a..43ba02ed4 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -1,5 +1,7 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' +MACOSX_SDK_VERSION: +- '11.0' bzip2: - '1' c_compiler: @@ -43,7 +45,7 @@ pin_run_as_build: python: - '3.8' readline: -- '8.0' +- '8' sqlite: - '3' target_platform: diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index b30ec02fa..740f07bc5 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -43,7 +43,7 @@ pin_run_as_build: python: - '3.8' readline: -- '8.0' +- '8' sqlite: - '3' target_platform: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c81dab00b..fe23d5f67 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @isuruf @jakirkham @mingwandroid @msarahan @ocefpaf @pelson @scopatz +* @isuruf @jakirkham @mingwandroid @msarahan @ocefpaf @pelson @scopatz \ No newline at end of file diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 7dd5260cd..28332b594 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -6,8 +6,15 @@ # benefit from the improvement. set -xeuo pipefail -export PYTHONUNBUFFERED=1 export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" +source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh + + +( endgroup "Start Docker" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null + +export PYTHONUNBUFFERED=1 export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" @@ -18,8 +25,9 @@ conda-build: root-dir: ${FEEDSTOCK_ROOT}/build_artifacts CONDARC +BUILD_CMD=build -conda install --yes --quiet "conda-forge-ci-setup=3" conda-build pip -c conda-forge +conda install --yes --quiet "conda-forge-ci-setup=3" conda-build pip ${GET_BOA:-} -c conda-forge # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" @@ -37,11 +45,13 @@ 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}" ]]; then +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi +( endgroup "Configuring conda" ) 2> /dev/null + if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}" @@ -49,17 +59,28 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then conda debug "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ ${EXTRA_CB_OPTIONS:-} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + # Drop into an interactive shell /bin/bash else - conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + conda $BUILD_CMD "${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 + validate_recipe_outputs "${FEEDSTOCK_NAME}" + ( endgroup "Validating outputs" ) 2> /dev/null + + ( startgroup "Uploading packages" ) 2> /dev/null + if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" fi + + ( endgroup "Uploading packages" ) 2> /dev/null fi +( startgroup "Final checks" ) 2> /dev/null + touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" \ No newline at end of file diff --git a/.scripts/logging_utils.sh b/.scripts/logging_utils.sh new file mode 100644 index 000000000..57bc95c24 --- /dev/null +++ b/.scripts/logging_utils.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Provide a unified interface for the different logging +# utilities CI providers offer. If unavailable, provide +# a compatible fallback (e.g. bare `echo xxxxxx`). + +function startgroup { + # Start a foldable group of log lines + # Pass a single argument, quoted + case ${CI:-} in + azure ) + echo "##[group]$1";; + travis ) + echo "$1" + echo -en 'travis_fold:start:'"${1// /}"'\\r';; + github_actions ) + echo "::group::$1";; + * ) + echo "$1";; + esac +} 2> /dev/null + +function endgroup { + # End a foldable group of log lines + # Pass a single argument, quoted + + case ${CI:-} in + azure ) + echo "##[endgroup]";; + travis ) + echo -en 'travis_fold:end:'"${1// /}"'\\r';; + github_actions ) + echo "::endgroup::";; + esac +} 2> /dev/null diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 87ba4db04..244ccd1f2 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -5,6 +5,10 @@ # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also # benefit from the improvement. +source .scripts/logging_utils.sh + +( startgroup "Configure Docker" ) 2> /dev/null + set -xeo pipefail THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" @@ -45,10 +49,14 @@ fi if [ -z "${DOCKER_IMAGE}" ]; then SHYAML_INSTALLED="$(shyaml -h || echo NO)" if [ "${SHYAML_INSTALLED}" == "NO" ]; then - echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Falling back to condaforge/linux-anvil-comp7" - DOCKER_IMAGE="condaforge/linux-anvil-comp7" + echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Trying to parse with coreutils" + DOCKER_IMAGE=$(cat .ci_support/${CONFIG}.yaml | grep '^docker_image:$' -A 1 | tail -n 1 | cut -b 3-) + if [ "${DOCKER_IMAGE}" = "" ]; then + echo "No docker_image entry found in ${CONFIG}. Falling back to quay.io/condaforge/linux-anvil-comp7" + DOCKER_IMAGE="quay.io/condaforge/linux-anvil-comp7" + fi else - DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil-comp7 )" + DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 quay.io/condaforge/linux-anvil-comp7 )" fi fi @@ -62,10 +70,14 @@ if [ -z "${CI}" ]; then DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" fi +( endgroup "Configure Docker" ) 2> /dev/null + +( startgroup "Start Docker" ) 2> /dev/null + export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" docker run ${DOCKER_RUN_ARGS} \ - -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z \ - -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \ + -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 \ @@ -84,4 +96,7 @@ docker run ${DOCKER_RUN_ARGS} \ /home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh # verify that the end of the script was reached -test -f "$DONE_CANARY" \ No newline at end of file +test -f "$DONE_CANARY" + +# This closes the last group opened in `build_steps.sh` +( endgroup "Final checks" ) 2> /dev/null \ No newline at end of file diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 3675dacfb..708b1e1fc 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,61 +1,73 @@ #!/usr/bin/env bash -set -x +source .scripts/logging_utils.sh + +set -xe + +MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3} + +( startgroup "Installing a fresh version of Miniforge" ) 2> /dev/null -echo -e "\n\nInstalling a fresh version of Miniforge." -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:start:install_miniforge\\r' -fi MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download" MINIFORGE_FILE="Miniforge3-MacOSX-x86_64.sh" curl -L -O "${MINIFORGE_URL}/${MINIFORGE_FILE}" -bash $MINIFORGE_FILE -b -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:end:install_miniforge\\r' -fi +bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} -echo -e "\n\nConfiguring conda." -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:start:configure_conda\\r' -fi +( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null -source ${HOME}/miniforge3/etc/profile.d/conda.sh +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 +conda install -n base --quiet --yes "conda-forge-ci-setup=3" conda-build pip ${GET_BOA:-} echo -e "\n\nSetting up the condarc and mangling the compiler." setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml -mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml -echo -e "\n\nMangling homebrew in the CI to avoid conflicts." -/usr/bin/sudo mangle_homebrew -/usr/bin/sudo -k +if [[ "${CI:-}" != "" ]]; then + mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml +fi + +if [[ "${CI:-}" != "" ]]; then + echo -e "\n\nMangling homebrew in the CI to avoid conflicts." + /usr/bin/sudo mangle_homebrew + /usr/bin/sudo -k +else + echo -e "\n\nNot mangling homebrew as we are not running in CI" +fi echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:end:configure_conda\\r' -fi -set -e +( endgroup "Configuring conda" ) 2> /dev/null -echo -e "\n\nMaking the build clobber file and running the build." + +echo -e "\n\nMaking the build clobber file" make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi -conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --suppress-variables --clobber-file ./.ci_support/clobber_${CONFIG}.yaml ${EXTRA_CB_OPTIONS:-} +conda $BUILD_CMD ./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}" +( endgroup "Validating outputs" ) 2> /dev/null + +( startgroup "Uploading packages" ) 2> /dev/null + if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then - echo -e "\n\nUploading the packages." upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml -fi \ No newline at end of file +fi + +( endgroup "Uploading packages" ) 2> /dev/null \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 6a7591ae9..ecb962dea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ matrix: - 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 diff --git a/LICENSE.txt b/LICENSE.txt index 5f302793a..ed3f451e6 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,5 @@ BSD 3-clause license -Copyright (c) 2015-2020, conda-forge contributors +Copyright (c) 2015-2021, 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 d16d415e7..a7d4cf6e8 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,7 @@ Installing `python` from the `conda-forge` channel can be achieved by adding `co ``` conda config --add channels conda-forge +conda config --set channel_priority strict ``` Once the `conda-forge` channel has been enabled, `libpython-static, python` can be installed with: @@ -187,9 +188,9 @@ build distinct package versions. In order to produce a uniquely identifiable distribution: * If the version of a package **is not** being increased, please add or increase - the [``build/number``](https://conda.io/docs/user-guide/tasks/build-packages/define-metadata.html#build-number-and-string). + the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string). * If the version of a package **is** being increased, please remember to return - the [``build/number``](https://conda.io/docs/user-guide/tasks/build-packages/define-metadata.html#build-number-and-string) + the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string) back to 0. Feedstock Maintainers @@ -197,7 +198,6 @@ Feedstock Maintainers * [@isuruf](https://github.com/isuruf/) * [@jakirkham](https://github.com/jakirkham/) -* [@jjhelmus](https://github.com/jjhelmus/) * [@mingwandroid](https://github.com/mingwandroid/) * [@msarahan](https://github.com/msarahan/) * [@ocefpaf](https://github.com/ocefpaf/) diff --git a/build-locally.py b/build-locally.py index 3453cfe68..00eeb34b1 100755 --- a/build-locally.py +++ b/build-locally.py @@ -7,6 +7,7 @@ import glob import subprocess from argparse import ArgumentParser +import platform def setup_environment(ns): @@ -16,6 +17,10 @@ def setup_environment(ns): os.environ["BUILD_WITH_CONDA_DEBUG"] = "1" if ns.output_id: os.environ["BUILD_OUTPUT_ID"] = ns.output_id + if "MINIFORGE_HOME" not in os.environ: + os.environ["MINIFORGE_HOME"] = os.path.join( + os.path.dirname(__file__), "miniforge3" + ) def run_docker_build(ns): @@ -23,6 +28,11 @@ def run_docker_build(ns): subprocess.check_call([script]) +def run_osx_build(ns): + script = ".scripts/run_osx_build.sh" + subprocess.check_call([script]) + + def verify_config(ns): valid_configs = { os.path.basename(f)[:-5] for f in glob.glob(".ci_support/*.yaml") @@ -46,10 +56,16 @@ def verify_config(ns): else: raise ValueError("config " + ns.config + " is not valid") # Remove the following, as implemented - if not ns.config.startswith("linux"): + if ns.config.startswith("win"): raise ValueError( - f"only Linux configs currently supported, got {ns.config}" + f"only Linux/macOS configs currently supported, got {ns.config}" ) + elif ns.config.startswith("osx") and platform.system() == "Darwin": + if "OSX_SDK_DIR" not in os.environ: + raise RuntimeError( + "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=/opt'" + "to download the SDK automatically to '/opt/MacOSX.sdk'" + ) def main(args=None): @@ -68,7 +84,12 @@ def main(args=None): verify_config(ns) setup_environment(ns) - run_docker_build(ns) + if ns.config.startswith("linux") or ( + ns.config.startswith("osx") and platform.system() == "Linux" + ): + run_docker_build(ns) + elif ns.config.startswith("osx"): + run_osx_build(ns) if __name__ == "__main__": From f44b5ddee4418ad8b4755db30d406bea70849cd2 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 10 May 2021 20:28:37 -0500 Subject: [PATCH 3/4] link ctypes to coreFoundation --- recipe/meta.yaml | 1 + .../0032-ctypes-link-to-coreFoundation.patch | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 recipe/patches/0032-ctypes-link-to-coreFoundation.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 7a384bb28..271826344 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -45,6 +45,7 @@ source: - patches/0022-Add-CondaEcosystemModifyDllSearchPath.patch - patches/0023-Revert-part-of-https-bugs.python.org-issue33895-http.patch - patches/0024-cross-compile-darwin.patch.patch + - patches/0032-ctypes-link-to-coreFoundation.patch # TODO :: Depend on our own packages for these: - url: https://github.com/python/cpython-source-deps/archive/xz-5.2.2.zip # [win] diff --git a/recipe/patches/0032-ctypes-link-to-coreFoundation.patch b/recipe/patches/0032-ctypes-link-to-coreFoundation.patch new file mode 100644 index 000000000..d041b6cf1 --- /dev/null +++ b/recipe/patches/0032-ctypes-link-to-coreFoundation.patch @@ -0,0 +1,26 @@ +From 0a21e0418092d6adfc68f02624336787ea9b4043 Mon Sep 17 00:00:00 2001 +From: Isuru Fernando +Date: Mon, 10 May 2021 20:24:59 -0500 +Subject: [PATCH] ctypes: link to coreFoundation + +3.8.10 uses __builtin_available and it needs CoreFoundation linked in. +See https://github.com/llvm/llvm-project/blob/llvmorg-11.1.0/clang/lib/CodeGen/CGObjC.cpp#L3767-L3780 +--- + setup.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/setup.py b/setup.py +index e3e5e0f5fc..d943e84b89 100644 +--- a/setup.py ++++ b/setup.py +@@ -1974,6 +1974,7 @@ class PyBuildExt(build_ext): + extra_compile_args.append('-DUSING_MALLOC_CLOSURE_DOT_C=1') + extra_compile_args.append('-DMACOSX') + include_dirs.append('_ctypes/darwin') ++ extra_compile_args.extend(['-framework', 'CoreFoundation']) + + elif HOST_PLATFORM == 'sunos5': + # XXX This shouldn't be necessary; it appears that some +-- +2.28.0 + From c20ed33242083961dbe5fba3502ff9f97589f1bb Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 11 May 2021 00:11:32 -0500 Subject: [PATCH 4/4] Update 0032-ctypes-link-to-coreFoundation.patch --- recipe/patches/0032-ctypes-link-to-coreFoundation.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/patches/0032-ctypes-link-to-coreFoundation.patch b/recipe/patches/0032-ctypes-link-to-coreFoundation.patch index d041b6cf1..b078ae4fd 100644 --- a/recipe/patches/0032-ctypes-link-to-coreFoundation.patch +++ b/recipe/patches/0032-ctypes-link-to-coreFoundation.patch @@ -17,7 +17,7 @@ index e3e5e0f5fc..d943e84b89 100644 extra_compile_args.append('-DUSING_MALLOC_CLOSURE_DOT_C=1') extra_compile_args.append('-DMACOSX') include_dirs.append('_ctypes/darwin') -+ extra_compile_args.extend(['-framework', 'CoreFoundation']) ++ extra_link_args.extend(['-framework', 'CoreFoundation']) elif HOST_PLATFORM == 'sunos5': # XXX This shouldn't be necessary; it appears that some