2020-07-14 14:51:51 -07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
set -euxo pipefail
|
|
|
|
|
|
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd)"
|
|
|
|
|
WORKSPACE_DIR="${ROOT_DIR}/.."
|
|
|
|
|
|
|
|
|
|
get_python_version() {
|
|
|
|
|
python -s -c "import sys; sys.stdout.write('%s.%s' % sys.version_info[:2])"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
is_python_version() {
|
|
|
|
|
local expected result=0
|
|
|
|
|
expected="$1"
|
|
|
|
|
case "$(get_python_version).0." in
|
|
|
|
|
"${expected}".*) ;;
|
|
|
|
|
*) result=1;;
|
|
|
|
|
esac
|
|
|
|
|
case "$(pip --version | tr -d "\r")" in
|
|
|
|
|
*" (python ${expected})") ;;
|
|
|
|
|
*) result=1;;
|
|
|
|
|
esac
|
|
|
|
|
return "${result}"
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-05 12:49:19 -08:00
|
|
|
refreshenv() {
|
|
|
|
|
# https://gist.github.com/jayvdb/1daf8c60e20d64024f51ec333f5ce806
|
|
|
|
|
powershell -NonInteractive - <<\EOF
|
|
|
|
|
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
|
|
|
|
|
|
|
|
|
|
Update-SessionEnvironment
|
|
|
|
|
|
2022-11-01 10:57:10 -07:00
|
|
|
# Print out the list of env vars we're going to export.
|
|
|
|
|
# Sometimes the bash source fails, this will help with debugging.
|
|
|
|
|
gci env:
|
|
|
|
|
|
2022-01-05 12:49:19 -08:00
|
|
|
# Round brackets in variable names cause problems with bash
|
|
|
|
|
Get-ChildItem env:* | %{
|
|
|
|
|
if (!($_.Name.Contains('('))) {
|
|
|
|
|
$value = $_.Value
|
|
|
|
|
if ($_.Name -eq 'PATH') {
|
|
|
|
|
$value = $value -replace ';',':'
|
|
|
|
|
}
|
2022-11-01 14:40:17 -07:00
|
|
|
# Use heredocs to wrap values. This fixes problems with environment variables containing single quotes.
|
|
|
|
|
# An environment variable containing the string REFRESHENV_EOF could still cause problems, but is
|
|
|
|
|
# far less likely than a single quote.
|
|
|
|
|
Write-Output ("export " + $_.Name + "=$`(cat <<- 'REFRESHENV_EOF'`n" + $value + "`nREFRESHENV_EOF`)")
|
2022-01-05 12:49:19 -08:00
|
|
|
}
|
|
|
|
|
} | Out-File -Encoding ascii $env:TEMP\refreshenv.sh
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
source "$TEMP/refreshenv.sh"
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-31 13:25:33 -07:00
|
|
|
build_dashboard() {
|
|
|
|
|
pushd python/ray/dashboard/client
|
|
|
|
|
choco install nodejs --version=22.4.1 -y
|
|
|
|
|
refreshenv
|
|
|
|
|
# https://stackoverflow.com/questions/69692842/error-message-error0308010cdigital-envelope-routinesunsupported
|
|
|
|
|
export NODE_OPTIONS=--openssl-legacy-provider
|
|
|
|
|
npm install
|
|
|
|
|
npm run build
|
|
|
|
|
popd
|
2020-07-14 14:51:51 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
build_wheel_windows() {
|
2025-07-29 00:03:45 -07:00
|
|
|
if [[ "${BUILD_ONE_PYTHON_ONLY:-}" == "" ]]; then
|
|
|
|
|
echo "Please set BUILD_ONE_PYTHON_ONLY . Building all python versions is no longer supported."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2020-07-14 14:51:51 -07:00
|
|
|
local local_dir="python/dist"
|
2024-02-28 15:35:20 -08:00
|
|
|
{
|
2024-12-19 16:40:57 -08:00
|
|
|
echo "build --announce_rc";
|
2024-02-28 15:35:20 -08:00
|
|
|
echo "build --config=ci";
|
|
|
|
|
echo "startup --output_user_root=c:/raytmp";
|
|
|
|
|
echo "build --remote_cache=${BUILDKITE_BAZEL_CACHE_URL}";
|
|
|
|
|
} >> ~/.bazelrc
|
|
|
|
|
|
2025-09-22 09:07:16 -07:00
|
|
|
if [[ "${BUILDKITE_CACHE_READONLY:-}" == "true" ]]; then
|
2024-02-28 15:35:20 -08:00
|
|
|
echo "build --remote_upload_local_results=false" >> ~/.bazelrc
|
|
|
|
|
fi
|
|
|
|
|
|
2025-07-29 00:03:45 -07:00
|
|
|
local pyversion="${BUILD_ONE_PYTHON_ONLY}"
|
|
|
|
|
|
|
|
|
|
git clean -q -f -f -x -d -e "${local_dir}" -e python/ray/dashboard/client
|
|
|
|
|
git checkout -q -f -- .
|
|
|
|
|
|
|
|
|
|
# Start a subshell to prevent PATH and cd from affecting our shell environment
|
|
|
|
|
(
|
|
|
|
|
unset PYTHON2_BIN_PATH PYTHON3_BIN_PATH # make sure these aren't set by some chance
|
2025-10-31 13:25:33 -07:00
|
|
|
build_dashboard
|
|
|
|
|
|
2025-07-29 00:03:45 -07:00
|
|
|
cd "${WORKSPACE_DIR}"/python
|
|
|
|
|
# Set the commit SHA in _version.py.
|
2025-10-31 13:25:33 -07:00
|
|
|
if [[ -n "${BUILDKITE_COMMIT:-}" ]]; then
|
2025-07-29 00:03:45 -07:00
|
|
|
sed -i.bak "s/{{RAY_COMMIT_SHA}}/$BUILDKITE_COMMIT/g" ray/_version.py && rm ray/_version.py.bak
|
|
|
|
|
else
|
|
|
|
|
echo "BUILDKITE_COMMIT variable not set - required to populated ray.__commit__."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2025-10-31 13:25:33 -07:00
|
|
|
|
2026-01-12 11:48:43 -08:00
|
|
|
# build ray wheel and ray-cpp wheel
|
|
|
|
|
# delvewheel packs any needed system dlls like msvcp140.dll
|
|
|
|
|
uv run --no-project --no-config --no-cache \
|
|
|
|
|
--with wheel==0.45.1 \
|
|
|
|
|
--with delvewheel==1.11.2 \
|
|
|
|
|
--with setuptools==80.9.0 \
|
|
|
|
|
--with pip==25.2 \
|
|
|
|
|
--python "${pyversion}" \
|
|
|
|
|
/bin/bash -o pipefail -ec "
|
|
|
|
|
python -m pip wheel -v -w dist . --no-deps --use-pep517
|
|
|
|
|
delvewheel repair dist/ray-*.whl
|
|
|
|
|
RAY_INSTALL_CPP=1 python -m pip wheel -v -w dist . --no-deps --use-pep517
|
|
|
|
|
"
|
2025-07-29 00:03:45 -07:00
|
|
|
)
|
2020-07-14 14:51:51 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
build_wheel_windows "$@"
|