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
+