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] Build a CPU-only wheel under name xgboost-cpu #10603

Merged
merged 19 commits into from
Jul 19, 2024
Merged
Show file tree
Hide file tree
Changes from 12 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
6 changes: 3 additions & 3 deletions python-package/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ build-backend = "packager.pep517"

[project]
name = "xgboost"
version = "2.2.0-dev"
description = "XGBoost Python Package"
readme = { file = "README.rst", content-type = "text/x-rst" }
authors = [
{ name = "Hyunsu Cho", email = "[email protected]" },
{ name = "Jiaming Yuan", email = "[email protected]" }
]
description = "XGBoost Python Package"
readme = { file = "README.rst", content-type = "text/x-rst" }
version = "2.2.0-dev"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving this line here, so that the patch cpu_only_pypkg.patch doesn't contain the version number.

requires-python = ">=3.8"
license = { text = "Apache-2.0" }
classifiers = [
Expand Down
33 changes: 0 additions & 33 deletions tests/buildkite/build-manylinux2014-aarch64.sh

This file was deleted.

33 changes: 0 additions & 33 deletions tests/buildkite/build-manylinux2014-x86_64.sh

This file was deleted.

60 changes: 60 additions & 0 deletions tests/buildkite/build-manylinux2014.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

set -euo pipefail

if [ $# -ne 1 ]; then
echo "Usage: $0 {x86_64,aarch64}"
exit 1
fi

arch=$1

source tests/buildkite/conftest.sh

WHEEL_TAG="manylinux2014_${arch}"
command_wrapper="tests/ci_build/ci_build.sh ${WHEEL_TAG}"
python_bin="/opt/python/cp310-cp310/bin/python"

echo "--- Build binary wheel for ${WHEEL_TAG}"
# Patch to add warning about manylinux2014 variant
patch -p0 < tests/buildkite/manylinux2014_warning.patch
$command_wrapper bash -c \
"cd python-package && ${python_bin} -m pip wheel --no-deps -v . --wheel-dir dist/"
git checkout python-package/pyproject.toml python-package/xgboost/core.py # discard the patch

$command_wrapper auditwheel repair --plat ${WHEEL_TAG} python-package/dist/*.whl
$command_wrapper ${python_bin} tests/ci_build/rename_whl.py \
--wheel-path wheelhouse/*.whl \
--commit-hash ${BUILDKITE_COMMIT} \
--platform-tag ${WHEEL_TAG}
rm -rf python-package/dist/
mkdir python-package/dist/
mv -v wheelhouse/*.whl python-package/dist/

echo "--- Build binary wheel for ${WHEEL_TAG} (CPU only)"
patch -p0 < tests/buildkite/cpu_only_pypkg.patch
$command_wrapper bash -c \
"cd python-package && ${python_bin} -m pip wheel --no-deps -v . --wheel-dir dist/"
git checkout python-package/pyproject.toml # discard the patch

$command_wrapper auditwheel repair --plat ${WHEEL_TAG} python-package/dist/xgboost_cpu-*.whl
$command_wrapper ${python_bin} tests/ci_build/rename_whl.py \
--wheel-path wheelhouse/xgboost_cpu-*.whl \
--commit-hash ${BUILDKITE_COMMIT} \
--platform-tag ${WHEEL_TAG}
rm -v python-package/dist/xgboost_cpu-*.whl
mv -v wheelhouse/xgboost_cpu-*.whl python-package/dist/

echo "--- Upload Python wheel"
for wheel in python-package/dist/*.whl
do
buildkite-agent artifact upload "${wheel}"
done
# if [[ ($is_pull_request == 0) && ($is_release_branch == 1) ]]
# then
for wheel in python-package/dist/*.whl
do
aws s3 cp "${wheel}" s3://xgboost-nightly-builds/${BRANCH_NAME}/ \
--acl public-read --no-progress
done
# fi
33 changes: 33 additions & 0 deletions tests/buildkite/cpu_only_pypkg.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
diff --git python-package/pyproject.toml python-package/pyproject.toml
index 8835def25..b9cbebe11 100644
--- python-package/pyproject.toml
+++ python-package/pyproject.toml
@@ -6,7 +6,7 @@ backend-path = ["."]
build-backend = "packager.pep517"

[project]
-name = "xgboost"
+name = "xgboost-cpu"
description = "XGBoost Python Package"
readme = { file = "README.rst", content-type = "text/x-rst" }
authors = [
@@ -30,8 +30,7 @@ classifiers = [
]
dependencies = [
"numpy",
- "scipy",
- "nvidia-nccl-cu12 ; platform_system == 'Linux' and platform_machine != 'aarch64'"
+ "scipy"
]

[project.urls]
@@ -48,6 +47,9 @@ pyspark = ["pyspark", "scikit-learn", "cloudpickle"]

[tool.hatch.build.targets.wheel.hooks.custom]

+[tool.hatch.build.targets.wheel]
+packages = ["xgboost/"]
+
[tool.isort]
profile = "black"

4 changes: 2 additions & 2 deletions tests/buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ steps:
agents:
queue: linux-amd64-cpu
- label: ":console: Build manylinux2014_x86_64 wheel"
command: "tests/buildkite/build-manylinux2014-x86_64.sh"
command: "tests/buildkite/build-manylinux2014.sh x86_64"
key: build-manylinux2014-x86_64
agents:
queue: linux-amd64-cpu
- label: ":console: Build manylinux2014_aarch64 wheel"
command: "tests/buildkite/build-manylinux2014-aarch64.sh"
command: "tests/buildkite/build-manylinux2014.sh aarch64"
key: build-manylinux2014-aarch64
agents:
queue: linux-arm64-cpu
Expand Down
Loading