diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 706a4de..9625264 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -5,33 +5,29 @@ jobs: - job: linux pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-latest strategy: matrix: - linux_64_numpy1.16python3.6.____cpython: - CONFIG: linux_64_numpy1.16python3.6.____cpython + linux_64_python3.10.____cpython: + CONFIG: linux_64_python3.10.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_numpy1.16python3.7.____cpython: - CONFIG: linux_64_numpy1.16python3.7.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + linux_64_python3.11.____cpython: + CONFIG: linux_64_python3.11.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_numpy1.16python3.8.____cpython: - CONFIG: linux_64_numpy1.16python3.8.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + linux_64_python3.12.____cpython: + CONFIG: linux_64_python3.12.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_numpy1.19python3.9.____cpython: - CONFIG: linux_64_numpy1.19python3.9.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + linux_64_python3.9.____cpython: + CONFIG: linux_64_python3.9.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 timeoutInMinutes: 360 + variables: {} steps: - - script: | - rm -rf /opt/ghc - df -h - displayName: Manage disk space - # configure qemu binfmt-misc running. This allows us to run docker containers # embedded qemu-static - script: | @@ -42,8 +38,16 @@ 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 + 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 727e82e..6c6bd90 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,30 +5,39 @@ jobs: - job: osx pool: - vmImage: macOS-10.15 + vmImage: macOS-13 strategy: matrix: - osx_64_numpy1.16python3.6.____cpython: - CONFIG: osx_64_numpy1.16python3.6.____cpython + osx_64_python3.10.____cpython: + CONFIG: osx_64_python3.10.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.7.____cpython: - CONFIG: osx_64_numpy1.16python3.7.____cpython + osx_64_python3.11.____cpython: + CONFIG: osx_64_python3.11.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.8.____cpython: - CONFIG: osx_64_numpy1.16python3.8.____cpython + osx_64_python3.12.____cpython: + CONFIG: osx_64_python3.12.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.19python3.9.____cpython: - CONFIG: osx_64_numpy1.19python3.9.____cpython + osx_64_python3.9.____cpython: + CONFIG: osx_64_python3.9.____cpython 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}) + 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/.ci_support/README b/.ci_support/README index e4e2dce..a47316b 100644 --- a/.ci_support/README +++ b/.ci_support/README @@ -1 +1,6 @@ -This file is automatically generated by conda-smithy. To change any matrix elements, you should change conda-smithy's input conda_build_config.yaml and re-render the recipe, rather than editing these files directly. \ No newline at end of file +This file is automatically generated by conda-smithy. If any +particular build configuration is expected, but it is not found, +please make sure all dependencies are satisfiable. To add/modify any +matrix elements, you should create/change conda-smithy's input +recipe/conda_build_config.yaml and re-render the recipe, rather than +editing these files directly. diff --git a/.ci_support/linux_64_numpy1.16python3.6.____cpython.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml similarity index 60% rename from .ci_support/linux_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/linux_64_python3.10.____cpython.yaml index 5b20701..c39186b 100644 --- a/.ci_support/linux_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -1,25 +1,24 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- conda channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '13' docker_image: -- quay.io/condaforge/linux-anvil-comp7 -numpy: -- '1.16' +- quay.io/condaforge/linux-anvil-x86_64:alma9 pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.6.* *_cpython +- 3.10.* *_cpython target_platform: - linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml similarity index 60% rename from .ci_support/linux_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/linux_64_python3.11.____cpython.yaml index 52d9f59..12aebf2 100644 --- a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -1,25 +1,24 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- conda channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '13' docker_image: -- quay.io/condaforge/linux-anvil-comp7 -numpy: -- '1.16' +- quay.io/condaforge/linux-anvil-x86_64:alma9 pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_cpython +- 3.11.* *_cpython target_platform: - linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml similarity index 60% rename from .ci_support/linux_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/linux_64_python3.12.____cpython.yaml index 7dcf730..809b309 100644 --- a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -1,25 +1,24 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- conda channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '13' docker_image: -- quay.io/condaforge/linux-anvil-comp7 -numpy: -- '1.16' +- quay.io/condaforge/linux-anvil-x86_64:alma9 pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.8.* *_cpython +- 3.12.* *_cpython target_platform: - linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/linux_64_python3.9.____cpython.yaml similarity index 65% rename from .ci_support/linux_64_numpy1.19python3.9.____cpython.yaml rename to .ci_support/linux_64_python3.9.____cpython.yaml index 9b3945c..b827fca 100644 --- a/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml +++ b/.ci_support/linux_64_python3.9.____cpython.yaml @@ -1,17 +1,19 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- conda channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '13' docker_image: -- quay.io/condaforge/linux-anvil-comp7 -numpy: -- '1.19' +- quay.io/condaforge/linux-anvil-x86_64:alma9 pin_run_as_build: python: min_pin: x.x @@ -20,6 +22,3 @@ python: - 3.9.* *_cpython target_platform: - linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/migrations/python39.yaml b/.ci_support/migrations/python39.yaml deleted file mode 100644 index 966e7c5..0000000 --- a/.ci_support/migrations/python39.yaml +++ /dev/null @@ -1,31 +0,0 @@ -migrator_ts: 1602104489 -__migrator: - migration_number: 2 - operation: key_add - primary_key: python - ordering: - python: - - 3.6.* *_cpython - - 3.7.* *_cpython - - 3.8.* *_cpython - - 3.9.* *_cpython # new entry - - 3.6.* *_73_pypy - paused: false - longterm: True - pr_limit: 50 - exclude: - # this shouldn't attempt to modify the python feedstocks - - python - - pypy3.6 - - pypy-meta - - # this has gone for a while so issue everything - check_solvable: false - -python: - - 3.9.* *_cpython -# additional entries to add for zip_keys -numpy: - - 1.19 -python_impl: - - cpython diff --git a/.ci_support/osx_64_numpy1.16python3.6.____cpython.yaml b/.ci_support/osx_64_python3.10.____cpython.yaml similarity index 64% rename from .ci_support/osx_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/osx_64_python3.10.____cpython.yaml index a807bd3..cfe2efd 100644 --- a/.ci_support/osx_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/osx_64_python3.10.____cpython.yaml @@ -1,25 +1,26 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '18' macos_machine: - x86_64-apple-darwin13.4.0 -numpy: -- '1.16' pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.6.* *_cpython +- 3.10.* *_cpython target_platform: - osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/osx_64_python3.11.____cpython.yaml similarity index 64% rename from .ci_support/osx_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/osx_64_python3.11.____cpython.yaml index 48e17c7..023c32f 100644 --- a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/osx_64_python3.11.____cpython.yaml @@ -1,25 +1,26 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '18' macos_machine: - x86_64-apple-darwin13.4.0 -numpy: -- '1.16' pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_cpython +- 3.11.* *_cpython target_platform: - osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/osx_64_python3.12.____cpython.yaml similarity index 64% rename from .ci_support/osx_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/osx_64_python3.12.____cpython.yaml index 5ab9197..5691735 100644 --- a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/osx_64_python3.12.____cpython.yaml @@ -1,25 +1,26 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '18' macos_machine: - x86_64-apple-darwin13.4.0 -numpy: -- '1.16' pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.8.* *_cpython +- 3.12.* *_cpython target_platform: - osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/osx_64_python3.9.____cpython.yaml similarity index 69% rename from .ci_support/osx_64_numpy1.19python3.9.____cpython.yaml rename to .ci_support/osx_64_python3.9.____cpython.yaml index ea57b9e..697a256 100644 --- a/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml +++ b/.ci_support/osx_64_python3.9.____cpython.yaml @@ -1,17 +1,21 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '18' macos_machine: - x86_64-apple-darwin13.4.0 -numpy: -- '1.19' pin_run_as_build: python: min_pin: x.x @@ -20,6 +24,3 @@ python: - 3.9.* *_cpython target_platform: - osx-64 -zip_keys: -- - python - - numpy diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ad461b..8b4ef2f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,13 +1,14 @@ # This file was generated automatically from conda-smithy. To update this configuration, # update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- +# -*- mode: jinja-yaml -*- version: 2 jobs: build: working_directory: ~/test - machine: true + machine: + image: ubuntu-2004:current steps: - run: # The Circle-CI build should not be active, but if this is not true for some reason, do a fast finish. diff --git a/.gitattributes b/.gitattributes index 9060b27..18f114a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,6 +9,7 @@ bld.bat text eol=crlf # github helper pieces to make some files not show up in diffs automatically .azure-pipelines/* linguist-generated=true .circleci/* linguist-generated=true +.ci_support/README linguist-generated=true .drone/* linguist-generated=true .drone.yml linguist-generated=true .github/* linguist-generated=true @@ -18,8 +19,9 @@ bld.bat text eol=crlf .gitignore linguist-generated=true .travis.yml linguist-generated=true .scripts/* linguist-generated=true -LICENSE.txt linguist-generated=true -README.md linguist-generated=true +.woodpecker.yml linguist-generated=true +/LICENSE.txt linguist-generated=true +/README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true shippable.yml linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e69de29..82d8662 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @xylar \ No newline at end of file diff --git a/.gitignore b/.gitignore index c89ecb7..bb38536 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,27 @@ +# 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/** + +# 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 -build_artifacts +# Rattler-build's artifacts are in `output` when not specifying anything. +/output diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index aa9727b..f8051ab 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -5,9 +5,18 @@ # 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 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" @@ -15,21 +24,38 @@ export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" cat >~/.condarc < /opt/conda/conda-meta/history +micromamba install --root-prefix ~/.conda --prefix /opt/conda \ + --yes --override-channels --channel conda-forge --strict-channel-priority \ + pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" source run_conda_forge_build_setup + + # make the build number clobber make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" + +( endgroup "Configuring conda" ) 2> /dev/null + +if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then + cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" +fi + 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}" @@ -37,17 +63,35 @@ 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 "${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 "Inspecting artifacts" ) 2> /dev/null + + # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 + command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" + + ( endgroup "Inspecting artifacts" ) 2> /dev/null + ( startgroup "Validating outputs" ) 2> /dev/null + validate_recipe_outputs "${FEEDSTOCK_NAME}" - if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then + ( endgroup "Validating outputs" ) 2> /dev/null + + ( startgroup "Uploading packages" ) 2> /dev/null + + if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "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..aff009f --- /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 87ba4db..00f377a 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -5,18 +5,28 @@ # 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 )" PROVIDER_DIR="$(basename $THISDIR)" -FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;) +FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )" RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" 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 @@ -45,10 +55,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,13 +76,20 @@ 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}" +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 \ - -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 \ + -e IS_PR_BUILD \ -e GIT_BRANCH \ -e UPLOAD_ON_BRANCH \ -e CI \ @@ -76,12 +97,18 @@ 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 \ - $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" \ 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 c299b79..ee996f4 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,57 +1,116 @@ #!/usr/bin/env bash -set -x +# -*- mode: jinja-shell -*- -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 +source .scripts/logging_utils.sh -echo -e "\n\nConfiguring conda." -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:start:configure_conda\\r' -fi +set -xe -source ${HOME}/miniforge3/etc/profile.d/conda.sh +MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" +MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash +export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" + +( startgroup "Provisioning base env with micromamba" ) 2> /dev/null +MICROMAMBA_VERSION="1.5.10-0" +if [[ "$(uname -m)" == "arm64" ]]; then + osx_arch="osx-arm64" +else + osx_arch="osx-64" +fi +MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" +MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" +echo "Downloading micromamba ${MICROMAMBA_VERSION}" +micromamba_exe="$(mktemp -d)/micromamba" +curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" +chmod +x "${micromamba_exe}" +echo "Creating environment" +"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ + --channel conda-forge \ + pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" +mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" +echo "Cleaning up micromamba" +rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true +( endgroup "Provisioning base env with micromamba" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null +echo "Activating environment" +source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" conda activate base +export CONDA_SOLVER="libmamba" +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 + -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 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 + +if [[ "${sha:-}" == "" ]]; then + sha=$(git rev-parse HEAD) +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:-} -validate_recipe_outputs "${FEEDSTOCK_NAME}" +if [[ -f LICENSE.txt ]]; then + cp LICENSE.txt "recipe/recipe-scripts-license.txt" +fi + +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 -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 -m ./.ci_support/${CONFIG}.yaml \ + --suppress-variables ${EXTRA_CB_OPTIONS:-} \ + --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ + --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" + + ( startgroup "Inspecting artifacts" ) 2> /dev/null + + # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 + command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir ./recipe -m ./.ci_support/${CONFIG}.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" + + ( endgroup "Inspecting artifacts" ) 2> /dev/null + ( 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" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then + upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml + fi -if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then - echo -e "\n\nUploading the packages." - upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml + ( endgroup "Uploading packages" ) 2> /dev/null fi \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index 5f30279..2ec51d7 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,13 +1,27 @@ -BSD 3-clause license -Copyright (c) 2015-2020, conda-forge contributors +BSD-3-Clause license +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: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/README.md b/README.md index 8396f31..fd9f8fc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -About datatable -=============== +About datatable-feedstock +========================= + +Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/datatable-feedstock/blob/main/LICENSE.txt) Home: https://github.com/h2oai/datatable Package license: MPL-2.0 -Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/datatable-feedstock/blob/master/LICENSE.txt) - Summary: Python library for fast multi-threaded data manipulation and munging. Current build status @@ -20,66 +20,66 @@ Current build status
- - + + - + - + - + - + - + - + - + - + @@ -104,25 +104,52 @@ Installing `datatable` from the `conda-forge` channel can be achieved by adding ``` conda config --add channels conda-forge +conda config --set channel_priority strict ``` -Once the `conda-forge` channel has been enabled, `datatable` can be installed with: +Once the `conda-forge` channel has been enabled, `datatable` can be installed with `conda`: ``` conda install datatable ``` -It is possible to list all of the versions of `datatable` available on your platform with: +or with `mamba`: + +``` +mamba install datatable +``` + +It is possible to list all of the versions of `datatable` available on your platform with `conda`: ``` conda search datatable --channel conda-forge ``` +or with `mamba`: + +``` +mamba search datatable --channel conda-forge +``` + +Alternatively, `mamba repoquery` may provide more information: + +``` +# Search all versions available on your platform: +mamba repoquery search datatable --channel conda-forge + +# List packages depending on `datatable`: +mamba repoquery whoneeds datatable --channel conda-forge + +# List dependencies of `datatable`: +mamba repoquery depends datatable --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 @@ -132,10 +159,12 @@ for each of the installable packages. Such a repository is known as a *feedstock A feedstock is made up of a conda recipe (the instructions on what and how to build the package) and the necessary configurations for automatic building using freely available continuous integration services. Thanks to the awesome service provided by -[CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/) -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/) channel for Linux, Windows and OSX respectively. +[Azure](https://azure.microsoft.com/en-us/services/devops/), [GitHub](https://github.com/), +[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.org](https://anaconda.org/) +channel for Linux, Windows and OSX respectively. To manage the continuous integration and simplify feedstock maintenance [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. @@ -174,13 +203,13 @@ 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 ===================== -* [@jeromebaum](https://github.com/jeromebaum/) +* [@xylar](https://github.com/xylar/) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 33a441c..013bdc1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,6 +2,31 @@ # update the conda-forge.yml and/or the recipe/meta.yaml. # -*- mode: yaml -*- -jobs: - - template: ./.azure-pipelines/azure-pipelines-linux.yml - - template: ./.azure-pipelines/azure-pipelines-osx.yml \ No newline at end of file +stages: +- stage: Check + jobs: + - job: Skip + pool: + vmImage: 'ubuntu-22.04' + variables: + DECODE_PERCENTS: 'false' + RET: 'true' + steps: + - checkout: self + fetchDepth: '2' + - bash: | + git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "` + echo "##vso[task.setvariable variable=log]$git_log" + displayName: Obtain commit message + - bash: echo "##vso[task.setvariable variable=RET]false" + condition: and(eq(variables['Build.Reason'], 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]'))) + displayName: Skip build? + - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET" + name: result + displayName: Export result +- stage: Build + condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) + dependsOn: Check + jobs: + - template: ./.azure-pipelines/azure-pipelines-linux.yml + - template: ./.azure-pipelines/azure-pipelines-osx.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py index 3453cfe..c4a56c6 100755 --- a/build-locally.py +++ b/build-locally.py @@ -1,10 +1,14 @@ -#!/usr/bin/env python3 +#!/bin/sh +"""exec" "python3" "$0" "$@" #""" # fmt: off # fmt: on # # This file has been generated by conda-smithy in order to build the recipe # locally. # -import os +# The line above this comment is a bash / sh / zsh guard +# to stop people from running it with the wrong interpreter import glob +import os +import platform import subprocess from argparse import ArgumentParser @@ -12,10 +16,22 @@ 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: 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" + ) + + # The default cache location might not be writable using docker on macOS. + if ns.config.startswith("linux") and platform.system() == "Darwin": + os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = ( + os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "") + + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache" + ) def run_docker_build(ns): @@ -23,6 +39,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 +67,18 @@ 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"): + if "OSX_SDK_DIR" not in os.environ: + raise RuntimeError( + "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." + ) def main(args=None): @@ -68,7 +97,19 @@ def main(args=None): verify_config(ns) setup_environment(ns) - run_docker_build(ns) + try: + 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) + finally: + recipe_license_file = os.path.join( + "recipe", "recipe-scripts-license.txt" + ) + if os.path.exists(recipe_license_file): + os.remove(recipe_license_file) if __name__ == "__main__": diff --git a/conda-forge.yml b/conda-forge.yml index 9cb5dd9..b19eb83 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,6 +1,6 @@ conda_forge_output_validation: true bot: - automerge: true + inspection: update-grayskull github: branch_name: main tooling_branch_name: main diff --git a/recipe/build.sh b/recipe/build.sh deleted file mode 100644 index 81086a9..0000000 --- a/recipe/build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -{ - -cat >fake-git <<'EOF' -#!/bin/bash - -if [ "$1" == "show" ]; then - date +%s -else - echo "FAKE_BUILD_INFO_FOR_CONDA" -fi -EOF - -chmod +x fake-git -mv fake-git git -echo "${PKG_VERSION}" >VERSION.txt # needed despite claims in `ci/ext.py` to the contrary -env PATH=.:"$PATH" "$PYTHON" ci/ext.py build -env PATH=.:"$PATH" "$PYTHON" -m pip install . -vv -mv git fake-git -} diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 57365b9..a3c75d4 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,5 +1,5 @@ {% set name = "datatable" %} -{% set version = "0.11.1" %} +{% set version = "1.1.0" %} package: @@ -7,20 +7,24 @@ package: version: {{ version }} source: - url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/datatable-{{ version }}.tar.gz - sha256: 3c3a7d3bee3c463a36fe77c5d4747278a741c23fc6c6e2dba110deec200502ba + url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/datatable-{{ version }}.tar.gz + sha256: 8a9f6953ef6b02ede3d7c490f17d5c18c9b1bf2d58dd5451a8cac40ed887d775 build: number: 0 - skip: true # [py<35 or win] + skip: true # [py>312 or win] + script: | + {{ PYTHON }} ci/ext.py build + {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation -# numpy and pandas are _optional_ dependencies of dataframe requirements: build: - {{ compiler('cxx') }} + - {{ stdlib("c") }} host: - pip - python + - setuptools run: - python @@ -36,15 +40,23 @@ test: - LICENSE commands: - rm tests/test-docs.py - - pytest tests -k 'not test_fread_from_cmd2 and not test_dt_version' + - pytest tests -k 'not test_fread_from_cmd2 and not test_dt_version and not test_random_attack' requires: - pip - - numpy + # requirements_extra.txt + - numpy <2.0 - pandas - - xlrd + - pyarrow + - xlrd <=1.2.0 + # requirements_docs.txt + - docutils >=0.15 + - pygments >=2.6 + - sphinx >=4.0,<5.0 + - sphinx_rtd_theme >=0.5 + - nbsphinx >=0.5 + # requirements_tests.txt - pytest >=3.1 - pytest-cov - - docutils >=0.14 about: home: https://github.com/h2oai/datatable @@ -54,3 +66,4 @@ about: extra: recipe-maintainers: + - xylar
VariantStatus
linux_64_numpy1.16python3.6.____cpythonlinux_64_python3.10.____cpython - - variant + + variant
linux_64_numpy1.16python3.7.____cpythonlinux_64_python3.11.____cpython - - variant + + variant
linux_64_numpy1.16python3.8.____cpythonlinux_64_python3.12.____cpython - - variant + + variant
linux_64_numpy1.19python3.9.____cpythonlinux_64_python3.9.____cpython - - variant + + variant
osx_64_numpy1.16python3.6.____cpythonosx_64_python3.10.____cpython - - variant + + variant
osx_64_numpy1.16python3.7.____cpythonosx_64_python3.11.____cpython - - variant + + variant
osx_64_numpy1.16python3.8.____cpythonosx_64_python3.12.____cpython - - variant + + variant
osx_64_numpy1.19python3.9.____cpythonosx_64_python3.9.____cpython - - variant + + variant