Skip to content

Add arm64 linux build #42

Add arm64 linux build

Add arm64 linux build #42

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.8" ]
env:
RUNNER_OS: ${{ matrix.os }}
#PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- name: Install clang++ for Ubuntu
if: matrix.os == 'ubuntu-20.04'
run: |
pwd
uname -a
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 15
which clang++-15
clang++-15 --version
sudo apt-get install -y make cmake ccache ninja-build yasm gawk wget
ccache -s
- 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: remove old clang and link clang-15 to clang
if: matrix.os == 'ubuntu-20.04'
run: |
sudo rm /usr/bin/clang
sudo ln -s /usr/bin/clang-15 /usr/bin/clang
sudo rm /usr/bin/clang++
sudo ln -s /usr/bin/clang++-15 /usr/bin/clang++
which clang++
clang++ --version
- name: Run chdb/build.sh
run: |
echo RElSPSIkKCBjZCAiJCggZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iICkiID4vZGV2L251bGwgMj4mMSAmJiBwd2QgKSIKUFJPSl9ESVI9JChkaXJuYW1lICR7RElSfSkKCmZvciBQWV9WRVIgaW4gMy44IDMuOSAzLjEwIDMuMTE7IGRvCiAgICBweWVudiBsb2NhbCAiJHtQWV9WRVJ9IgogICAgcHl0aG9uMyAtLXZlcnNpb24KICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgcHliaW5kMTEKICAgIGV4cG9ydCBDQz0vdXNyL2Jpbi9jbGFuZwogICAgZXhwb3J0IENYWD0vdXNyL2Jpbi9jbGFuZysrCiAgICBiYXNoIC4vY2hkYi9idWlsZC5zaAogICAgcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCBwYW5kYXMgcHlhcnJvdwogICAgYmFzaCAteCAuL2NoZGIvdGVzdF9zbW9rZS5zaAogICAgIyBJbnN0YWxsIHVuaXZlcnNhbDIgcGtnCiAgICBweXRob24zIC1WVgogICAgcHl0aG9uMy1jb25maWcgLS1pbmNsdWRlcwogICAgIyBpZiBweXRob24zIC1WViBkb2VzIG5vdCBjb250YWluICR7UFlfVkVSfSwgdGhlbiBleGl0CiAgICBpZiAhIHB5dGhvbjMgLVZWIDI+JjEgfCBncmVwIC1xICIke1BZX1ZFUn0iOyB0aGVuCiAgICAgICAgZWNobyAiRXJyb3I6IFJlcXVpcmVkIHZlcnNpb24gb2YgUHl0aG9uICgke1BZX1ZFUn0pIG5vdCBmb3VuZC4gQWJvcnRpbmcuIgogICAgICAgIGV4aXQgMQogICAgZmkKICAgICMgaWYgcHl0aG9uMy1jb25maWcgLS1pbmNsdWRlcyBkb2VzIG5vdCBjb250YWluICR7UFlfU0hPUlRfVkVSfSwgdGhlbiBleGl0CiAgICBpZiAhIHB5dGhvbjMtY29uZmlnIC0taW5jbHVkZXMgMj4mMSB8IGdyZXAgLXEgIiR7UFlfU0hPUlRfVkVSfSI7IHRoZW4KICAgICAgICBlY2hvICJFcnJvcjogUmVxdWlyZWQgdmVyc2lvbiBvZiBQeXRob24gKCR7UFlfVkVSfSkgbm90IGZvdW5kLiBBYm9ydGluZy4iCiAgICAgICAgZXhpdCAxCiAgICBmaQoKICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgLVUgcHliaW5kMTEgd2hlZWwgYnVpbGQgdG94CiAgICBybSAtcmYgJHtQUk9KX0RJUn0vYnVpbGRsaWIKCiAgICAke1BST0pfRElSfS9jaGRiL2J1aWxkLnNoCiAgICBjZCAke1BST0pfRElSfS9jaGRiICYmIHB5dGhvbjMgLWMgImltcG9ydCBfY2hkYjsgcmVzID0gX2NoZGIucXVlcnkoJ3NlbGVjdCAxMTEyMjIyMjIyLDU1NScsICdKU09OJyk7IHByaW50KHJlcykiCgogICAgY2QgJHtQUk9KX0RJUn0KICAgICR7UFJPSl9ESVJ9L2dlbl9tYW5pZmVzdC5zaAogICAgY2F0ICR7UFJPSl9ESVJ9L01BTklGRVNULmluCgogICAgcHl0aG9uMyAtbSBidWlsZCAtLXdoZWVsCgogICAgcHl0aG9uMyAtbSB3aGVlbCB0YWdzIC0tcGxhdGZvcm0tdGFnPW1hY29zeF8xMV8wX2FybTY0IC0tcmVtb3ZlIGRpc3QvY2hkYi0qLWNwJHtQWV9TSE9SVF9WRVIvLy4vfS1jcCR7UFlfU0hPUlRfVkVSLy8uL30tbWFjb3N4XypfdW5pdmVyc2FsMi53aGwKCiAgICBweXRob24zIC1tIHBpcCBpbnN0YWxsIC0tZm9yY2UtcmVpbnN0YWxsIGRpc3QvY2hkYi0qLWNwJHtQWV9TSE9SVF9WRVIvLy4vfS1jcCR7UFlfU0hPUlRfVkVSLy8uL30tbWFjb3N4XzExXzBfYXJtNjQud2hsCgogICAgcHl0aG9uMyAtYyAiaW1wb3J0IGNoZGI7IHJlcyA9IGNoZGIucXVlcnkoJ3NlbGVjdCB2ZXJzaW9uKCknLCAnQ1NWJyk7IHByaW50KHJlcykiCgogICAgcHl0aG9uMyAtbSBjaGRiICJTRUxFQ1QgMSwgJ2FiJyIgYXJyb3d0YWJsZQoKICAgIHB5dGhvbjMgLW0gY2hkYiAiU0VMRUNUIDEsICdhYiciIGRhdGFmcmFtZQoKICAgIG1ha2UgdGVzdApkb25lCg== | base64 -d | bash -l -e
continue-on-error: false
# - name: Run chdb/build.sh
# run: |
# pyenv local "${{ matrix.python-version }}"
# python3 --version
# python3 -m pip install pybind11
# export CC=/usr/bin/clang
# export CXX=/usr/bin/clang++
# bash ./chdb/build.sh
# python3 -m pip install pandas pyarrow
# bash -x ./chdb/test_smoke.sh
# continue-on-error: false
- name: Check ccache statistics
run: |
ccache -s
ls -lh chdb
df -h
# - name: Install dependencies for building wheels
# run: |
# pyenv local "${{ matrix.python-version }}"
# python3 -m pip install -U pip tox twine setuptools wheel
# shell: bash -l {0}
# - name: Build wheels
# run: |
# pyenv local "${{ matrix.python-version }}"
# export CC=/usr/bin/clang
# export CXX=/usr/bin/clang++
# make wheel
- name: Install patchelf from github
run: |
pyenv local "${{ matrix.python-version }}"
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
sudo cp bin/patchelf /usr/bin/
sudo chmod +x /usr/bin/patchelf
patchelf --version
- name: Audit wheels
run: |
pyenv local "${{ matrix.python-version }}"
python3 -m pip install auditwheel
auditwheel -v repair -w dist/ --plat manylinux_2_24_aarch64 dist/*.whl
continue-on-error: false
- name: Show files
run: |
sudo rm -f dist/*-aarch64*.whl
ls -lh dist
shell: bash
continue-on-error: false
- uses: actions/upload-artifact@v3
with:
path: ./dist/*.whl
- name: Upload pypi
if: startsWith(github.ref, 'refs/tags/v')
run: |
pyenv local "${{ matrix.python-version }}"
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: