diff --git a/.ci_support/linux_64_python3.11.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml index 98023ed4..2130b94f 100644 --- a/.ci_support/linux_64_python3.11.____cpython.yaml +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -21,7 +21,7 @@ docker_image: github_actions_labels: - cirun-openstack-cpu-4xlarge libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.12.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml index d2b4cfd8..82fa22f2 100644 --- a/.ci_support/linux_64_python3.12.____cpython.yaml +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -21,7 +21,7 @@ docker_image: github_actions_labels: - cirun-openstack-cpu-4xlarge libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_python3.13.____cp313.yaml b/.ci_support/linux_64_python3.13.____cp313.yaml index dc850387..ecbab0e4 100644 --- a/.ci_support/linux_64_python3.13.____cp313.yaml +++ b/.ci_support/linux_64_python3.13.____cp313.yaml @@ -21,7 +21,7 @@ docker_image: github_actions_labels: - cirun-openstack-cpu-4xlarge libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/migrations/absl_grpc_proto_26Q1.yaml b/.ci_support/migrations/absl_grpc_proto_26Q1.yaml new file mode 100644 index 00000000..c2efe0bc --- /dev/null +++ b/.ci_support/migrations/absl_grpc_proto_26Q1.yaml @@ -0,0 +1,30 @@ +__migrator: + build_number: 1 + commit_message: Rebuild for libabseil 20260107, libgrpc 1.78 & libprotobuf 6.33.5 + kind: version + migration_number: 1 + exclude: + # core deps + - abseil-cpp + - grpc-cpp + - libprotobuf + # required for building/testing + - protobuf + - re2 + # bazel stack + - bazel + - grpc_java_plugin + - singlejar + # built manually beforehand due to enormous build time + - pytorch-cpu +libabseil: +- 20260107 +libgrpc: +- "1.78" +libprotobuf: +- 6.33.5 +# we add re2 because even though its ABI didn't change, +# we need a version that's been rebuilt for matching abseil +re2: +- 2025.11.05 +migrator_ts: 1768184504.2078037 diff --git a/.ci_support/osx_64_python3.11.____cpython.yaml b/.ci_support/osx_64_python3.11.____cpython.yaml index 078eb8ee..d990e27f 100644 --- a/.ci_support/osx_64_python3.11.____cpython.yaml +++ b/.ci_support/osx_64_python3.11.____cpython.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - x86_64-apple-darwin13.4.0 pin_run_as_build: diff --git a/.ci_support/osx_64_python3.12.____cpython.yaml b/.ci_support/osx_64_python3.12.____cpython.yaml index d5f9997e..6a9b5255 100644 --- a/.ci_support/osx_64_python3.12.____cpython.yaml +++ b/.ci_support/osx_64_python3.12.____cpython.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - x86_64-apple-darwin13.4.0 pin_run_as_build: diff --git a/.ci_support/osx_64_python3.13.____cp313.yaml b/.ci_support/osx_64_python3.13.____cp313.yaml index 0d794ab9..6f168517 100644 --- a/.ci_support/osx_64_python3.13.____cp313.yaml +++ b/.ci_support/osx_64_python3.13.____cp313.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - x86_64-apple-darwin13.4.0 pin_run_as_build: diff --git a/.ci_support/osx_arm64_python3.11.____cpython.yaml b/.ci_support/osx_arm64_python3.11.____cpython.yaml index 31f4d993..0f727a22 100644 --- a/.ci_support/osx_arm64_python3.11.____cpython.yaml +++ b/.ci_support/osx_arm64_python3.11.____cpython.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - arm64-apple-darwin20.0.0 pin_run_as_build: diff --git a/.ci_support/osx_arm64_python3.12.____cpython.yaml b/.ci_support/osx_arm64_python3.12.____cpython.yaml index 60d753a7..01b6bcd2 100644 --- a/.ci_support/osx_arm64_python3.12.____cpython.yaml +++ b/.ci_support/osx_arm64_python3.12.____cpython.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - arm64-apple-darwin20.0.0 pin_run_as_build: diff --git a/.ci_support/osx_arm64_python3.13.____cp313.yaml b/.ci_support/osx_arm64_python3.13.____cp313.yaml index a9638a85..f7f79f3d 100644 --- a/.ci_support/osx_arm64_python3.13.____cp313.yaml +++ b/.ci_support/osx_arm64_python3.13.____cp313.yaml @@ -21,7 +21,7 @@ cxx_compiler: cxx_compiler_version: - '19' libgrpc: -- '1.73' +- '1.78' macos_machine: - arm64-apple-darwin20.0.0 pin_run_as_build: diff --git a/.ci_support/win_64_python3.11.____cpython.yaml b/.ci_support/win_64_python3.11.____cpython.yaml index cbbf843f..2d81620b 100644 --- a/.ci_support/win_64_python3.11.____cpython.yaml +++ b/.ci_support/win_64_python3.11.____cpython.yaml @@ -11,7 +11,7 @@ curl: cxx_compiler: - vs2022 libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_python3.12.____cpython.yaml b/.ci_support/win_64_python3.12.____cpython.yaml index f611af66..097bb610 100644 --- a/.ci_support/win_64_python3.12.____cpython.yaml +++ b/.ci_support/win_64_python3.12.____cpython.yaml @@ -11,7 +11,7 @@ curl: cxx_compiler: - vs2022 libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_python3.13.____cp313.yaml b/.ci_support/win_64_python3.13.____cp313.yaml index 41d53b73..ef093bc0 100644 --- a/.ci_support/win_64_python3.13.____cp313.yaml +++ b/.ci_support/win_64_python3.13.____cp313.yaml @@ -11,7 +11,7 @@ curl: cxx_compiler: - vs2022 libgrpc: -- '1.73' +- '1.78' pin_run_as_build: python: min_pin: x.x diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index 1e6f68c6..ef7a1abe 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -19,22 +19,23 @@ jobs: timeout-minutes: 360 strategy: fail-fast: false + max-parallel: 50 matrix: include: - CONFIG: linux_64_python3.11.____cpython UPLOAD_PACKAGES: True os: ubuntu - runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.11.____cpython', 'linux', 'x64', 'self-hosted'] + runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.11.____cpython'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.12.____cpython UPLOAD_PACKAGES: True os: ubuntu - runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.12.____cpython', 'linux', 'x64', 'self-hosted'] + runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.12.____cpython'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - CONFIG: linux_64_python3.13.____cp313 UPLOAD_PACKAGES: True os: ubuntu - runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.13.____cp313', 'linux', 'x64', 'self-hosted'] + runs_on: ['cirun-openstack-cpu-4xlarge--${{ github.run_id }}-linux_64_python3.13.____cp313'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 steps: @@ -109,7 +110,7 @@ jobs: # 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 - MINIFORGE_HOME: D:\Miniforge + MINIFORGE_HOME: ${{ contains(runner.arch, 'ARM') && 'C' || 'D' }}:\Miniforge PYTHONUNBUFFERED: 1 CONFIG: ${{ matrix.CONFIG }} CI: github_actions diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index cab0cd45..40cc4bca 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -20,6 +20,7 @@ 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" +export RATTLER_CACHE_DIR="${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache" cat >~/.condarc </dev/null && pwd )" PROVIDER_DIR="$(basename "$THISDIR")" @@ -27,7 +29,7 @@ if [[ "${sha:-}" == "" ]]; then popd fi -docker info +${DOCKER_EXECUTABLE} info # In order for the conda-build process in the container to write to the mounted # volumes, we need to run with the same id as the host machine, which is @@ -35,6 +37,7 @@ docker info export HOST_USER_ID=$(id -u) # Check if docker-machine is being used (normally on OSX) and get the uid from # the VM + if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) fi @@ -76,16 +79,34 @@ if [ -z "${CI}" ]; then DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" fi -( endgroup "Configure Docker" ) 2> /dev/null +# Default volume suffix for Docker (preserve original behavior) +VOLUME_SUFFIX=",z" +# Podman-specific handling +if [ "${DOCKER_EXECUTABLE}" = "podman" ]; then + # Fix file permissions for rootless podman builds + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${ARTIFACTS}" + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${RECIPE_ROOT}" + + # Add SELinux label only if enforcing + if command -v getenforce &>/dev/null && [ "$(getenforce)" = "Enforcing" ]; then + VOLUME_SUFFIX=",z" + else + VOLUME_SUFFIX="" + fi +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 \ + +${DOCKER_EXECUTABLE} pull "${DOCKER_IMAGE}" + +${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \ + -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw${VOLUME_SUFFIX},delegated \ + -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw${VOLUME_SUFFIX},delegated \ -e CONFIG \ -e HOST_USER_ID \ -e UPLOAD_PACKAGES \ diff --git a/build-locally.py b/build-locally.py index 825a4aff..05493e4d 100755 --- a/build-locally.py +++ b/build-locally.py @@ -28,13 +28,6 @@ def setup_environment(ns): os.path.dirname(__file__), "miniforge3" ) - # The default cache location might not be writable using docker on macOS. - if ns.config.startswith("linux") and platform.system() == "Darwin": - os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = ( - os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "") - + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache" - ) - def run_docker_build(ns): script = ".scripts/run_docker_build.sh" diff --git a/conda-forge.yml b/conda-forge.yml index 31a98ad2..3d921014 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,24 +1,24 @@ azure: settings_win: variables: - SET_PAGEFILE: 'True' CONDA_BLD_PATH: C:\\bld\\ MINIFORGE_HOME: C:\Miniforge + SET_PAGEFILE: 'True' build_platform: osx_arm64: osx_64 conda_build: pkg_format: '2' +conda_build_tool: rattler-build conda_forge_output_validation: true +conda_install_tool: pixi github: branch_name: main tooling_branch_name: main -test: native_and_emulated github_actions: self_hosted: true triggers: - - push - - pull_request + - push + - pull_request provider: linux_64: github_actions -conda_install_tool: pixi -conda_build_tool: rattler-build +test: native_and_emulated diff --git a/pixi.toml b/pixi.toml index f062464a..a3ae81f4 100644 --- a/pixi.toml +++ b/pixi.toml @@ -5,7 +5,7 @@ [workspace] name = "ray-packages-feedstock" -version = "3.55.1" # conda-smithy version used to generate this file +version = "3.58.1" # conda-smithy version used to generate this file description = "Pixi configuration for conda-forge/ray-packages-feedstock" authors = ["@conda-forge/ray-packages"] channels = ["conda-forge"] diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml index ee3393b5..6a1219e6 100644 --- a/recipe/recipe.yaml +++ b/recipe/recipe.yaml @@ -31,7 +31,7 @@ source: - patches/0010-use-compiler_param_file-on-Windows-to-avoid-CreatePr.patch build: - number: 0 + number: 1 skip: - match(python, "<3.11") @@ -213,10 +213,9 @@ outputs: # ray stop on Windows fails to kill dashboard and runtime_env agents; # force-kill remaining ray python processes and wait for handles to release - if: win - then: wmic process where "name='python.exe' and commandline like '%%ray%%'" delete || ver >nul - - if: win - then: powershell -c "Start-Sleep 15" - + then: + - wmic process where "name='python.exe' and commandline like '%%ray%%'" delete || ver >nul + - powershell -c "Start-Sleep 15" - package: name: ray-client requirements: @@ -238,10 +237,9 @@ outputs: # ray stop on Windows fails to kill dashboard and runtime_env agents; # force-kill remaining ray python processes and wait for handles to release - if: win - then: wmic process where "name='python.exe' and commandline like '%%ray%%'" delete || ver >nul - - if: win - then: powershell -c "Start-Sleep 15" - + then: + - wmic process where "name='python.exe' and commandline like '%%ray%%'" delete || ver >nul + - powershell -c "Start-Sleep 15" - package: name: ray-rllib requirements: