diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 6530706..5baf4d6 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -5,37 +5,32 @@ 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_numpy1.22python3.10.____cpython: + CONFIG: linux_64_numpy1.22python3.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-cos7-x86_64 + linux_64_numpy1.22python3.8.____cpython: + CONFIG: linux_64_numpy1.22python3.8.____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-cos7-x86_64 + linux_64_numpy1.22python3.9.____cpython: + CONFIG: linux_64_numpy1.22python3.9.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_numpy1.19python3.7.____73_pypy: - CONFIG: linux_64_numpy1.19python3.7.____73_pypy + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + linux_64_numpy1.23python3.11.____cpython: + CONFIG: linux_64_numpy1.23python3.11.____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-cos7-x86_64 + linux_64_numpy1.26python3.12.____cpython: + CONFIG: linux_64_numpy1.26python3.12.____cpython UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 timeoutInMinutes: 360 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: | @@ -48,6 +43,11 @@ jobs: 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: diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 5efb990..af964da 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,23 +5,23 @@ jobs: - job: osx pool: - vmImage: macOS-10.15 + vmImage: macOS-11 strategy: matrix: - osx_64_numpy1.16python3.6.____cpython: - CONFIG: osx_64_numpy1.16python3.6.____cpython + osx_64_numpy1.22python3.10.____cpython: + CONFIG: osx_64_numpy1.22python3.10.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.7.____cpython: - CONFIG: osx_64_numpy1.16python3.7.____cpython + osx_64_numpy1.22python3.8.____cpython: + CONFIG: osx_64_numpy1.22python3.8.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.16python3.8.____cpython: - CONFIG: osx_64_numpy1.16python3.8.____cpython + osx_64_numpy1.22python3.9.____cpython: + CONFIG: osx_64_numpy1.22python3.9.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.19python3.7.____73_pypy: - CONFIG: osx_64_numpy1.19python3.7.____73_pypy + osx_64_numpy1.23python3.11.____cpython: + CONFIG: osx_64_numpy1.23python3.11.____cpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.19python3.9.____cpython: - CONFIG: osx_64_numpy1.19python3.9.____cpython + osx_64_numpy1.26python3.12.____cpython: + CONFIG: osx_64_numpy1.26python3.12.____cpython UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 @@ -32,6 +32,11 @@ jobs: 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/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index fa86d68..94db650 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -5,115 +5,57 @@ jobs: - job: win pool: - vmImage: vs2017-win2016 + vmImage: windows-2022 strategy: matrix: - win_64_numpy1.16python3.6.____cpython: - CONFIG: win_64_numpy1.16python3.6.____cpython + win_64_numpy1.22python3.10.____cpython: + CONFIG: win_64_numpy1.22python3.10.____cpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.16python3.7.____cpython: - CONFIG: win_64_numpy1.16python3.7.____cpython + win_64_numpy1.22python3.8.____cpython: + CONFIG: win_64_numpy1.22python3.8.____cpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.16python3.8.____cpython: - CONFIG: win_64_numpy1.16python3.8.____cpython + win_64_numpy1.22python3.9.____cpython: + CONFIG: win_64_numpy1.22python3.9.____cpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.19python3.9.____cpython: - CONFIG: win_64_numpy1.19python3.9.____cpython + win_64_numpy1.23python3.11.____cpython: + CONFIG: win_64_numpy1.23python3.11.____cpython + UPLOAD_PACKAGES: 'True' + win_64_numpy1.26python3.12.____cpython: + CONFIG: win_64_numpy1.26python3.12.____cpython UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ + UPLOAD_TEMP: D:\\tmp steps: - - 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 + - task: PythonScript@0 + displayName: 'Download Miniforge' inputs: - packageSpecs: 'python=3.6 conda-build conda "conda-forge-ci-setup=3" pip' # Optional - installOptions: "-c conda-forge" - updateConda: true - displayName: Install conda-build and activate environment - - - script: set PYTHONUNBUFFERED=1 - displayName: Set PYTHONUNBUFFERED + scriptSource: inline + script: | + import urllib.request + url = 'https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Windows-x86_64.exe' + path = r"$(Build.ArtifactStagingDirectory)/Miniforge.exe" + urllib.request.urlretrieve(url, path) - # Configure the VM - script: | - call activate base - setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml - displayName: conda-forge CI setup + start /wait "" %BUILD_ARTIFACTSTAGINGDIRECTORY%\Miniforge.exe /InstallationType=JustMe /RegisterPython=0 /S /D=C:\Miniforge + displayName: Install Miniforge - # Configure the VM. - - script: | - set "CI=azure" - call activate base - run_conda_forge_build_setup - displayName: conda-forge build setup - + - powershell: Write-Host "##vso[task.prependpath]C:\Miniforge\Scripts" + displayName: Add conda to PATH - # Special cased version setting some more things! - script: | - call activate base - conda.exe build "recipe" -m .ci_support\%CONFIG%.yaml - displayName: Build recipe (vs2008) + call ".scripts\run_win_build.bat" + displayName: Run Windows build 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: | - call activate base - conda.exe build "recipe" -m .ci_support\%CONFIG%.yaml - displayName: Build recipe - env: - PYTHONUNBUFFERED: 1 - condition: not(contains(variables['CONFIG'], 'vs2008')) - - script: | - set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" - call activate base - validate_recipe_outputs "%FEEDSTOCK_NAME%" - displayName: Validate Recipe Outputs - - - script: | - set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" - set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" - call activate base - upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml - displayName: Upload package - env: + CONFIG: $(CONFIG) + CI: azure + UPLOAD_PACKAGES: $(UPLOAD_PACKAGES) + UPLOAD_TEMP: $(UPLOAD_TEMP) BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) - condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False'))) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file 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_numpy1.22python3.10.____cpython.yaml similarity index 67% rename from .ci_support/linux_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/linux_64_numpy1.22python3.10.____cpython.yaml index 51082a6..c9eb753 100644 --- a/.ci_support/linux_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml @@ -1,41 +1,38 @@ c_compiler: - gcc c_compiler_version: -- '9' +- '12' cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '12' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.6.* *_cpython +- 3.10.* *_cpython target_platform: - linux-64 zip_keys: - - c_compiler_version - cxx_compiler_version -- - cdt_name - - docker_image - - python - numpy + - channel_sources diff --git a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml similarity index 70% rename from .ci_support/linux_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/linux_64_numpy1.22python3.8.____cpython.yaml index 980e993..d5541ae 100644 --- a/.ci_support/linux_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml @@ -1,30 +1,28 @@ c_compiler: - gcc c_compiler_version: -- '9' +- '12' cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '12' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x @@ -35,7 +33,6 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - cdt_name - - docker_image - - python - numpy + - channel_sources diff --git a/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml similarity index 70% rename from .ci_support/linux_64_numpy1.19python3.9.____cpython.yaml rename to .ci_support/linux_64_numpy1.22python3.9.____cpython.yaml index c3a3e5e..73799a2 100644 --- a/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml @@ -1,30 +1,28 @@ c_compiler: - gcc c_compiler_version: -- '9' +- '12' cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '12' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.19' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x @@ -35,7 +33,6 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - cdt_name - - docker_image - - python - numpy + - channel_sources diff --git a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml similarity index 67% rename from .ci_support/linux_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/linux_64_numpy1.23python3.11.____cpython.yaml index 1e491e6..82f2520 100644 --- a/.ci_support/linux_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml @@ -1,41 +1,38 @@ c_compiler: - gcc c_compiler_version: -- '9' +- '12' cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '12' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.23' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_cpython +- 3.11.* *_cpython target_platform: - linux-64 zip_keys: - - c_compiler_version - cxx_compiler_version -- - cdt_name - - docker_image - - python - numpy + - channel_sources diff --git a/.ci_support/linux_64_numpy1.19python3.7.____73_pypy.yaml b/.ci_support/linux_64_numpy1.26python3.12.____cpython.yaml similarity index 67% rename from .ci_support/linux_64_numpy1.19python3.7.____73_pypy.yaml rename to .ci_support/linux_64_numpy1.26python3.12.____cpython.yaml index 6be6fe0..04b0bab 100644 --- a/.ci_support/linux_64_numpy1.19python3.7.____73_pypy.yaml +++ b/.ci_support/linux_64_numpy1.26python3.12.____cpython.yaml @@ -1,41 +1,38 @@ c_compiler: - gcc c_compiler_version: -- '9' +- '12' cdt_name: - cos6 channel_sources: -- conda-forge,defaults +- conda-forge/label/python_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: - gxx cxx_compiler_version: -- '9' +- '12' docker_image: -- quay.io/condaforge/linux-anvil-comp7 +- quay.io/condaforge/linux-anvil-cos7-x86_64 gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.19' +- '1.26' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_73_pypy +- 3.12.* *_cpython target_platform: - linux-64 zip_keys: - - c_compiler_version - cxx_compiler_version -- - cdt_name - - docker_image - - python - numpy + - channel_sources diff --git a/.ci_support/migrations/pypy37.yaml b/.ci_support/migrations/pypy37.yaml deleted file mode 100644 index d0998ab..0000000 --- a/.ci_support/migrations/pypy37.yaml +++ /dev/null @@ -1,30 +0,0 @@ -migrator_ts: 1608144114 -__migrator: - migration_number: 1 - operation: key_add - primary_key: python - ordering: - python: - - 3.6.* *_cpython - - 3.7.* *_cpython - - 3.8.* *_cpython - - 3.9.* *_cpython - - 3.6.* *_73_pypy - - 3.7.* *_73_pypy # new entry - paused: False - longterm: True - pr_limit: 8 - bump_number: 0 - exclude: - # this shouldn't attempt to modify the python feedstocks - - python - - pypy3.6 - - pypy-meta - -python: # [not (win or arm64)] - - 3.7.* *_73_pypy # [not (win or arm64)] -# additional entries to add for zip_keys -numpy: # [not (win or arm64)] - - 1.19 # [not (win or arm64)] -python_impl: # [not (win or arm64)] - - pypy # [not (win or arm64)] diff --git a/.ci_support/migrations/python312.yaml b/.ci_support/migrations/python312.yaml new file mode 100644 index 0000000..89749ad --- /dev/null +++ b/.ci_support/migrations/python312.yaml @@ -0,0 +1,42 @@ +migrator_ts: 1695046563 +__migrator: + migration_number: 1 + operation: key_add + primary_key: python + ordering: + python: + - 3.6.* *_cpython + - 3.7.* *_cpython + - 3.8.* *_cpython + - 3.9.* *_cpython + - 3.10.* *_cpython + - 3.11.* *_cpython + - 3.12.* *_cpython # new entry + - 3.6.* *_73_pypy + - 3.7.* *_73_pypy + - 3.8.* *_73_pypy + - 3.9.* *_73_pypy + paused: false + longterm: True + pr_limit: 60 + max_solver_attempts: 3 # this will make the bot retry "not solvable" stuff 12 times + exclude: + # this shouldn't attempt to modify the python feedstocks + - python + - pypy3.6 + - pypy-meta + - cross-python + - python_abi + exclude_pinned_pkgs: false + additional_zip_keys: + - channel_sources + +python: + - 3.12.* *_cpython +channel_sources: + - conda-forge/label/python_rc,conda-forge +# additional entries to add for zip_keys +numpy: + - 1.26 +python_impl: + - cpython diff --git a/.ci_support/migrations/python39.yaml b/.ci_support/migrations/python39.yaml deleted file mode 100644 index 3eff5c7..0000000 --- a/.ci_support/migrations/python39.yaml +++ /dev/null @@ -1,26 +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 - pr_limit: 50 - exclude: - # this shouldn't attempt to modify the python feedstocks - - python - - pypy3.6 - - pypy-meta -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_numpy1.22python3.10.____cpython.yaml similarity index 79% rename from .ci_support/osx_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/osx_64_numpy1.22python3.10.____cpython.yaml index bb4b418..f2a1e9a 100644 --- a/.ci_support/osx_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.22python3.10.____cpython.yaml @@ -3,33 +3,31 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '11' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '15' gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.16' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.6.* *_cpython +- 3.10.* *_cpython target_platform: - osx-64 zip_keys: @@ -37,3 +35,4 @@ zip_keys: - cxx_compiler_version - - python - numpy + - channel_sources diff --git a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/osx_64_numpy1.22python3.8.____cpython.yaml similarity index 82% rename from .ci_support/osx_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/osx_64_numpy1.22python3.8.____cpython.yaml index 2fac985..91ae81e 100644 --- a/.ci_support/osx_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.22python3.8.____cpython.yaml @@ -3,28 +3,26 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '11' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '15' gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.16' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x @@ -37,3 +35,4 @@ zip_keys: - cxx_compiler_version - - python - numpy + - channel_sources diff --git a/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/osx_64_numpy1.22python3.9.____cpython.yaml similarity index 82% rename from .ci_support/osx_64_numpy1.19python3.9.____cpython.yaml rename to .ci_support/osx_64_numpy1.22python3.9.____cpython.yaml index 9180e64..a81bafb 100644 --- a/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.22python3.9.____cpython.yaml @@ -3,28 +3,26 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '11' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '15' gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.19' +- '1.22' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x @@ -37,3 +35,4 @@ zip_keys: - cxx_compiler_version - - python - numpy + - channel_sources diff --git a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/osx_64_numpy1.23python3.11.____cpython.yaml similarity index 79% rename from .ci_support/osx_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/osx_64_numpy1.23python3.11.____cpython.yaml index d002775..03adc6c 100644 --- a/.ci_support/osx_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.23python3.11.____cpython.yaml @@ -3,33 +3,31 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '11' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '15' gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.16' +- '1.23' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_cpython +- 3.11.* *_cpython target_platform: - osx-64 zip_keys: @@ -37,3 +35,4 @@ zip_keys: - cxx_compiler_version - - python - numpy + - channel_sources diff --git a/.ci_support/osx_64_numpy1.19python3.7.____73_pypy.yaml b/.ci_support/osx_64_numpy1.26python3.12.____cpython.yaml similarity index 76% rename from .ci_support/osx_64_numpy1.19python3.7.____73_pypy.yaml rename to .ci_support/osx_64_numpy1.26python3.12.____cpython.yaml index 49b76e2..0e4b2bc 100644 --- a/.ci_support/osx_64_numpy1.19python3.7.____73_pypy.yaml +++ b/.ci_support/osx_64_numpy1.26python3.12.____cpython.yaml @@ -3,33 +3,31 @@ MACOSX_DEPLOYMENT_TARGET: c_compiler: - clang c_compiler_version: -- '11' +- '15' channel_sources: -- conda-forge,defaults +- conda-forge/label/python_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: - clangxx cxx_compiler_version: -- '11' +- '15' gmp: - '6' libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.19' +- '1.26' pin_run_as_build: - gmp: - max_pin: x python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_73_pypy +- 3.12.* *_cpython target_platform: - osx-64 zip_keys: @@ -37,3 +35,4 @@ zip_keys: - cxx_compiler_version - - python - numpy + - channel_sources diff --git a/.ci_support/win_64_numpy1.16python3.6.____cpython.yaml b/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml similarity index 68% rename from .ci_support/win_64_numpy1.16python3.6.____cpython.yaml rename to .ci_support/win_64_numpy1.22python3.10.____cpython.yaml index 4b740c2..52daf3f 100644 --- a/.ci_support/win_64_numpy1.16python3.6.____cpython.yaml +++ b/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml @@ -1,25 +1,26 @@ c_compiler: -- vs2017 +- vs2019 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: -- vs2017 +- vs2019 libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.22' pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.6.* *_cpython +- 3.10.* *_cpython target_platform: - win-64 zip_keys: - - python - numpy + - channel_sources diff --git a/.ci_support/win_64_numpy1.16python3.8.____cpython.yaml b/.ci_support/win_64_numpy1.22python3.8.____cpython.yaml similarity index 73% rename from .ci_support/win_64_numpy1.16python3.8.____cpython.yaml rename to .ci_support/win_64_numpy1.22python3.8.____cpython.yaml index 33653e3..87d04df 100644 --- a/.ci_support/win_64_numpy1.16python3.8.____cpython.yaml +++ b/.ci_support/win_64_numpy1.22python3.8.____cpython.yaml @@ -1,17 +1,17 @@ c_compiler: -- vs2017 +- vs2019 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: -- vs2017 +- vs2019 libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.22' pin_run_as_build: python: min_pin: x.x @@ -23,3 +23,4 @@ target_platform: zip_keys: - - python - numpy + - channel_sources diff --git a/.ci_support/win_64_numpy1.19python3.9.____cpython.yaml b/.ci_support/win_64_numpy1.22python3.9.____cpython.yaml similarity index 73% rename from .ci_support/win_64_numpy1.19python3.9.____cpython.yaml rename to .ci_support/win_64_numpy1.22python3.9.____cpython.yaml index cc09731..e61643f 100644 --- a/.ci_support/win_64_numpy1.19python3.9.____cpython.yaml +++ b/.ci_support/win_64_numpy1.22python3.9.____cpython.yaml @@ -1,17 +1,17 @@ c_compiler: -- vs2017 +- vs2019 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: -- vs2017 +- vs2019 libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.19' +- '1.22' pin_run_as_build: python: min_pin: x.x @@ -23,3 +23,4 @@ target_platform: zip_keys: - - python - numpy + - channel_sources diff --git a/.ci_support/win_64_numpy1.16python3.7.____cpython.yaml b/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml similarity index 68% rename from .ci_support/win_64_numpy1.16python3.7.____cpython.yaml rename to .ci_support/win_64_numpy1.23python3.11.____cpython.yaml index c2e3554..3dcc3e2 100644 --- a/.ci_support/win_64_numpy1.16python3.7.____cpython.yaml +++ b/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml @@ -1,25 +1,26 @@ c_compiler: -- vs2017 +- vs2019 channel_sources: -- conda-forge,defaults +- conda-forge channel_targets: - conda-forge main cxx_compiler: -- vs2017 +- vs2019 libblas: -- 3.8 *netlib +- 3.9 *netlib libcblas: -- 3.8 *netlib +- 3.9 *netlib numpy: -- '1.16' +- '1.23' pin_run_as_build: python: min_pin: x.x max_pin: x.x python: -- 3.7.* *_cpython +- 3.11.* *_cpython target_platform: - win-64 zip_keys: - - python - numpy + - channel_sources diff --git a/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml b/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml new file mode 100644 index 0000000..17560bd --- /dev/null +++ b/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml @@ -0,0 +1,26 @@ +c_compiler: +- vs2019 +channel_sources: +- conda-forge/label/python_rc,conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- vs2019 +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +numpy: +- '1.26' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- win-64 +zip_keys: +- - python + - numpy + - channel_sources 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..7f32763 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,6 +19,7 @@ bld.bat text eol=crlf .gitignore linguist-generated=true .travis.yml 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 aa9727b..438ed2b 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}" @@ -37,17 +59,28 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then conda debug "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ ${EXTRA_CB_OPTIONS:-} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + # Drop into an interactive shell /bin/bash else - conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + conda 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}" - 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 36dacd6..9236239 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -5,12 +5,16 @@ # 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 @@ -48,11 +52,11 @@ if [ -z "${DOCKER_IMAGE}" ]; then 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 condaforge/linux-anvil-comp7" - DOCKER_IMAGE="condaforge/linux-anvil-comp7" + 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 @@ -66,13 +70,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,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 \ @@ -83,9 +94,12 @@ docker run ${DOCKER_RUN_ARGS} \ -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..0f0ee70 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,57 +1,90 @@ #!/usr/bin/env bash -set -x +# -*- 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 -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" +MINIFORGE_FILE="Mambaforge-MacOSX-$(uname -m).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 +rm -rf ${MINIFORGE_HOME} +bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} -echo -e "\n\nConfiguring conda." -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:start:configure_conda\\r' -fi +( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null -source ${HOME}/miniforge3/etc/profile.d/conda.sh +source ${MINIFORGE_HOME}/etc/profile.d/conda.sh conda activate base -echo -e "\n\nInstalling conda-forge-ci-setup=3 and conda-build." -conda install -n base --quiet --yes "conda-forge-ci-setup=3" conda-build pip +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 -mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml -echo -e "\n\nMangling homebrew in the CI to avoid conflicts." -/usr/bin/sudo mangle_homebrew -/usr/bin/sudo -k +if [[ "${CI:-}" != "" ]]; then + mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml +fi + +if [[ "${CI:-}" != "" ]]; then + echo -e "\n\nMangling homebrew in the CI to avoid conflicts." + /usr/bin/sudo mangle_homebrew + /usr/bin/sudo -k +else + echo -e "\n\nNot mangling homebrew as we are not running in CI" +fi echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup -if [[ ${CI} == "travis" ]]; then - echo -en 'travis_fold:end:configure_conda\\r' -fi -set -e +( endgroup "Configuring conda" ) 2> /dev/null -echo -e "\n\nMaking the build clobber file and running the build." +echo -e "\n\nMaking the build clobber file" make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml -conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --suppress-variables --clobber-file ./.ci_support/clobber_${CONFIG}.yaml ${EXTRA_CB_OPTIONS:-} -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 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 -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/.scripts/run_win_build.bat b/.scripts/run_win_build.bat new file mode 100755 index 0000000..c4486d9 --- /dev/null +++ b/.scripts/run_win_build.bat @@ -0,0 +1,112 @@ +:: PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here +:: will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent +:: changes to this script, consider a proposal to conda-smithy so that other feedstocks can also +:: benefit from the improvement. + +:: Note: we assume a Miniforge installation is available + +:: INPUTS (required environment variables) +:: CONFIG: name of the .ci_support/*.yaml file for this job +:: CI: azure, github_actions, or unset +:: UPLOAD_PACKAGES: true or false +:: UPLOAD_ON_BRANCH: true or false + +setlocal enableextensions enabledelayedexpansion + +call :start_group "Configuring conda" + +:: Activate the base conda environment +call activate base + +:: Provision the necessary dependencies to build the recipe later +echo Installing dependencies +mamba.exe install "python=3.10" pip mamba conda-build boa conda-forge-ci-setup=3 -c conda-forge --strict-channel-priority --yes +if !errorlevel! neq 0 exit /b !errorlevel! + +:: Set basic configuration +echo Setting up configuration +setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml +if !errorlevel! neq 0 exit /b !errorlevel! +echo Running build setup +CALL run_conda_forge_build_setup + + +if !errorlevel! neq 0 exit /b !errorlevel! + +if EXIST LICENSE.txt ( + echo Copying feedstock license + copy LICENSE.txt "recipe\\recipe-scripts-license.txt" +) + +call :end_group + +:: Build the recipe +echo Building recipe +conda.exe mambabuild "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTRA_CB_OPTIONS% +if !errorlevel! neq 0 exit /b !errorlevel! + +:: Prepare some environment variables for the upload step +if /i "%CI%" == "github_actions" ( + set "FEEDSTOCK_NAME=%GITHUB_REPOSITORY:*/=%" + set "GIT_BRANCH=%GITHUB_REF:refs/heads/=%" + if /i "%GITHUB_EVENT_NAME%" == "pull_request" ( + set "IS_PR_BUILD=True" + ) else ( + set "IS_PR_BUILD=False" + ) + set "TEMP=%RUNNER_TEMP%" +) +if /i "%CI%" == "azure" ( + set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" + set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" + if /i "%BUILD_REASON%" == "PullRequest" ( + set "IS_PR_BUILD=True" + ) else ( + set "IS_PR_BUILD=False" + ) + set "TEMP=%UPLOAD_TEMP%" +) + +:: Validate +call :start_group "Validating outputs" +validate_recipe_outputs "%FEEDSTOCK_NAME%" +if !errorlevel! neq 0 exit /b !errorlevel! +call :end_group + +if /i "%UPLOAD_PACKAGES%" == "true" ( + if /i "%IS_PR_BUILD%" == "false" ( + call :start_group "Uploading packages" + if not exist "%TEMP%\" md "%TEMP%" + set "TMP=%TEMP%" + upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml + if !errorlevel! neq 0 exit /b !errorlevel! + call :end_group + ) +) + +exit + +:: Logging subroutines + +:start_group +if /i "%CI%" == "github_actions" ( + echo ::group::%~1 + exit /b +) +if /i "%CI%" == "azure" ( + echo ##[group]%~1 + exit /b +) +echo %~1 +exit /b + +:end_group +if /i "%CI%" == "github_actions" ( + echo ::endgroup:: + exit /b +) +if /i "%CI%" == "azure" ( + echo ##[endgroup] + exit /b +) +exit /b \ 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 e6d3520..3de3bab 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -About wildmeshing -================= +About wildmeshing-feedstock +=========================== + +Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/wildmeshing-feedstock/blob/main/LICENSE.txt) Home: https://github.com/wildmeshing/wildmeshing-python Package license: LGPL-2.0-only -Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/wildmeshing-feedstock/blob/master/LICENSE.txt) - Summary: Simple, fast, robust meshing Development: https://github.com/wildmeshing/wildmeshing-python @@ -26,108 +26,115 @@ Current build status
- - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + @@ -152,25 +159,52 @@ Installing `wildmeshing` from the `conda-forge` channel can be achieved by addin ``` conda config --add channels conda-forge +conda config --set channel_priority strict ``` -Once the `conda-forge` channel has been enabled, `wildmeshing` can be installed with: +Once the `conda-forge` channel has been enabled, `wildmeshing` can be installed with `conda`: ``` conda install wildmeshing ``` -It is possible to list all of the versions of `wildmeshing` available on your platform with: +or with `mamba`: + +``` +mamba install wildmeshing +``` + +It is possible to list all of the versions of `wildmeshing` available on your platform with `conda`: ``` conda search wildmeshing --channel conda-forge ``` +or with `mamba`: + +``` +mamba search wildmeshing --channel conda-forge +``` + +Alternatively, `mamba repoquery` may provide more information: + +``` +# Search all versions available on your platform: +mamba repoquery search wildmeshing --channel conda-forge + +# List packages depending on `wildmeshing`: +mamba repoquery whoneeds wildmeshing --channel conda-forge + +# List dependencies of `wildmeshing`: +mamba repoquery depends wildmeshing --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 @@ -180,10 +214,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. @@ -222,9 +258,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/build-locally.py b/build-locally.py index 3453cfe..3f4b7a7 100755 --- a/build-locally.py +++ b/build-locally.py @@ -7,15 +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): @@ -23,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") @@ -46,10 +57,17 @@ 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): @@ -68,7 +86,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/recipe/meta.yaml b/recipe/meta.yaml index 1148f6b..291335a 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -13,7 +13,7 @@ source: folder: svgpathtools build: - number: 1 + number: 2 skip: True # [py<31] script: - mv svgpathtools/* wildmeshing/parse_svg # [unix]
VariantStatus
linux_64_numpy1.16python3.6.____cpythonlinux_64_numpy1.22python3.10.____cpython - - variant + + variant
linux_64_numpy1.16python3.7.____cpythonlinux_64_numpy1.22python3.8.____cpython - - variant + + variant
linux_64_numpy1.16python3.8.____cpythonlinux_64_numpy1.22python3.9.____cpython - - variant + + variant
linux_64_numpy1.19python3.7.____73_pypylinux_64_numpy1.23python3.11.____cpython - - variant + + variant
linux_64_numpy1.19python3.9.____cpythonlinux_64_numpy1.26python3.12.____cpython - - variant + + variant
osx_64_numpy1.16python3.6.____cpythonosx_64_numpy1.22python3.10.____cpython - - variant + + variant
osx_64_numpy1.16python3.7.____cpythonosx_64_numpy1.22python3.8.____cpython - - variant + + variant
osx_64_numpy1.16python3.8.____cpythonosx_64_numpy1.22python3.9.____cpython - - variant + + variant
osx_64_numpy1.19python3.7.____73_pypyosx_64_numpy1.23python3.11.____cpython - - variant + + variant
osx_64_numpy1.19python3.9.____cpythonosx_64_numpy1.26python3.12.____cpython - - variant + + variant
win_64_numpy1.16python3.6.____cpythonwin_64_numpy1.22python3.10.____cpython - - variant + + variant
win_64_numpy1.16python3.7.____cpythonwin_64_numpy1.22python3.8.____cpython - - variant + + variant
win_64_numpy1.16python3.8.____cpythonwin_64_numpy1.22python3.9.____cpython - - variant + + variant
win_64_numpy1.19python3.9.____cpythonwin_64_numpy1.23python3.11.____cpython - - variant + + variant + +
win_64_numpy1.26python3.12.____cpython + + variant