Add arm64 linux build #31
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build arm64 | |
on: | |
# for test action | |
pull_request: | |
branches: | |
- main | |
- feat/add-arm-wheel-build | |
# end for test action | |
workflow_dispatch: | |
inputs: | |
TAG_NAME: | |
description: 'Release Version Tag' | |
required: true | |
release: | |
types: [created] | |
defaults: | |
run: | |
shell: bash -leo pipefail {0} | |
jobs: | |
build_wheels_linux_arm64: | |
name: ${{ matrix.os }} py${{ matrix.python-version }} | |
runs-on: | |
- self-hosted | |
- ARM64 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-20.04 ] | |
# python-version: [ "3.8", "3.9", "3.10", "3.11"] | |
python-version: [ "3.11" ] | |
env: | |
RUNNER_OS: ${{ matrix.os }} | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
steps: | |
- name: switch python | |
run: | | |
export PYENV_ROOT="$HOME/.pyenv" | |
export PATH="$PYENV_ROOT/bin:$PATH" | |
pyenv local "${{ matrix.python-version }}" | |
python --version | |
shell: bash -l {0} | |
- name: Update git | |
run: | | |
sudo add-apt-repository ppa:git-core/ppa -y | |
sudo apt-get update | |
sudo apt-get install -y git | |
git --version | |
shell: bash -l {0} | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Restore submodules cache | |
uses: actions/cache/restore@v3 | |
id: cache | |
with: | |
path: | | |
contrib/** | |
key: | | |
submodule-${{ hashFiles('.gitmodules') }} | |
- name: Update submodules if cache miss | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
git submodule update --init --recursive --jobs 4 | |
- name: Save submodules cache | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: | | |
contrib/** | |
key: | | |
submodule-${{ hashFiles('.gitmodules') }} | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ matrix.os }} | |
max-size: 5G | |
append-timestamp: true | |
- name: Prepare chdb/build.sh | |
run: | | |
pyenv local "${{ matrix.python-version }}" | |
python3 --version | |
shell: bash -l {0} | |
continue-on-error: false | |
- name: Install dependencies for building wheels | |
run: | | |
python3 -m pip install -U pip tox twine setuptools wheel | |
python3 -m pip install cibuildwheel==2.12.1 | |
mkdir wheelhouse | |
cp -a ${GITHUB_WORKSPACE}/.ccache wheelhouse/.ccache | |
shell: bash -l {0} | |
- name: Build wheels | |
run: python3 -m cibuildwheel --output-dir wheelhouse | |
timeout-minutes: 300 | |
env: | |
CIBW_DEBUG: 1 | |
CIBW_MANYLINUX_AARCH64_IMAGE: "docker.io/nmreadelf/chdb-action:2023-07-28" | |
CIBW_BEFORE_BUILD_LINUX: "apt update && apt install -qq -y wget lsb-release wget software-properties-common ccache gnupg make cmake ninja-build yasm gawk && wget -q https://apt.llvm.org/llvm.sh && bash ./llvm.sh 15 && wget https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-aarch64.tar.gz -O patchelf.tar.gz && tar -xvf patchelf.tar.gz && cp bin/patchelf /usr/bin/ && chmod +x /usr/bin/patchelf && patchelf --version;" | |
CIBW_CONTAINER_ENGINE: podman | |
CIBW_ENVIRONMENT_LINUX: "CC=/usr/bin/clang-15 CXX=/usr/bin/clang++-15 CCACHE_DIR=/project/wheelhouse/.ccache" | |
CIBW_BEFORE_BUILD: "pip install -U pip tox pybind11 && bash -x gen_manifest.sh && bash chdb/build.sh" | |
CIBW_BUILD_VERBOSITY: 3 | |
CIBW_BUILD: "cp38-manylinux_aarch64 cp39-manylinux_aarch64 cp310-manylinux_aarch64" | |
CIBW_TEST_REQUIRES: "pyarrow pandas psutil" | |
CIBW_TEST_COMMAND: "cd {project} && make test" | |
- name: Keep killall ccache and wait for ccache to finish | |
if: always() | |
run: | | |
sleep 60 | |
while ps -ef | grep ccache | grep -v grep; do \ | |
killall ccache; \ | |
sleep 10; \ | |
done | |
cp -a wheelhouse/.ccache ${GITHUB_WORKSPACE}/.ccache | |
- name: Show files | |
run: ls -lh wheelhouse | |
shell: bash | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
- name: Upload pypi | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: | | |
python3 -m pip install twine | |
python3 -m twine upload wheelhouse/*.whl | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
# #build for macos12 arm64(Apple Silicon) | |
# build_wheels_macos_arm64: | |