diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 2523db24a..000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,47 +0,0 @@ -# This file was automatically generated by conda-smithy. To update a component of this -# file, make changes to conda-forge.yml and/or recipe/meta.yaml, and run -# "conda smithy rerender". -# -*- mode: yaml -*- - -environment: - - BINSTAR_TOKEN: - # The BINSTAR_TOKEN secure variable. This is defined canonically in conda-forge.yml. - secure: tumuXLL8PU75WMnRDemRy02ruEq2RpNxeK3dz0MjFssnosPm2v4EFjfNB4PTotA1 - - matrix: - - CONFIG: win_c_compilervs2008cxx_compilervs2008python2.7vc9 - CONDA_INSTALL_LOCN: C:\Miniconda36-x64 - - -# We always use a 64-bit machine, but can build x86 distributions -# with the TARGET_ARCH variable. -platform: - - x64 - -install: - - cmd: set "CI=appveyor" - - # Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.) - - cmd: rmdir C:\cygwin /s /q - - # Add path, activate `conda` and update conda. - - cmd: call %CONDA_INSTALL_LOCN%\Scripts\activate.bat - - cmd: conda.exe update --yes --quiet conda - - - cmd: set PYTHONUNBUFFERED=1 - - # Configure the VM. - # Tell conda we want an updated version of conda-forge-ci-setup and conda-build - - cmd: conda.exe install -n root -c conda-forge --quiet --yes conda-forge-ci-setup=2 conda-build - - cmd: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml - - cmd: run_conda_forge_build_setup - -# Skip .NET project specific build phase. -build: off - -test_script: - - conda.exe build recipe -m .ci_support\%CONFIG%.yaml -deploy_script: - - set "GIT_BRANCH=%APPVEYOR_REPO_BRANCH%" - - cmd: upload_package .\ .\recipe .ci_support\%CONFIG%.yaml diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index dce52776f..c95c2e20b 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -5,23 +5,23 @@ jobs: - job: linux pool: - vmImage: ubuntu-16.04 - timeoutInMinutes: 360 + vmImage: ubuntu-latest strategy: - maxParallel: 8 matrix: - linux_python2.7target_platformlinux-64: - CONFIG: linux_python2.7target_platformlinux-64 - UPLOAD_PACKAGES: True - DOCKER_IMAGE: condaforge/linux-anvil-comp7 - linux_python3.6target_platformlinux-64: - CONFIG: linux_python3.6target_platformlinux-64 - UPLOAD_PACKAGES: True - DOCKER_IMAGE: condaforge/linux-anvil-comp7 - linux_python3.7target_platformlinux-64: - CONFIG: linux_python3.7target_platformlinux-64 - UPLOAD_PACKAGES: True - DOCKER_IMAGE: condaforge/linux-anvil-comp7 + linux_64_python3.10.____cpython: + CONFIG: linux_64_python3.10.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + linux_64_python3.8.____cpython: + CONFIG: linux_64_python3.8.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + linux_64_python3.9.____cpython: + CONFIG: linux_64_python3.9.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + timeoutInMinutes: 360 + steps: # configure qemu binfmt-misc running. This allows us to run docker containers # embedded qemu-static @@ -34,7 +34,15 @@ jobs: - script: | export CI=azure export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME + export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) + if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi .scripts/run_docker_build.sh displayName: Run docker build env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) \ No newline at end of file + BINSTAR_TOKEN: $(BINSTAR_TOKEN) + FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index f60ae16f2..3c2bd114d 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,78 +5,35 @@ jobs: - job: osx pool: - vmImage: macOS-10.13 - timeoutInMinutes: 360 + vmImage: macOS-11 strategy: - maxParallel: 8 matrix: - osx_python2.7: - CONFIG: osx_python2.7 - UPLOAD_PACKAGES: True - osx_python3.6: - CONFIG: osx_python3.6 - UPLOAD_PACKAGES: True - osx_python3.7: - CONFIG: osx_python3.7 - UPLOAD_PACKAGES: True + osx_64_python3.10.____cpython: + CONFIG: osx_64_python3.10.____cpython + UPLOAD_PACKAGES: 'True' + osx_64_python3.8.____cpython: + CONFIG: osx_64_python3.8.____cpython + UPLOAD_PACKAGES: 'True' + osx_64_python3.9.____cpython: + CONFIG: osx_64_python3.9.____cpython + UPLOAD_PACKAGES: 'True' + timeoutInMinutes: 360 steps: # TODO: Fast finish on azure pipelines? - script: | - echo "Fast Finish" - - - - script: | - echo "Removing homebrew from Azure to avoid conflicts." - curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall > ~/uninstall_homebrew - chmod +x ~/uninstall_homebrew - ~/uninstall_homebrew -fq - rm ~/uninstall_homebrew - displayName: Remove homebrew - - - bash: | - echo "##vso[task.prependpath]$CONDA/bin" - sudo chown -R $USER $CONDA - displayName: Add conda to PATH - - - script: | - source activate base - conda install -n base -c conda-forge --quiet --yes conda-forge-ci-setup=2 conda-build - displayName: 'Add conda-forge-ci-setup=2' - - - script: | - source activate base - echo "Configuring conda." - - setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml export CI=azure - source run_conda_forge_build_setup - conda update --yes --quiet --override-channels -c conda-forge -c defaults --all - env: { - OSX_FORCE_SDK_DOWNLOAD: "1" - } - displayName: Configure conda and conda-build - - - script: | - source activate base - mangle_compiler ./ ./recipe ./.ci_support/${CONFIG}.yaml - displayName: Mangle compiler - - - script: | - source activate base - make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml - displayName: Generate build number clobber file - - - script: | - source activate base - conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --clobber-file ./.ci_support/clobber_${CONFIG}.yaml - displayName: Build recipe - - - script: | - source activate base + export OSX_FORCE_SDK_DOWNLOAD="1" export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME - upload_package ./ ./recipe ./.ci_support/${CONFIG}.yaml - displayName: Upload package + 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: BINSTAR_TOKEN: $(BINSTAR_TOKEN) - condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False'))) \ No newline at end of file + FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml deleted file mode 100755 index 418b651a5..000000000 --- a/.azure-pipelines/azure-pipelines-win.yml +++ /dev/null @@ -1,103 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: win - pool: - vmImage: vs2017-win2016 - timeoutInMinutes: 360 - strategy: - maxParallel: 4 - matrix: - win_c_compilervs2008cxx_compilervs2008python2.7vc9: - CONFIG: win_c_compilervs2008cxx_compilervs2008python2.7vc9 - CONDA_BLD_PATH: D:\\bld\\ - UPLOAD_PACKAGES: False - steps: - # TODO: Fast finish on azure pipelines? - - script: | - ECHO ON - - - - script: | - choco install vcpython27 -fdv -y --debug - condition: contains(variables['CONFIG'], 'vs2008') - displayName: Install vcpython27.msi (if needed) - - # Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.) - # - script: rmdir C:\cygwin /s /q - # continueOnError: true - - - powershell: | - Set-PSDebug -Trace 1 - - $batchcontent = @" - ECHO ON - SET vcpython=C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0 - - DIR "%vcpython%" - - CALL "%vcpython%\vcvarsall.bat" %* - "@ - - $batchDir = "C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC" - $batchPath = "$batchDir" + "\vcvarsall.bat" - New-Item -Path $batchPath -ItemType "file" -Force - - Set-Content -Value $batchcontent -Path $batchPath - - Get-ChildItem -Path $batchDir - - Get-ChildItem -Path ($batchDir + '\..') - - condition: contains(variables['CONFIG'], 'vs2008') - displayName: Patch vs2008 (if needed) - - - task: CondaEnvironment@1 - inputs: - packageSpecs: 'python=3.6 conda-build conda conda-forge::conda-forge-ci-setup=2' # Optional - installOptions: "-c conda-forge" - updateConda: false - displayName: Install conda-build and activate environment - - - script: set PYTHONUNBUFFERED=1 - - # Configure the VM - - script: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml - - # Configure the VM. - - script: | - set "CI=azure" - run_conda_forge_build_setup - displayName: conda-forge build setup - - - - script: | - rmdir C:\strawberry /s /q - continueOnError: true - displayName: remove strawberryperl - - # Special cased version setting some more things! - - script: | - conda.exe build recipe -m .ci_support\%CONFIG%.yaml - displayName: Build recipe (vs2008) - env: - VS90COMNTOOLS: "C:\\Program Files (x86)\\Common Files\\Microsoft\\Visual C++ for Python\\9.0\\VC\\bin" - PYTHONUNBUFFERED: 1 - condition: contains(variables['CONFIG'], 'vs2008') - - - script: | - conda.exe build recipe -m .ci_support\%CONFIG%.yaml - displayName: Build recipe - env: - PYTHONUNBUFFERED: 1 - condition: not(contains(variables['CONFIG'], 'vs2008')) - - - script: | - set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" - upload_package .\ .\recipe .ci_support\%CONFIG%.yaml - displayName: Upload package - env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False'))) \ No newline at end of file diff --git a/.ci_support/README b/.ci_support/README index e4e2dcec9..a47316be6 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_python3.7target_platformlinux-64.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml similarity index 51% rename from .ci_support/linux_python3.7target_platformlinux-64.yaml rename to .ci_support/linux_64_python3.10.____cpython.yaml index 705f01075..05465c7e9 100644 --- a/.ci_support/linux_python3.7target_platformlinux-64.yaml +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -3,52 +3,41 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '7' +- '12' +cdt_name: +- cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '12' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.7' +- 3.10.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_python2.7target_platformlinux-64.yaml b/.ci_support/linux_64_python3.8.____cpython.yaml similarity index 51% rename from .ci_support/linux_python2.7target_platformlinux-64.yaml rename to .ci_support/linux_64_python3.8.____cpython.yaml index 33d958760..f4c5d3110 100644 --- a/.ci_support/linux_python2.7target_platformlinux-64.yaml +++ b/.ci_support/linux_64_python3.8.____cpython.yaml @@ -3,52 +3,41 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '7' +- '12' +cdt_name: +- cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '12' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '2.7' +- 3.8.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_python3.6target_platformlinux-64.yaml b/.ci_support/linux_64_python3.9.____cpython.yaml similarity index 51% rename from .ci_support/linux_python3.6target_platformlinux-64.yaml rename to .ci_support/linux_64_python3.9.____cpython.yaml index 182cc0241..974e3921a 100644 --- a/.ci_support/linux_python3.6target_platformlinux-64.yaml +++ b/.ci_support/linux_64_python3.9.____cpython.yaml @@ -3,52 +3,41 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '7' +- '12' +cdt_name: +- cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '12' docker_image: -- condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.6' +- 3.9.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_aarch64_python3.6target_platformlinux-aarch64.yaml b/.ci_support/linux_aarch64_python3.10.____cpython.yaml similarity index 55% rename from .ci_support/linux_aarch64_python3.6target_platformlinux-aarch64.yaml rename to .ci_support/linux_aarch64_python3.10.____cpython.yaml index a7b891fa2..93ae188de 100644 --- a/.ci_support/linux_aarch64_python3.6target_platformlinux-aarch64.yaml +++ b/.ci_support/linux_aarch64_python3.10.____cpython.yaml @@ -5,56 +5,43 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '7' +- '12' cdt_arch: - aarch64 cdt_name: - cos7 channel_sources: -- conda-forge,c4aarch64,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '12' docker_image: -- condaforge/linux-anvil-aarch64 +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.6' +- 3.10.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-aarch64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_aarch64_python3.7target_platformlinux-aarch64.yaml b/.ci_support/linux_aarch64_python3.8.____cpython.yaml similarity index 55% rename from .ci_support/linux_aarch64_python3.7target_platformlinux-aarch64.yaml rename to .ci_support/linux_aarch64_python3.8.____cpython.yaml index d44391a5c..6f7eea088 100644 --- a/.ci_support/linux_aarch64_python3.7target_platformlinux-aarch64.yaml +++ b/.ci_support/linux_aarch64_python3.8.____cpython.yaml @@ -5,56 +5,43 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '7' +- '12' cdt_arch: - aarch64 cdt_name: - cos7 channel_sources: -- conda-forge,c4aarch64,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '7' +- '12' docker_image: -- condaforge/linux-anvil-aarch64 +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.7' +- 3.8.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-aarch64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_aarch64_python3.9.____cpython.yaml b/.ci_support/linux_aarch64_python3.9.____cpython.yaml new file mode 100644 index 000000000..23a16a169 --- /dev/null +++ b/.ci_support/linux_aarch64_python3.9.____cpython.yaml @@ -0,0 +1,47 @@ +BUILD: +- aarch64-conda_cos7-linux-gnu +bzip2: +- '1' +c_compiler: +- gcc +c_compiler_version: +- '12' +cdt_arch: +- aarch64 +cdt_name: +- cos7 +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '12' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 +libffi: +- '3.4' +ncurses: +- '6' +openssl: +- 1.1.1u +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +readline: +- '8' +sqlite: +- '3' +target_platform: +- linux-aarch64 +tk: +- '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1.2' diff --git a/.ci_support/linux_ppc64le_python3.6target_platformlinux-ppc64le.yaml b/.ci_support/linux_ppc64le_python3.10.____cpython.yaml similarity index 53% rename from .ci_support/linux_ppc64le_python3.6target_platformlinux-ppc64le.yaml rename to .ci_support/linux_ppc64le_python3.10.____cpython.yaml index 97a3e4445..5a1cebe3f 100644 --- a/.ci_support/linux_ppc64le_python3.6target_platformlinux-ppc64le.yaml +++ b/.ci_support/linux_ppc64le_python3.10.____cpython.yaml @@ -3,48 +3,39 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '8' +- '12' +cdt_name: +- cos7 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '8' +- '12' docker_image: -- condaforge/linux-anvil-ppc64le +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - zlib: - max_pin: x.x python: -- '3.6' +- 3.10.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-ppc64le +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_ppc64le_python3.7target_platformlinux-ppc64le.yaml b/.ci_support/linux_ppc64le_python3.8.____cpython.yaml similarity index 53% rename from .ci_support/linux_ppc64le_python3.7target_platformlinux-ppc64le.yaml rename to .ci_support/linux_ppc64le_python3.8.____cpython.yaml index 70fe33795..b4f0efd83 100644 --- a/.ci_support/linux_ppc64le_python3.7target_platformlinux-ppc64le.yaml +++ b/.ci_support/linux_ppc64le_python3.8.____cpython.yaml @@ -3,48 +3,39 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '8' +- '12' +cdt_name: +- cos7 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '8' +- '12' docker_image: -- condaforge/linux-anvil-ppc64le +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - zlib: - max_pin: x.x python: -- '3.7' +- 3.8.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' target_platform: - linux-ppc64le +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/linux_ppc64le_python3.9.____cpython.yaml b/.ci_support/linux_ppc64le_python3.9.____cpython.yaml new file mode 100644 index 000000000..22aa9dd3b --- /dev/null +++ b/.ci_support/linux_ppc64le_python3.9.____cpython.yaml @@ -0,0 +1,41 @@ +bzip2: +- '1' +c_compiler: +- gcc +c_compiler_version: +- '12' +cdt_name: +- cos7 +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '12' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 +libffi: +- '3.4' +ncurses: +- '6' +openssl: +- 1.1.1u +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +readline: +- '8' +sqlite: +- '3' +target_platform: +- linux-ppc64le +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1.2' diff --git a/.ci_support/osx_python3.7.yaml b/.ci_support/osx_64_python3.10.____cpython.yaml similarity index 54% rename from .ci_support/osx_python3.7.yaml rename to .ci_support/osx_64_python3.10.____cpython.yaml index 035efc74c..345eaec54 100644 --- a/.ci_support/osx_python3.7.yaml +++ b/.ci_support/osx_64_python3.10.____cpython.yaml @@ -5,52 +5,41 @@ bzip2: c_compiler: - clang c_compiler_version: -- '9' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '9' +- '15' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.7' +- 3.10.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' +target_platform: +- osx-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/osx_python2.7.yaml b/.ci_support/osx_64_python3.8.____cpython.yaml similarity index 54% rename from .ci_support/osx_python2.7.yaml rename to .ci_support/osx_64_python3.8.____cpython.yaml index 710c970d2..f8df776c4 100644 --- a/.ci_support/osx_python2.7.yaml +++ b/.ci_support/osx_64_python3.8.____cpython.yaml @@ -5,52 +5,41 @@ bzip2: c_compiler: - clang c_compiler_version: -- '9' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '9' +- '15' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '2.7' +- 3.8.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' +target_platform: +- osx-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/osx_python3.6.yaml b/.ci_support/osx_64_python3.9.____cpython.yaml similarity index 54% rename from .ci_support/osx_python3.6.yaml rename to .ci_support/osx_64_python3.9.____cpython.yaml index bf7210310..bfdc5e795 100644 --- a/.ci_support/osx_python3.6.yaml +++ b/.ci_support/osx_64_python3.9.____cpython.yaml @@ -5,52 +5,41 @@ bzip2: c_compiler: - clang c_compiler_version: -- '9' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '9' +- '15' +docker_image: +- quay.io/condaforge/linux-anvil-comp7 libffi: -- '3.2' +- '3.4' macos_machine: - x86_64-apple-darwin13.4.0 -macos_min_version: -- '10.9' ncurses: -- '6.1' +- '6' openssl: -- 1.1.1a +- 1.1.1u pin_run_as_build: - bzip2: - max_pin: x - libffi: - max_pin: x.x - ncurses: - max_pin: x.x - openssl: - max_pin: x.x.x python: min_pin: x.x max_pin: x.x - readline: - max_pin: x - sqlite: - max_pin: x - tk: - max_pin: x.x - zlib: - max_pin: x.x python: -- '3.6' +- 3.9.* *_cpython readline: -- '8.0' +- '8' sqlite: - '3' +target_platform: +- osx-64 tk: - '8.6' +zip_keys: +- - c_compiler_version + - cxx_compiler_version zlib: - '1.2' diff --git a/.ci_support/win_c_compilervs2008cxx_compilervs2008python2.7vc9.yaml b/.ci_support/win_c_compilervs2008cxx_compilervs2008python2.7vc9.yaml deleted file mode 100644 index 08a0307e4..000000000 --- a/.ci_support/win_c_compilervs2008cxx_compilervs2008python2.7vc9.yaml +++ /dev/null @@ -1,23 +0,0 @@ -c_compiler: -- vs2008 -channel_sources: -- conda-forge,defaults -channel_targets: -- conda-forge main -cxx_compiler: -- vs2008 -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x - vc: - max_pin: x -python: -- '2.7' -vc: -- '9' -zip_keys: -- - python - - vc - - c_compiler - - cxx_compiler diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ad461b80..8b4ef2f99 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/.drone.yml b/.drone.yml deleted file mode 100644 index 1b3703450..000000000 --- a/.drone.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -kind: pipeline -name: linux_aarch64_python3.6target_platf_h6b731c3333 - -platform: - os: linux - arch: arm64 - -steps: -- name: Install and build - image: condaforge/linux-anvil-aarch64 - environment: - CONFIG: linux_aarch64_python3.6target_platformlinux-aarch64 - UPLOAD_PACKAGES: True - PLATFORM: linux-aarch64 - BINSTAR_TOKEN: - from_secret: BINSTAR_TOKEN - commands: - - export FEEDSTOCK_ROOT="$DRONE_WORKSPACE" - - export RECIPE_ROOT="$FEEDSTOCK_ROOT/recipe" - - export CI=drone - - export GIT_BRANCH="$DRONE_BRANCH" - - sed -i '$ichown -R conda:conda "$FEEDSTOCK_ROOT"' /opt/docker/bin/entrypoint - - /opt/docker/bin/entrypoint $FEEDSTOCK_ROOT/.scripts/build_steps.sh - - echo "Done building" - ---- -kind: pipeline -name: linux_aarch64_python3.7target_platf_h40271f266f - -platform: - os: linux - arch: arm64 - -steps: -- name: Install and build - image: condaforge/linux-anvil-aarch64 - environment: - CONFIG: linux_aarch64_python3.7target_platformlinux-aarch64 - UPLOAD_PACKAGES: True - PLATFORM: linux-aarch64 - BINSTAR_TOKEN: - from_secret: BINSTAR_TOKEN - commands: - - export FEEDSTOCK_ROOT="$DRONE_WORKSPACE" - - export RECIPE_ROOT="$FEEDSTOCK_ROOT/recipe" - - export CI=drone - - export GIT_BRANCH="$DRONE_BRANCH" - - sed -i '$ichown -R conda:conda "$FEEDSTOCK_ROOT"' /opt/docker/bin/entrypoint - - /opt/docker/bin/entrypoint $FEEDSTOCK_ROOT/.scripts/build_steps.sh - - echo "Done building" - diff --git a/.gitattributes b/.gitattributes index ac943c18b..7f3276384 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 @@ -17,7 +18,8 @@ bld.bat text eol=crlf .gitattributes linguist-generated=true .gitignore linguist-generated=true .travis.yml linguist-generated=true -.scripts linguist-generated=true +.scripts/* linguist-generated=true +.woodpecker.yml linguist-generated=true LICENSE.txt linguist-generated=true README.md linguist-generated=true azure-pipelines.yml linguist-generated=true diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 9c3e16de2..f14de29f1 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,11 +24,17 @@ export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" cat >~/.condarc < /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}" + 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 mambabuild "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + --suppress-variables ${EXTRA_CB_OPTIONS:-} \ + --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + ( startgroup "Validating outputs" ) 2> /dev/null + + 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}" "${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..aff009f0c --- /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 066a85755..923623983 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -5,14 +5,22 @@ # 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 + docker info # In order for the conda-build process in the container to write to the mounted @@ -41,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 @@ -52,24 +64,42 @@ mkdir -p "$ARTIFACTS" DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" rm -f "$DONE_CANARY" +# Allow people to specify extra default arguments to `docker run` (e.g. `--rm`) +DOCKER_RUN_ARGS="${CONDA_FORGE_DOCKER_RUN_ARGS}" if [ -z "${CI}" ]; then - DOCKER_RUN_ARGS="-it " + 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:ro,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 BINSTAR_TOKEN \ -e HOST_USER_ID \ -e UPLOAD_PACKAGES \ + -e IS_PR_BUILD \ -e GIT_BRANCH \ -e UPLOAD_ON_BRANCH \ -e CI \ - $DOCKER_IMAGE \ + -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 \ + "${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 new file mode 100755 index 000000000..0f0ee70c1 --- /dev/null +++ b/.scripts/run_osx_build.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +# -*- mode: jinja-shell -*- + +source .scripts/logging_utils.sh + +set -xe + +MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3} + +( startgroup "Installing a fresh version of Miniforge" ) 2> /dev/null + +MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download" +MINIFORGE_FILE="Mambaforge-MacOSX-$(uname -m).sh" +curl -L -O "${MINIFORGE_URL}/${MINIFORGE_FILE}" +rm -rf ${MINIFORGE_HOME} +bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} + +( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null + +source ${MINIFORGE_HOME}/etc/profile.d/conda.sh +conda activate base + +mamba install --update-specs --quiet --yes --channel conda-forge --strict-channel-priority \ + pip mamba conda-build boa conda-forge-ci-setup=3 +mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build boa conda-forge-ci-setup + + + +echo -e "\n\nSetting up the condarc and mangling the compiler." +setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml + +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 + + + +( endgroup "Configuring conda" ) 2> /dev/null + +echo -e "\n\nMaking the build clobber file" +make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml + +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 mambabuild ./recipe -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" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then + upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml + fi + + ( endgroup "Uploading packages" ) 2> /dev/null +fi \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 534622dca..808474cdb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,26 +3,45 @@ language: generic -env: - global: - # The BINSTAR_TOKEN secure variable. This is defined canonically in conda-forge.yml. - - secure: XlN4awda3oHgy9VyeOYp5uHidR0l9bdZ8Y/RdVKs19WkUHPY0qZIALURC1cWaKdDbDrkSfUq7xiutl/248yR59fLUBdzLOBx+41pmoJ/PhhmZ/x+IvG2iX7RFcPQhuySi3UfZuymtvPCJ1ezXsyl/cFDHCOexaIXPQgiye6vm/QPFUSxyZ9ymvK4RcwdghteHR4wQpm6Lbr2eblarj+bGrymrq15vkUMvHpI8jJRHfYE9ItbHZ/uMlXfbltAPT1uHM96vQliaAPa544fVxZTLBNu8v/kVD0dfMo7A1BBiwvQj/6d+NAOqhVzXkRMkGdaQYnqq3hVOmLnJ8LjEGF0o+q2+7ENnQbdVZdyrnbwSzxLDS32LgisMGa4s/qSWwcBHeZJxTW7YRLOnMKKkDYBd5J9y7sFjIAAfRgTc2wfwvcqQfvLT17MXIwFOcN8VPulGOg9HKrfDDGsCMvPliqiE1hy96Y3aoc8BcVHINMdoE2QuCBKGDsYmSK2IHglJT1crdyVA8kpu9k6oif1dpLjGpa+wxI1hjGTHE0ookiLnN2rTj36vRibu2GC3jUQGPccDQHY/wzd4CfSitmSnudvGKk8PSf/WklirsTLXtgp53J7w+lXu62Aq7PoFBVhZl6/bEjbs7iihlBVHbuEMeW/EwMsWVABQBCAOhF2b40jyEs= + matrix: include: - - env: CONFIG=linux_ppc64le_python3.6target_platformlinux-ppc64le UPLOAD_PACKAGES=True - PLATFORM=linux-ppc64le DOCKER_IMAGE=condaforge/linux-anvil-ppc64le - os: linux - arch: ppc64le + - env: CONFIG=linux_aarch64_python3.10.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-aarch64 DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: arm64 + dist: focal + + - env: CONFIG=linux_aarch64_python3.8.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-aarch64 DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: arm64 + dist: focal + + - env: CONFIG=linux_aarch64_python3.9.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-aarch64 DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: arm64 + dist: focal + + - env: CONFIG=linux_ppc64le_python3.10.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-ppc64le DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: ppc64le + dist: focal + + - env: CONFIG=linux_ppc64le_python3.8.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-ppc64le DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: ppc64le + dist: focal - - env: CONFIG=linux_ppc64le_python3.7target_platformlinux-ppc64le UPLOAD_PACKAGES=True - PLATFORM=linux-ppc64le DOCKER_IMAGE=condaforge/linux-anvil-ppc64le - os: linux - arch: ppc64le + - env: CONFIG=linux_ppc64le_python3.9.____cpython UPLOAD_PACKAGES=True PLATFORM=linux-ppc64le DOCKER_IMAGE=quay.io/condaforge/linux-anvil-comp7 + os: linux + arch: ppc64le + dist: focal script: -- export CI=travis -- export GIT_BRANCH="$TRAVIS_BRANCH" + - export CI=travis + - export GIT_BRANCH="$TRAVIS_BRANCH" + - export FEEDSTOCK_NAME=$(basename ${TRAVIS_REPO_SLUG}) + - if [[ "${TRAVIS_PULL_REQUEST:-}" == "false" ]]; then export IS_PR_BUILD="False"; else export IS_PR_BUILD="True"; fi -- if [[ ${PLATFORM} =~ .*linux.* ]]; then ./.scripts/run_docker_build.sh; fi + - if [[ ${PLATFORM} =~ .*linux.* ]]; then CONDA_FORGE_DOCKER_RUN_ARGS="--network=host --security-opt=seccomp=unconfined" ./.scripts/run_docker_build.sh; fi \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index cba42cffc..2ec51d75f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,13 +1,27 @@ -BSD 3-clause license -Copyright (c) 2015-2019, conda-forge +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 87b38c9bf..436a4db29 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ -About python -============ +About python-feedstock +====================== + +Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/python-feedstock/blob/main/LICENSE.txt) Home: http://www.python.org/ Package license: PSF -Feedstock license: BSD 3-Clause - Summary: General purpose programming language +Development: https://docs.python.org/devguide/ + +Documentation: https://www.python.org/doc/versions/ + Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in @@ -24,22 +28,8 @@ Current build status - - - - - - @@ -49,87 +39,94 @@ Current build status
Travis - - macOS - -
Drone - - linux - -
Appveyor - - windows + + linux
- - + + - + + + + - + - + - + - + - + - + - + - + - + - + @@ -154,25 +151,52 @@ 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, `python` can be installed with: +Once the `conda-forge` channel has been enabled, `python` can be installed with `conda`: ``` conda install python ``` -It is possible to list all of the versions of `python` available on your platform with: +or with `mamba`: + +``` +mamba install python +``` + +It is possible to list all of the versions of `python` available on your platform with `conda`: ``` conda search python --channel conda-forge ``` +or with `mamba`: + +``` +mamba search python --channel conda-forge +``` + +Alternatively, `mamba repoquery` may provide more information: + +``` +# Search all versions available on your platform: +mamba repoquery search python --channel conda-forge + +# List packages depending on `python`: +mamba repoquery whoneeds python --channel conda-forge + +# List dependencies of `python`: +mamba repoquery depends python --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 @@ -182,10 +206,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-Cloud](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. @@ -224,9 +250,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 diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e5306da98..33a441c1f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -4,5 +4,4 @@ jobs: - template: ./.azure-pipelines/azure-pipelines-linux.yml - - template: ./.azure-pipelines/azure-pipelines-osx.yml - - template: ./.azure-pipelines/azure-pipelines-win.yml \ No newline at end of file + - template: ./.azure-pipelines/azure-pipelines-osx.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py index 8f7ecca4f..3f4b7a794 100755 --- a/build-locally.py +++ b/build-locally.py @@ -7,11 +7,21 @@ import glob import subprocess from argparse import ArgumentParser +import platform 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" + ) def run_docker_build(ns): @@ -19,6 +29,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 +57,48 @@ 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=SDKs' " + "to download the SDK automatically to 'SDKs/MacOSX.sdk'. " + "Setting this variable implies agreement to the licensing terms of the SDK by Apple." + ) 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) + 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/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml new file mode 100644 index 000000000..be2790cd9 --- /dev/null +++ b/recipe/conda_build_config.yaml @@ -0,0 +1,4 @@ +docker_image: + - quay.io/condaforge/linux-anvil-comp7 +openssl: # [unix] + - 1.1.1u # [unix] diff --git a/recipe/meta.yaml b/recipe/meta.yaml index cadd98bf5..d6a0e829e 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,5 +1,5 @@ -{% set version = "2.7.15" %} -{% set sha256 = "18617d1f15a380a919d517630a9cd85ce17ea602f9bbdc58ddc672df4b0239db" %} +{% set version = "2.7.18" %} +{% set sha256 = "da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814" %} package: name: python @@ -44,9 +44,9 @@ source: - url: https://github.com/python/cpython-source-deps/archive/bsddb-4.7.25.0.zip # [win] folder: externals/bsddb-4.7.25.0 # [win] sha256: 0bc1f79d2bbff8159cf56103db615cc011458b7b0f5fc4c8c3db3132f026abbc # [win] - - url: https://github.com/python/cpython-source-deps/archive/openssl-1.0.2o.zip # [win] - folder: externals/openssl-1.0.2o # [win] - sha256: 9db2a35ef254b57e16a47916810a3bf1cd639b512b5fe6c1cb51afc985113595 # [win] + - url: https://github.com/python/cpython-source-deps/archive/openssl-1.1.1u.zip # [win] + folder: externals/openssl-1.1.1u # [win] + sha256: f2463948d3a40d030b36c9794f82dc2b7b97db4b8c869507efa21eed574301d8 # [win] - url: https://github.com/python/cpython-source-deps/archive/sqlite-3.14.2.0.zip # [win] folder: externals/sqlite-3.14.2.0 # [win] sha256: c1ff98c76c11dc10b2abe94d72ea5bae7da64ba8da9455a9af5dc3eae0f2f880 # [win] @@ -65,7 +65,7 @@ source: build: - number: 1011 + number: 0 no_link: - bin/python2.7 # [unix] - DLLs/_ctypes.pyd # [win] @@ -92,6 +92,7 @@ requirements: - {{ cdt('libx11-devel') }} # [linux] - make # [unix] - pkg-config # [unix] + - openssl # [unix] host: - bzip2 # [unix] - sqlite # [unix] @@ -104,6 +105,7 @@ requirements: - ld_impl_{{ target_platform }} # [linux] run: - ld_impl_{{ target_platform }} # [linux] + - openssl # [unix] run_constrained: - python_abi 2.7.* *_cp27m # [not linux] - python_abi 2.7.* *_cp27mu # [linux] diff --git a/recipe/run_test.py b/recipe/run_test.py index 8ae02c2bf..246e6de82 100644 --- a/recipe/run_test.py +++ b/recipe/run_test.py @@ -1,8 +1,8 @@ # make sure Grammar pickle files are present import os from os.path import dirname, isfile, join -for fn in ('Grammar2.7.15.final.0.pickle', - 'PatternGrammar2.7.15.final.0.pickle'): +for fn in ('Grammar2.7.18.final.0.pickle', + 'PatternGrammar2.7.18.final.0.pickle'): assert isfile(join(dirname(os.__file__), 'lib2to3', fn)) import platform @@ -21,8 +21,8 @@ debug = int(os.getenv('DEBUG', 0)) print('Python version:', platform.python_version()) -assert platform.python_version() == '2.7.15' -assert sys.version_info[:3] == (2, 7, 15) +assert platform.python_version() == '2.7.18' +assert sys.version_info[:3] == (2, 7, 18) if sys.platform == 'win32': assert 'MSC v.1500' in sys.version print('max unicode:', sys.maxunicode) diff --git a/recipe/yum_requirements.txt b/recipe/yum_requirements.txt index c7d20733b..1067ae82b 100644 --- a/recipe/yum_requirements.txt +++ b/recipe/yum_requirements.txt @@ -1,6 +1,6 @@ libx11 libXext-devel -libXrender-devel -libSM-devel +libXrender-devel +libSM-devel libX11-devel prelink
VariantStatus
linux_aarch64_python3.6target_platformlinux-aarch64linux_64_python3.10.____cpython + + variant + +
linux_64_python3.8.____cpython - - variant + + variant
linux_aarch64_python3.7target_platformlinux-aarch64linux_64_python3.9.____cpython - - variant + + variant
linux_ppc64le_python3.6target_platformlinux-ppc64lelinux_aarch64_python3.10.____cpython - - variant + + variant
linux_ppc64le_python3.7target_platformlinux-ppc64lelinux_aarch64_python3.8.____cpython - - variant + + variant
linux_python2.7target_platformlinux-64linux_aarch64_python3.9.____cpython - - variant + + variant
linux_python3.6target_platformlinux-64linux_ppc64le_python3.10.____cpython - - variant + + variant
linux_python3.7target_platformlinux-64linux_ppc64le_python3.8.____cpython - - variant + + variant
osx_python2.7linux_ppc64le_python3.9.____cpython - - variant + + variant
osx_python3.6osx_64_python3.10.____cpython - - variant + + variant
osx_python3.7osx_64_python3.8.____cpython - - variant + + variant
win_c_compilervs2008cxx_compilervs2008python2.7vc9osx_64_python3.9.____cpython - - variant + + variant