Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ci] Script for building M1 wheels #19925

Merged
merged 4 commits into from
Nov 1, 2021
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions python/build-wheel-macos-m1.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/bin/bash

# Cause the script to exit if a single command fails.
set -e

# Show explicitly which commands are currently running.
set -x

DOWNLOAD_DIR=python_downloads

NODE_VERSION="14"
PY_VERSIONS=("3.8.2"
"3.9.1")
PY_MMS=("3.8"
"3.9")


if [[ -n "${SKIP_DEP_RES}" ]]; then
./ci/travis/install-bazel.sh

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
curl -o- https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh | bash
source ~/.bash_profile
conda init bash
source ~/.bash_profile

# Use the latest version of Node.js in order to build the dashboard.
source "$HOME"/.nvm/nvm.sh
nvm install $NODE_VERSION
nvm use $NODE_VERSION
fi

# Build the dashboard so its static assets can be included in the wheel.
pushd python/ray/dashboard/client
npm ci
npm run build
popd

mkdir -p .whl

for ((i=0; i<${#PY_VERSIONS[@]}; ++i)); do
PY_MM=${PY_MMS[i]}
CONDA_ENV_NAME="p$PY_MM"

# The -f flag is passed twice to also run git clean in the arrow subdirectory.
# The -d flag removes directories. The -x flag ignores the .gitignore file,
# and the -e flag ensures that we don't remove the .whl directory.
git clean -f -f -x -d -e .whl -e $DOWNLOAD_DIR -e python/ray/dashboard/client -e dashboard/client


# Install python using conda. This should be easier to produce consistent results in buildkite and locally.
source ~/.bash_profile
conda create -y -n "$CONDA_ENV_NAME"
conda activate "$CONDA_ENV_NAME"
conda remove -y python || true
conda install -y python="$PY_MM"

# NOTE: We expect conda to set the PATH properly.
PIP_CMD=pip
PYTHON_EXE=python

$PIP_CMD install --upgrade pip

if [ -z "${TRAVIS_COMMIT}" ]; then
TRAVIS_COMMIT=${BUILDKITE_COMMIT}
fi

pushd python
# Setuptools on CentOS is too old to install arrow 0.9.0, therefore we upgrade.
$PIP_CMD install --upgrade setuptools
$PIP_CMD install -q cython==0.29.15
# Install wheel to avoid the error "invalid command 'bdist_wheel'".
$PIP_CMD install -q wheel
# Set the commit SHA in __init__.py.
if [ -n "$TRAVIS_COMMIT" ]; then
echo "TRAVIS_COMMIT variable detected. ray.__commit__ will be set to $TRAVIS_COMMIT"
else
echo "TRAVIS_COMMIT variable is not set, getting the current commit from git."
TRAVIS_COMMIT=$(git rev-parse HEAD)
fi

sed -i .bak "s/{{RAY_COMMIT_SHA}}/$TRAVIS_COMMIT/g" ray/__init__.py && rm ray/__init__.py.bak

# Add the correct Python to the path and build the wheel. This is only
# needed so that the installation finds the cython executable.
# build ray wheel
$PYTHON_EXE setup.py bdist_wheel
# build ray-cpp wheel
RAY_INSTALL_CPP=1 $PYTHON_EXE setup.py bdist_wheel
mv dist/*.whl ../.whl/
popd
done