diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index e5f9736..3371f3f 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -12,22 +12,52 @@ jobs: CONFIG: osx_64_python3.10.____cpython UPLOAD_PACKAGES: 'True' VMIMAGE: macOS-15 + store_build_artifacts: false osx_64_python3.11.____cpython: CONFIG: osx_64_python3.11.____cpython UPLOAD_PACKAGES: 'True' VMIMAGE: macOS-15 + store_build_artifacts: false osx_64_python3.12.____cpython: CONFIG: osx_64_python3.12.____cpython UPLOAD_PACKAGES: 'True' VMIMAGE: macOS-15 + store_build_artifacts: false osx_64_python3.13.____cp313: CONFIG: osx_64_python3.13.____cp313 UPLOAD_PACKAGES: 'True' VMIMAGE: macOS-15 + store_build_artifacts: false osx_64_python3.14.____cp314: CONFIG: osx_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' VMIMAGE: macOS-15 + store_build_artifacts: false + osx_arm64_python3.10.____cpython: + CONFIG: osx_arm64_python3.10.____cpython + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15-arm64 + store_build_artifacts: false + osx_arm64_python3.11.____cpython: + CONFIG: osx_arm64_python3.11.____cpython + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15-arm64 + store_build_artifacts: false + osx_arm64_python3.12.____cpython: + CONFIG: osx_arm64_python3.12.____cpython + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15-arm64 + store_build_artifacts: false + osx_arm64_python3.13.____cp313: + CONFIG: osx_arm64_python3.13.____cp313 + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15-arm64 + store_build_artifacts: false + osx_arm64_python3.14.____cp314: + CONFIG: osx_arm64_python3.14.____cp314 + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15-arm64 + store_build_artifacts: false timeoutInMinutes: 360 variables: {} diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 2adcb90..0a281de 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -11,18 +11,23 @@ jobs: win_64_python3.10.____cpython: CONFIG: win_64_python3.10.____cpython UPLOAD_PACKAGES: 'True' + store_build_artifacts: false win_64_python3.11.____cpython: CONFIG: win_64_python3.11.____cpython UPLOAD_PACKAGES: 'True' + store_build_artifacts: false win_64_python3.12.____cpython: CONFIG: win_64_python3.12.____cpython UPLOAD_PACKAGES: 'True' + store_build_artifacts: false win_64_python3.13.____cp313: CONFIG: win_64_python3.13.____cp313 UPLOAD_PACKAGES: 'True' + store_build_artifacts: false win_64_python3.14.____cp314: CONFIG: win_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' + store_build_artifacts: false timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ diff --git a/.ci_support/linux_aarch64_python3.10.____cpython.yaml b/.ci_support/linux_aarch64_python3.10.____cpython.yaml new file mode 100644 index 0000000..6597213 --- /dev/null +++ b/.ci_support/linux_aarch64_python3.10.____cpython.yaml @@ -0,0 +1,31 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- linux-aarch64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/linux_aarch64_python3.11.____cpython.yaml b/.ci_support/linux_aarch64_python3.11.____cpython.yaml new file mode 100644 index 0000000..470eecc --- /dev/null +++ b/.ci_support/linux_aarch64_python3.11.____cpython.yaml @@ -0,0 +1,31 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- linux-aarch64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/linux_aarch64_python3.12.____cpython.yaml b/.ci_support/linux_aarch64_python3.12.____cpython.yaml new file mode 100644 index 0000000..49afa5f --- /dev/null +++ b/.ci_support/linux_aarch64_python3.12.____cpython.yaml @@ -0,0 +1,31 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- linux-aarch64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/linux_aarch64_python3.13.____cp313.yaml b/.ci_support/linux_aarch64_python3.13.____cp313.yaml new file mode 100644 index 0000000..79292fc --- /dev/null +++ b/.ci_support/linux_aarch64_python3.13.____cp313.yaml @@ -0,0 +1,31 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.13.* *_cp313 +target_platform: +- linux-aarch64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/linux_aarch64_python3.14.____cp314.yaml b/.ci_support/linux_aarch64_python3.14.____cp314.yaml new file mode 100644 index 0000000..4e43776 --- /dev/null +++ b/.ci_support/linux_aarch64_python3.14.____cp314.yaml @@ -0,0 +1,31 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314 +target_platform: +- linux-aarch64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/osx_arm64_python3.10.____cpython.yaml b/.ci_support/osx_arm64_python3.10.____cpython.yaml new file mode 100644 index 0000000..7f05cd9 --- /dev/null +++ b/.ci_support/osx_arm64_python3.10.____cpython.yaml @@ -0,0 +1,35 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/osx_arm64_python3.11.____cpython.yaml b/.ci_support/osx_arm64_python3.11.____cpython.yaml new file mode 100644 index 0000000..27bdbcb --- /dev/null +++ b/.ci_support/osx_arm64_python3.11.____cpython.yaml @@ -0,0 +1,35 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/osx_arm64_python3.12.____cpython.yaml b/.ci_support/osx_arm64_python3.12.____cpython.yaml new file mode 100644 index 0000000..1b6e974 --- /dev/null +++ b/.ci_support/osx_arm64_python3.12.____cpython.yaml @@ -0,0 +1,35 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/osx_arm64_python3.13.____cp313.yaml b/.ci_support/osx_arm64_python3.13.____cp313.yaml new file mode 100644 index 0000000..f53c1d1 --- /dev/null +++ b/.ci_support/osx_arm64_python3.13.____cp313.yaml @@ -0,0 +1,35 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.13.* *_cp313 +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.ci_support/osx_arm64_python3.14.____cp314.yaml b/.ci_support/osx_arm64_python3.14.____cp314.yaml new file mode 100644 index 0000000..8ba3ce1 --- /dev/null +++ b/.ci_support/osx_arm64_python3.14.____cp314.yaml @@ -0,0 +1,35 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314 +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index 3e1fda7..c126709 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -23,26 +23,61 @@ jobs: matrix: include: - CONFIG: linux_64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.13.____cp313 + STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.14.____cp314 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.13.____cp313 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.14.____cp314 + STORE_BUILD_ARTIFACTS: False UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] @@ -119,7 +154,7 @@ jobs: env: # default value; make it explicit, as it needs to match with artefact # generation below. Not configurable for now, can be revisited later - CONDA_BLD_DIR: C:\bld + CONDA_BLD_PATH: C:\bld MINIFORGE_HOME: ${{ contains(runner.arch, 'ARM') && 'C' || 'D' }}:\Miniforge PYTHONUNBUFFERED: 1 CONFIG: ${{ matrix.CONFIG }} diff --git a/.gitignore b/.gitignore index 47b5408..86a9c55 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ # Ignore all files and folders in root * !/conda-forge.yml +!.recipe_maintainers.json # Don't ignore any files/folders if the parent folder is 'un-ignored' # This also avoids warnings when adding an already-checked file with an ignored parent. diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index d7df163..c6ce254 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -32,11 +32,19 @@ pkgs_dirs: solver: libmamba CONDARC -mv /opt/conda/conda-meta/history /opt/conda/conda-meta/history.$(date +%Y-%m-%d-%H-%M-%S) -echo > /opt/conda/conda-meta/history -micromamba install --root-prefix ~/.conda --prefix /opt/conda \ - --yes --override-channels --channel conda-forge --strict-channel-priority \ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +pushd "${FEEDSTOCK_ROOT}" +arch=$(uname -m) +if [[ "$arch" == "x86_64" ]]; then + arch="64" +fi +sed -i.bak -e "s/platforms = .*/platforms = [\"linux-${arch}\"]/" -e "s/# __PLATFORM_SPECIFIC_ENV__ =/docker-build-linux-$arch =/" pixi.toml +echo "Creating environment" +PIXI_CACHE_DIR=/opt/conda pixi install --environment docker-build-linux-$arch +pixi list +echo "Activating environment" +eval "$(pixi shell-hook --environment docker-build-linux-$arch)" +mv pixi.toml.bak pixi.toml +popd export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 # set up the condarc @@ -49,6 +57,9 @@ source run_conda_forge_build_setup # make the build number clobber make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --test skip" +fi ( endgroup "Configuring conda" ) 2> /dev/null @@ -58,20 +69,16 @@ if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then 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 + echo "rattler-build currently doesn't support debug mode" else - conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ - --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ - --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" + + rattler-build build --recipe "${RECIPE_ROOT}" \ + -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + ${EXTRA_CB_OPTIONS:-} \ + --target-platform "${HOST_PLATFORM}" \ + --extra-meta flow_run_id="${flow_run_id:-}" \ + --extra-meta remote_url="${remote_url:-}" \ + --extra-meta sha="${sha:-}" ( startgroup "Inspecting artifacts" ) 2> /dev/null # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index df767d0..463cbc8 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -9,34 +9,24 @@ set -xe MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" - -( startgroup "Provisioning base env with micromamba" ) 2> /dev/null -MICROMAMBA_VERSION="1.5.10-0" -if [[ "$(uname -m)" == "arm64" ]]; then - osx_arch="osx-arm64" -else - osx_arch="osx-64" +( startgroup "Provisioning base env with pixi" ) 2> /dev/null +mkdir -p "${MINIFORGE_HOME}" +curl -fsSL https://pixi.sh/install.sh | bash +export PATH="~/.pixi/bin:$PATH" +arch=$(uname -m) +if [[ "$arch" == "x86_64" ]]; then + arch="64" fi -MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" -MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" -echo "Downloading micromamba ${MICROMAMBA_VERSION}" -micromamba_exe="$(mktemp -d)/micromamba" -curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" -chmod +x "${micromamba_exe}" +sed -i.bak "s/platforms = .*/platforms = [\"osx-${arch}\"]/" pixi.toml echo "Creating environment" -"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ - --channel conda-forge \ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" -mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" -echo "Cleaning up micromamba" -rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true -( endgroup "Provisioning base env with micromamba" ) 2> /dev/null +pixi install +pixi list +echo "Activating environment" +eval "$(pixi shell-hook)" +mv pixi.toml.bak pixi.toml +( endgroup "Provisioning base env with pixi" ) 2> /dev/null ( startgroup "Configuring conda" ) 2> /dev/null -echo "Activating environment" -source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" -conda activate base export CONDA_SOLVER="libmamba" export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 @@ -89,29 +79,25 @@ 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 + echo "rattler-build does not currently support debug mode" else - conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ - --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ - --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" + if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --test skip" + fi + + rattler-build build --recipe ./recipe \ + -m ./.ci_support/${CONFIG}.yaml \ + ${EXTRA_CB_OPTIONS:-} \ + --target-platform "${HOST_PLATFORM}" \ + --extra-meta flow_run_id="$flow_run_id" \ + --extra-meta remote_url="$remote_url" \ + --extra-meta sha="$sha" ( startgroup "Inspecting artifacts" ) 2> /dev/null diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 2b9fd75..fce25ea 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -13,36 +13,49 @@ setlocal enableextensions enabledelayedexpansion FOR %%A IN ("%~dp0.") DO SET "REPO_ROOT=%%~dpA" -if "%MINIFORGE_HOME%"=="" set "MINIFORGE_HOME=%USERPROFILE%\Miniforge3" +if "%MINIFORGE_HOME%"=="" ( + set "MINIFORGE_HOME=%REPO_ROOT%\.pixi\envs\default" +) else ( + set "PIXI_CACHE_DIR=%MINIFORGE_HOME%" +) :: Remove trailing backslash, if present if "%MINIFORGE_HOME:~-1%"=="\" set "MINIFORGE_HOME=%MINIFORGE_HOME:~0,-1%" -call :start_group "Provisioning base env with micromamba" -set "MAMBA_ROOT_PREFIX=%MINIFORGE_HOME%-micromamba-%RANDOM%" -set "MICROMAMBA_VERSION=1.5.10-0" -set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-64" -set "MICROMAMBA_TMPDIR=%TMP%\micromamba-%RANDOM%" -set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" - -echo Downloading micromamba %MICROMAMBA_VERSION% -if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%" -powershell -ExecutionPolicy Bypass -Command "(New-Object Net.WebClient).DownloadFile('%MICROMAMBA_URL%', '%MICROMAMBA_EXE%')" +call :start_group "Provisioning base env with pixi" +echo Installing pixi +powershell -NoProfile -ExecutionPolicy unrestricted -Command "iwr -useb https://pixi.sh/install.ps1 | iex" if !errorlevel! neq 0 exit /b !errorlevel! - -echo Creating environment -call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^ - --channel conda-forge ^ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +set "PATH=%USERPROFILE%\.pixi\bin;%PATH%" +echo Installing environment +if "%PIXI_CACHE_DIR%"=="%MINIFORGE_HOME%" ( + mkdir "%MINIFORGE_HOME%" + copy /Y pixi.toml "%MINIFORGE_HOME%" + pushd "%MINIFORGE_HOME%" +) else ( + pushd "%REPO_ROOT%" +) +move /y pixi.toml pixi.toml.bak +set "arch=64" +if "%PROCESSOR_ARCHITECTURE%"=="ARM64" set "arch=arm64" +powershell -NoProfile -ExecutionPolicy unrestricted -Command "(Get-Content pixi.toml.bak -Encoding UTF8) -replace 'platforms = .*', 'platforms = [''win-%arch%'']' | Out-File pixi.toml -Encoding UTF8" +:: Git on Windows needs to run post link scripts to properly set up SSL certificates +pixi config set --global run-post-link-scripts insecure +if !errorlevel! neq 0 exit /b !errorlevel! +pixi install +if !errorlevel! neq 0 exit /b !errorlevel! +pixi list if !errorlevel! neq 0 exit /b !errorlevel! -echo Removing %MAMBA_ROOT_PREFIX% -del /S /Q "%MAMBA_ROOT_PREFIX%" >nul -del /S /Q "%MICROMAMBA_TMPDIR%" >nul +set "ACTIVATE_PIXI=%TMP%\pixi-activate-%RANDOM%.bat" +pixi shell-hook > "%ACTIVATE_PIXI%" +if !errorlevel! neq 0 exit /b !errorlevel! +call "%ACTIVATE_PIXI%" +if !errorlevel! neq 0 exit /b !errorlevel! +move /y pixi.toml.bak pixi.toml +popd call :end_group call :start_group "Configuring conda" :: Activate the base conda environment -echo Activating environment -call "%MINIFORGE_HOME%\Scripts\activate.bat" :: Configure the solver set "CONDA_SOLVER=libmamba" if !errorlevel! neq 0 exit /b !errorlevel! @@ -62,16 +75,21 @@ if EXIST LICENSE.txt ( echo Copying feedstock license copy LICENSE.txt "recipe\\recipe-scripts-license.txt" ) +if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] ( + if [%CROSSCOMPILING_EMULATOR%] == [] ( + set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --test skip" + ) +) if NOT [%flow_run_id%] == [] ( - set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%" + set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% --extra-meta remote_url=%remote_url% --extra-meta sha=%sha%" ) call :end_group :: Build the recipe echo Building recipe -conda-build.exe "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTRA_CB_OPTIONS% +rattler-build.exe build --recipe "recipe" -m .ci_support\%CONFIG%.yaml %EXTRA_CB_OPTIONS% --target-platform %HOST_PLATFORM% if !errorlevel! neq 0 exit /b !errorlevel! call :start_group "Inspecting artifacts" diff --git a/README.md b/README.md index 842b261..1d62732 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ Documentation: https://plotpy.readthedocs.io/ PlotPy is is a Python library providing efficient 2D data-plotting features for interactive computing and signal/image processing application development. It is part of the PlotPyStack project, aiming at providing a unified framework for creating scientific GUIs with Python and Qt. - Current build status ==================== @@ -67,6 +66,41 @@ Current build status variant + + linux_aarch64_python3.10.____cpython + + + variant + + + + linux_aarch64_python3.11.____cpython + + + variant + + + + linux_aarch64_python3.12.____cpython + + + variant + + + + linux_aarch64_python3.13.____cp313 + + + variant + + + + linux_aarch64_python3.14.____cp314 + + + variant + + osx_64_python3.10.____cpython @@ -102,6 +136,41 @@ Current build status variant + + osx_arm64_python3.10.____cpython + + + variant + + + + osx_arm64_python3.11.____cpython + + + variant + + + + osx_arm64_python3.12.____cpython + + + variant + + + + osx_arm64_python3.13.____cp313 + + + variant + + + + osx_arm64_python3.14.____cp314 + + + variant + + win_64_python3.10.____cpython diff --git a/conda-forge.yml b/conda-forge.yml index e30df6f..699ce1b 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,6 +1,14 @@ +build_platform: + linux_aarch64: linux_64 github: branch_name: main tooling_branch_name: main conda_build: error_overlinking: true conda_forge_output_validation: true +conda_install_tool: pixi +conda_build_tool: rattler-build +provider: + linux_aarch64: default + osx_arm64: azure +test: native_and_emulated diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..a8eaf64 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,196 @@ +# -*- mode: toml -*- +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +"$schema" = "https://pixi.sh/v0.59.0/schema/manifest/schema.json" + +[workspace] +name = "plotpy-feedstock" +version = "3.61.2" # conda-smithy version used to generate this file +description = "Pixi configuration for conda-forge/plotpy-feedstock" +authors = ["@conda-forge/plotpy"] +channels = ["conda-forge"] +platforms = ["linux-64", "linux-aarch64", "osx-64", "osx-arm64", "win-64"] +requires-pixi = ">=0.59.0" + +[dependencies] +conda-build = ">=24.1" +conda-forge-ci-setup = "4.*" +rattler-build = "*" + +[tasks.inspect-all] +cmd = "inspect_artifacts --all-packages" +description = "List contents of all packages found in rattler-build build directory." +[tasks.build] +cmd = "rattler-build build --recipe recipe" +description = "Build plotpy-feedstock directly (without setup scripts), no particular variant specified" +[tasks."build-linux_64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.10.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.10.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_64_python3.10.____cpython" +[tasks."build-linux_64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.11.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.11.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_64_python3.11.____cpython" +[tasks."build-linux_64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.12.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.12.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_64_python3.12.____cpython" +[tasks."build-linux_64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.13.____cp313.yaml" +description = "Build plotpy-feedstock with variant linux_64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-linux_64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.13.____cp313.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_64_python3.13.____cp313" +[tasks."build-linux_64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.14.____cp314.yaml" +description = "Build plotpy-feedstock with variant linux_64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-linux_64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.14.____cp314.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_64_python3.14.____cp314" +[tasks."build-linux_aarch64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_python3.10.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_aarch64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_python3.10.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_aarch64_python3.10.____cpython" +[tasks."build-linux_aarch64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_python3.11.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_aarch64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_python3.11.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_aarch64_python3.11.____cpython" +[tasks."build-linux_aarch64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_python3.12.____cpython.yaml" +description = "Build plotpy-feedstock with variant linux_aarch64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_python3.12.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_aarch64_python3.12.____cpython" +[tasks."build-linux_aarch64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_python3.13.____cp313.yaml" +description = "Build plotpy-feedstock with variant linux_aarch64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_python3.13.____cp313.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_aarch64_python3.13.____cp313" +[tasks."build-linux_aarch64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_python3.14.____cp314.yaml" +description = "Build plotpy-feedstock with variant linux_aarch64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_python3.14.____cp314.yaml" +description = "List contents of plotpy-feedstock packages built for variant linux_aarch64_python3.14.____cp314" +[tasks."build-osx_64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_64_python3.10.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-osx_64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_64_python3.10.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_64_python3.10.____cpython" +[tasks."build-osx_64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_64_python3.11.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-osx_64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_64_python3.11.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_64_python3.11.____cpython" +[tasks."build-osx_64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_64_python3.12.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-osx_64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_64_python3.12.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_64_python3.12.____cpython" +[tasks."build-osx_64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_64_python3.13.____cp313.yaml" +description = "Build plotpy-feedstock with variant osx_64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-osx_64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_64_python3.13.____cp313.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_64_python3.13.____cp313" +[tasks."build-osx_64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_64_python3.14.____cp314.yaml" +description = "Build plotpy-feedstock with variant osx_64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-osx_64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_64_python3.14.____cp314.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_64_python3.14.____cp314" +[tasks."build-osx_arm64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_arm64_python3.10.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_arm64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-osx_arm64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_arm64_python3.10.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_arm64_python3.10.____cpython" +[tasks."build-osx_arm64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_arm64_python3.11.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_arm64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-osx_arm64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_arm64_python3.11.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_arm64_python3.11.____cpython" +[tasks."build-osx_arm64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_arm64_python3.12.____cpython.yaml" +description = "Build plotpy-feedstock with variant osx_arm64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-osx_arm64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_arm64_python3.12.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_arm64_python3.12.____cpython" +[tasks."build-osx_arm64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_arm64_python3.13.____cp313.yaml" +description = "Build plotpy-feedstock with variant osx_arm64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-osx_arm64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_arm64_python3.13.____cp313.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_arm64_python3.13.____cp313" +[tasks."build-osx_arm64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/osx_arm64_python3.14.____cp314.yaml" +description = "Build plotpy-feedstock with variant osx_arm64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-osx_arm64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/osx_arm64_python3.14.____cp314.yaml" +description = "List contents of plotpy-feedstock packages built for variant osx_arm64_python3.14.____cp314" +[tasks."build-win_64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.10.____cpython.yaml" +description = "Build plotpy-feedstock with variant win_64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.10.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant win_64_python3.10.____cpython" +[tasks."build-win_64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.11.____cpython.yaml" +description = "Build plotpy-feedstock with variant win_64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.11.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant win_64_python3.11.____cpython" +[tasks."build-win_64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.12.____cpython.yaml" +description = "Build plotpy-feedstock with variant win_64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.12.____cpython.yaml" +description = "List contents of plotpy-feedstock packages built for variant win_64_python3.12.____cpython" +[tasks."build-win_64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.13.____cp313.yaml" +description = "Build plotpy-feedstock with variant win_64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-win_64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.13.____cp313.yaml" +description = "List contents of plotpy-feedstock packages built for variant win_64_python3.13.____cp313" +[tasks."build-win_64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.14.____cp314.yaml" +description = "Build plotpy-feedstock with variant win_64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-win_64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.14.____cp314.yaml" +description = "List contents of plotpy-feedstock packages built for variant win_64_python3.14.____cp314" + +[feature.smithy.dependencies] +conda-smithy = "*" +[feature.smithy.tasks.build-locally] +cmd = "python ./build-locally.py" +description = "Build packages locally using the same setup scripts used in conda-forge's CI" +[feature.smithy.tasks.smithy] +cmd = "conda-smithy" +description = "Run conda-smithy. Pass necessary arguments." +[feature.smithy.tasks.rerender] +cmd = "conda-smithy rerender" +description = "Rerender the feedstock." +[feature.smithy.tasks.lint] +cmd = "conda-smithy lint --conda-forge recipe" +description = "Lint the feedstock recipe" + +[environments] +smithy = ["smithy"] + +# This is a copy of default, to be enabled by build_steps.sh during Docker builds +# __PLATFORM_SPECIFIC_ENV__ = [] diff --git a/recipe/meta.yaml b/recipe/meta.yaml deleted file mode 100644 index 76c4cde..0000000 --- a/recipe/meta.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{% set name = "plotpy" %} -{% set version = "2.9.0" %} - -package: - name: {{ name|lower }} - version: {{ version }} - -source: - url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/plotpy-{{ version }}.tar.gz - sha256: 1746c796c5484447d133f0459c6bd9a1c7324cd1910d7f1356b19d188c6d6725 - -build: - skip: true # [py>=400 or py2k] - script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation - number: 0 - -requirements: - build: - - {{ compiler('c') }} - - {{ compiler('cxx') }} - - {{ stdlib("c") }} - host: - - python - - setuptools - - wheel - - numpy >=2.0 - - cython >=3.0 - - pip - run: - - python - - {{ pin_compatible('numpy') }} - - guidata >=3.14.1 - - pythonqwt >=0.15 - - scipy >=1.7.3 - - scikit-image >=0.19 - - pillow - - tifffile - - pyqt - -test: - imports: - - plotpy - commands: - - pip check - - set QT_QPA_PLATFORM=offscreen && pytest --collect-only --pyargs plotpy.tests # [win] - - QT_QPA_PLATFORM=offscreen pytest --collect-only --pyargs plotpy.tests # [not win] - requires: - - pip - - pytest - - pytest-xvfb # [linux] - -about: - summary: Curve and image plotting tools for Python/Qt applications - description: | - PlotPy is is a Python library providing efficient 2D data-plotting features for interactive computing and signal/image processing application development. - It is part of the PlotPyStack project, aiming at providing a unified framework for creating scientific GUIs with Python and Qt. - home: https://github.com/PlotPyStack/PlotPy - doc_url: https://plotpy.readthedocs.io/ - license: BSD-3-Clause - license_file: LICENSE - -extra: - recipe-maintainers: - - PierreRaybaut diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml new file mode 100644 index 0000000..31e81f6 --- /dev/null +++ b/recipe/recipe.yaml @@ -0,0 +1,75 @@ +schema_version: 1 + +context: + name: plotpy + version: "2.9.0" + +package: + name: ${{ name|lower }} + version: ${{ version }} + +source: + url: https://pypi.org/packages/source/${{ name[0] }}/${{ name }}/plotpy-${{ version }}.tar.gz + sha256: 1746c796c5484447d133f0459c6bd9a1c7324cd1910d7f1356b19d188c6d6725 + +build: + number: 1 + script: ${{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation + +requirements: + build: + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} + - ${{ stdlib("c") }} + - if: build_platform != host_platform + then: + - cross-python_${{ host_platform }} + - python + - cython + - numpy + host: + - python + - setuptools + - wheel + - numpy + - cython + - pip + run: + - python + - guidata >=3.14.1 + - pythonqwt >=0.15 + - scipy >=1.7.3 + - scikit-image >=0.19 + - pillow + - tifffile + - pyqt + +tests: + - python: + imports: + - plotpy + pip_check: true + - requirements: + run: + - pytest + - if: linux + then: pytest-xvfb + script: + - if: win + then: set QT_QPA_PLATFORM=offscreen && pytest --collect-only --pyargs plotpy.tests + - if: not win + then: QT_QPA_PLATFORM=offscreen pytest --collect-only --pyargs plotpy.tests + +about: + summary: Curve and image plotting tools for Python/Qt applications + description: | + PlotPy is is a Python library providing efficient 2D data-plotting features for interactive computing and signal/image processing application development. + It is part of the PlotPyStack project, aiming at providing a unified framework for creating scientific GUIs with Python and Qt. + license: BSD-3-Clause + license_file: LICENSE + homepage: https://github.com/PlotPyStack/PlotPy + documentation: https://plotpy.readthedocs.io/ + +extra: + recipe-maintainers: + - PierreRaybaut