diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 2ab3d02..447991a 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -8,23 +8,26 @@ jobs: vmImage: ubuntu-16.04 strategy: matrix: - linux_64_numpy1.16python3.6.____cpython: - CONFIG: linux_64_numpy1.16python3.6.____cpython + linux_64_numpy1.17python3.6.____cpython: + CONFIG: linux_64_numpy1.17python3.6.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: condaforge/linux-anvil-comp7 - linux_64_numpy1.16python3.7.____cpython: - CONFIG: linux_64_numpy1.16python3.7.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + linux_64_numpy1.17python3.7.____cpython: + CONFIG: linux_64_numpy1.17python3.7.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: condaforge/linux-anvil-comp7 - linux_64_numpy1.16python3.8.____cpython: - CONFIG: linux_64_numpy1.16python3.8.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + linux_64_numpy1.17python3.8.____cpython: + CONFIG: linux_64_numpy1.17python3.8.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: condaforge/linux-anvil-comp7 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 linux_64_numpy1.18python3.6.____73_pypy: CONFIG: linux_64_numpy1.18python3.6.____73_pypy UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: condaforge/linux-anvil-comp7 - maxParallel: 8 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + linux_64_numpy1.19python3.9.____cpython: + CONFIG: linux_64_numpy1.19python3.9.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 timeoutInMinutes: 360 steps: diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 6eb9bf2..0da7b32 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -8,19 +8,21 @@ jobs: vmImage: macOS-10.15 strategy: matrix: - osx_64_numpy1.16python3.6.____cpython: - CONFIG: osx_64_numpy1.16python3.6.____cpython + osx_64_numpy1.17python3.6.____cpython: + CONFIG: osx_64_numpy1.17python3.6.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.7.____cpython: - CONFIG: osx_64_numpy1.16python3.7.____cpython + osx_64_numpy1.17python3.7.____cpython: + CONFIG: osx_64_numpy1.17python3.7.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.8.____cpython: - CONFIG: osx_64_numpy1.16python3.8.____cpython + osx_64_numpy1.17python3.8.____cpython: + CONFIG: osx_64_numpy1.17python3.8.____cpython UPLOAD_PACKAGES: 'True' osx_64_numpy1.18python3.6.____73_pypy: CONFIG: osx_64_numpy1.18python3.6.____73_pypy UPLOAD_PACKAGES: 'True' - maxParallel: 8 + osx_64_numpy1.19python3.9.____cpython: + CONFIG: osx_64_numpy1.19python3.9.____cpython + UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 steps: diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index dc9b498..f993336 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -8,16 +8,18 @@ jobs: vmImage: vs2017-win2016 strategy: matrix: - win_64_python3.6.____cpython: - CONFIG: win_64_python3.6.____cpython + win_64_numpy1.17python3.6.____cpython: + CONFIG: win_64_numpy1.17python3.6.____cpython UPLOAD_PACKAGES: 'True' - win_64_python3.7.____cpython: - CONFIG: win_64_python3.7.____cpython + win_64_numpy1.17python3.7.____cpython: + CONFIG: win_64_numpy1.17python3.7.____cpython UPLOAD_PACKAGES: 'True' - win_64_python3.8.____cpython: - CONFIG: win_64_python3.8.____cpython + win_64_numpy1.17python3.8.____cpython: + CONFIG: win_64_numpy1.17python3.8.____cpython + UPLOAD_PACKAGES: 'True' + win_64_numpy1.19python3.9.____cpython: + CONFIG: win_64_numpy1.19python3.9.____cpython UPLOAD_PACKAGES: 'True' - maxParallel: 4 timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ @@ -59,7 +61,7 @@ jobs: - task: CondaEnvironment@1 inputs: - packageSpecs: 'python=3.6 conda-build conda conda-forge::conda-forge-ci-setup=3 pip' # Optional + packageSpecs: 'python=3.6 conda-build conda "conda-forge-ci-setup=3" pip' # Optional installOptions: "-c conda-forge" updateConda: true displayName: Install conda-build and activate environment diff --git a/.ci_support/linux_64_numpy1.16python3.6.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.6.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.6.____cpython.yaml index 1dd1d07..66314f0 100644 --- a/.ci_support/linux_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.6.____cpython.yaml @@ -1,7 +1,9 @@ c_compiler: - gcc c_compiler_version: -- '7' +- '9' +cdt_name: +- cos6 channel_sources: - conda-forge,defaults channel_targets: @@ -9,11 +11,11 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '9' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -23,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - cdt_name + - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.7.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.7.____cpython.yaml index 52d46a2..c0263f7 100644 --- a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.7.____cpython.yaml @@ -1,7 +1,9 @@ c_compiler: - gcc c_compiler_version: -- '7' +- '9' +cdt_name: +- cos6 channel_sources: - conda-forge,defaults channel_targets: @@ -9,11 +11,11 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '9' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -23,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - cdt_name + - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.8.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.8.____cpython.yaml index 175f34b..798fb87 100644 --- a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.8.____cpython.yaml @@ -1,7 +1,9 @@ c_compiler: - gcc c_compiler_version: -- '7' +- '9' +cdt_name: +- cos6 channel_sources: - conda-forge,defaults channel_targets: @@ -9,11 +11,11 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '9' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -23,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - cdt_name + - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_numpy1.18python3.6.____73_pypy.yaml b/.ci_support/linux_64_numpy1.18python3.6.____73_pypy.yaml index a51a102..7679a48 100644 --- a/.ci_support/linux_64_numpy1.18python3.6.____73_pypy.yaml +++ b/.ci_support/linux_64_numpy1.18python3.6.____73_pypy.yaml @@ -1,7 +1,9 @@ c_compiler: - gcc c_compiler_version: -- '7' +- '9' +cdt_name: +- cos6 channel_sources: - conda-forge,defaults channel_targets: @@ -9,9 +11,9 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '9' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 numpy: - '1.18' pin_run_as_build: @@ -23,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - cdt_name + - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml new file mode 100644 index 0000000..0c64032 --- /dev/null +++ b/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml @@ -0,0 +1,33 @@ +c_compiler: +- gcc +c_compiler_version: +- '9' +cdt_name: +- cos6 +channel_sources: +- conda-forge,defaults +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '9' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 +numpy: +- '1.19' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +target_platform: +- linux-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - cdt_name + - docker_image +- - python + - numpy diff --git a/.ci_support/migrations/python38.yaml b/.ci_support/migrations/python38.yaml deleted file mode 100644 index b11022c..0000000 --- a/.ci_support/migrations/python38.yaml +++ /dev/null @@ -1,55 +0,0 @@ -migrator_ts: 1569538102 # The timestamp of when the migration was made -__migrator: - kind: - version - exclude: - - c_compiler - - vc - - cxx_compiler - migration_number: # Only use this if the bot messes up, putting this in will cause a complete rerun of the migration - 1 - bump_number: 0 - -python: - - 2.7 - - 3.6 - - 3.7 - - 3.8 - -c_compiler: - # legacy compilers for things that refuse to move - - toolchain_c # [(linux64 or osx) and (environ.get('CF_COMPILER_STACK') == 'comp4')] - # modern compilers - - gcc # [linux64] - - clang # [osx] - # non-standard arches get built with gcc - - gcc # [aarch64] - - gcc # [ppc64le] - - gcc # [armv7l] - - - vs2008 # [win] - - vs2015 # [win] - - vs2015 # [win] - - vs2015 # [win] - -cxx_compiler: - # legacy compilers for things that refuse to move - - toolchain_cxx # [(linux64 or osx) and (environ.get('CF_COMPILER_STACK') == 'comp4')] - # modern compilers - - gxx # [linux64] - - clangxx # [osx] - - - gxx # [aarch64] - - gxx # [ppc64le] - - gxx # [armv7l] - - - vs2008 # [win] - - vs2015 # [win] - - vs2015 # [win] - - vs2015 # [win] - -vc: # [win] - - 9 # [win] - - 14 # [win] - - 14 # [win] - - 14 # [win] diff --git a/.ci_support/osx_64_numpy1.16python3.6.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.6.____cpython.yaml similarity index 80% rename from .ci_support/osx_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.6.____cpython.yaml index dae8f4b..dd6aa45 100644 --- a/.ci_support/osx_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.6.____cpython.yaml @@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '10' +- '11' channel_sources: - conda-forge,defaults channel_targets: @@ -11,13 +11,11 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '10' +- '11' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -27,5 +25,7 @@ python: target_platform: - osx-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.7.____cpython.yaml similarity index 80% rename from .ci_support/osx_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.7.____cpython.yaml index 73a8a77..ec5c607 100644 --- a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.7.____cpython.yaml @@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '10' +- '11' channel_sources: - conda-forge,defaults channel_targets: @@ -11,13 +11,11 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '10' +- '11' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -27,5 +25,7 @@ python: target_platform: - osx-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.8.____cpython.yaml similarity index 80% rename from .ci_support/osx_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.8.____cpython.yaml index 16d16e9..610cb2e 100644 --- a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.8.____cpython.yaml @@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '10' +- '11' channel_sources: - conda-forge,defaults channel_targets: @@ -11,13 +11,11 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '10' +- '11' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -27,5 +25,7 @@ python: target_platform: - osx-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_numpy1.18python3.6.____73_pypy.yaml b/.ci_support/osx_64_numpy1.18python3.6.____73_pypy.yaml index fbe58e8..5e2c139 100644 --- a/.ci_support/osx_64_numpy1.18python3.6.____73_pypy.yaml +++ b/.ci_support/osx_64_numpy1.18python3.6.____73_pypy.yaml @@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '10' +- '11' channel_sources: - conda-forge,defaults channel_targets: @@ -11,11 +11,9 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '10' +- '11' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' numpy: - '1.18' pin_run_as_build: @@ -27,5 +25,7 @@ python: target_platform: - osx-64 zip_keys: -- - numpy - - python +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml new file mode 100644 index 0000000..f6ba559 --- /dev/null +++ b/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml @@ -0,0 +1,31 @@ +MACOSX_DEPLOYMENT_TARGET: +- '10.9' +c_compiler: +- clang +c_compiler_version: +- '11' +channel_sources: +- conda-forge,defaults +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' +macos_machine: +- x86_64-apple-darwin13.4.0 +numpy: +- '1.19' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +target_platform: +- osx-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/win_64_python3.6.____cpython.yaml b/.ci_support/win_64_numpy1.17python3.6.____cpython.yaml similarity index 90% rename from .ci_support/win_64_python3.6.____cpython.yaml rename to .ci_support/win_64_numpy1.17python3.6.____cpython.yaml index 56f6643..9dca790 100644 --- a/.ci_support/win_64_python3.6.____cpython.yaml +++ b/.ci_support/win_64_numpy1.17python3.6.____cpython.yaml @@ -7,7 +7,7 @@ m2w64_c_compiler: m2w64_cxx_compiler: - m2w64-toolchain numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -17,5 +17,5 @@ python: target_platform: - win-64 zip_keys: -- - numpy - - python +- - python + - numpy diff --git a/.ci_support/win_64_python3.7.____cpython.yaml b/.ci_support/win_64_numpy1.17python3.7.____cpython.yaml similarity index 90% rename from .ci_support/win_64_python3.7.____cpython.yaml rename to .ci_support/win_64_numpy1.17python3.7.____cpython.yaml index 2c3587a..ab1382a 100644 --- a/.ci_support/win_64_python3.7.____cpython.yaml +++ b/.ci_support/win_64_numpy1.17python3.7.____cpython.yaml @@ -7,7 +7,7 @@ m2w64_c_compiler: m2w64_cxx_compiler: - m2w64-toolchain numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -17,5 +17,5 @@ python: target_platform: - win-64 zip_keys: -- - numpy - - python +- - python + - numpy diff --git a/.ci_support/win_64_python3.8.____cpython.yaml b/.ci_support/win_64_numpy1.17python3.8.____cpython.yaml similarity index 90% rename from .ci_support/win_64_python3.8.____cpython.yaml rename to .ci_support/win_64_numpy1.17python3.8.____cpython.yaml index aa387bb..2714aef 100644 --- a/.ci_support/win_64_python3.8.____cpython.yaml +++ b/.ci_support/win_64_numpy1.17python3.8.____cpython.yaml @@ -7,7 +7,7 @@ m2w64_c_compiler: m2w64_cxx_compiler: - m2w64-toolchain numpy: -- '1.16' +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -17,5 +17,5 @@ python: target_platform: - win-64 zip_keys: -- - numpy - - python +- - python + - numpy diff --git a/.ci_support/win_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/win_64_numpy1.19python3.9.____cpython.yaml new file mode 100644 index 0000000..e2d2a6a --- /dev/null +++ b/.ci_support/win_64_numpy1.19python3.9.____cpython.yaml @@ -0,0 +1,21 @@ +channel_sources: +- conda-forge,defaults +channel_targets: +- conda-forge main +m2w64_c_compiler: +- m2w64-toolchain +m2w64_cxx_compiler: +- m2w64-toolchain +numpy: +- '1.19' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +target_platform: +- win-64 +zip_keys: +- - python + - numpy diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0655b02..a7fae55 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @beckermr @rmax \ No newline at end of file +* @dhirschfeld @rmax \ No newline at end of file diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 7167db8..71a0686 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}" @@ -29,13 +37,38 @@ source run_conda_forge_build_setup # make the build number clobber make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" -conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ - --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" -validate_recipe_outputs "${FEEDSTOCK_NAME}" -if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then - upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" +( 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}" + fi + 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_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 0000000..57bc95c --- /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 e4d5bab..244ccd1 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 \ @@ -74,6 +86,8 @@ docker run ${DOCKER_RUN_ARGS} \ -e CI \ -e FEEDSTOCK_NAME \ -e CPU_COUNT \ + -e BUILD_WITH_CONDA_DEBUG \ + -e BUILD_OUTPUT_ID \ -e BINSTAR_TOKEN \ -e FEEDSTOCK_TOKEN \ -e STAGING_BINSTAR_TOKEN \ @@ -82,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 982eae9..96d0278 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,57 +1,69 @@ #!/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 -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/LICENSE.txt b/LICENSE.txt index 5f30279..ed3f451 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 c9a96c7..8465442 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,16 @@ About pystan Home: http://mc-stan.org/interfaces/pystan.html -Package license: GPLv3 +Package license: GPL-3.0 -Feedstock license: BSD-3-Clause +Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/pystan-feedstock/blob/master/LICENSE.txt) Summary: Python interface to Stan, a package for Bayesian inference +Development: https://github.com/stan-dev/pystan + +Documentation: https://pystan.readthedocs.org/ + PyStan provides a Python interface to Stan, a package for Bayesian inference using the No-U-Turn sampler, a variant of Hamiltonian Monte Carlo. @@ -32,24 +36,24 @@ Current build status - + - + - + @@ -60,24 +64,31 @@ Current build status - + - + - + + + + @@ -88,24 +99,38 @@ Current build status - + + + + + + + - + - + @@ -130,6 +155,7 @@ Installing `pystan` 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, `pystan` can be installed with: @@ -200,14 +226,14 @@ 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 ===================== -* [@beckermr](https://github.com/beckermr/) +* [@dhirschfeld](https://github.com/dhirschfeld/) * [@rmax](https://github.com/rmax/) diff --git a/build-locally.py b/build-locally.py index 8f7ecca..00eeb34 100755 --- a/build-locally.py +++ b/build-locally.py @@ -7,11 +7,20 @@ import glob import subprocess from argparse import ArgumentParser +import platform def setup_environment(ns): os.environ["CONFIG"] = ns.config os.environ["UPLOAD_PACKAGES"] = "False" + if ns.debug: + 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): @@ -19,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") @@ -42,21 +56,40 @@ 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): p = ArgumentParser("build-locally") p.add_argument("config", default=None, nargs="?") + p.add_argument( + "--debug", + action="store_true", + help="Setup debug environment using `conda debug`", + ) + p.add_argument( + "--output-id", help="If running debug, specify the output to setup." + ) ns = p.parse_args(args=args) 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__": diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 8d85fe4..1a0da00 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -12,7 +12,7 @@ source: sha256: {{ sha256sum }} build: - number: 2 + number: 3 skip: True # [win and py27] detect_binary_files_with_prefix: False @@ -37,7 +37,7 @@ requirements: - {{ compiler('cxx') }} # [not win] # http://pystan.readthedocs.io/en/latest/windows.html - {{ compiler('m2w64_c') }} # [win] - - {{ compiler('m2w64_cxx') }} # [win] + - {{ compiler('m2w64_cxx') }} # [win] - {{ pin_compatible('numpy') }} - cython >=0.22,!=0.25.1 - setuptools @@ -52,7 +52,7 @@ test: about: home: http://mc-stan.org/interfaces/pystan.html - license: GPLv3 + license: GPL-3.0 license_file: LICENSE summary: Python interface to Stan, a package for Bayesian inference description: | @@ -65,3 +65,4 @@ about: extra: recipe-maintainers: - rmax + - dhirschfeld
VariantStatus
linux_64_numpy1.16python3.6.____cpythonlinux_64_numpy1.17python3.6.____cpython - variant + variant
linux_64_numpy1.16python3.7.____cpythonlinux_64_numpy1.17python3.7.____cpython - variant + variant
linux_64_numpy1.16python3.8.____cpythonlinux_64_numpy1.17python3.8.____cpython - variant + variant
osx_64_numpy1.16python3.6.____cpythonlinux_64_numpy1.19python3.9.____cpython - variant + variant
osx_64_numpy1.16python3.7.____cpythonosx_64_numpy1.17python3.6.____cpython - variant + variant
osx_64_numpy1.16python3.8.____cpythonosx_64_numpy1.17python3.7.____cpython - variant + variant + +
osx_64_numpy1.17python3.8.____cpython + + variant
win_64_python3.6.____cpythonosx_64_numpy1.19python3.9.____cpython + + variant + +
win_64_numpy1.17python3.6.____cpython + + variant + +
win_64_numpy1.17python3.7.____cpython - variant + variant
win_64_python3.7.____cpythonwin_64_numpy1.17python3.8.____cpython - variant + variant
win_64_python3.8.____cpythonwin_64_numpy1.19python3.9.____cpython - variant + variant