Skip to content

Commit

Permalink
Add arm build image
Browse files Browse the repository at this point in the history
  • Loading branch information
nmreadelf committed Aug 3, 2023
1 parent 2a3b1ab commit 4fb8148
Showing 1 changed file with 76 additions and 41 deletions.
117 changes: 76 additions & 41 deletions .github/workflows/build_arm_whells.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
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:
https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-aarch64.tar.gz TAG_NAME:
description: 'Release Version Tag'
required: true
release:
Expand All @@ -24,18 +30,23 @@ jobs:
matrix:
os: [ ubuntu-20.04 ]
# python-version: [ "3.8", "3.9", "3.10", "3.11"]
python-version: [ "3.11" ]
python-version: [ "3.8" ]
env:
RUNNER_OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
#PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- name: switch python
- name: Install clang++ for Ubuntu
if: matrix.os == 'ubuntu-20.04'
run: |
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
pyenv local "${{ matrix.python-version }}"
python --version
shell: bash -l {0}
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
Expand Down Expand Up @@ -72,49 +83,73 @@ jobs:
key: ${{ matrix.os }}
max-size: 5G
append-timestamp: true
- name: Prepare chdb/build.sh
- name: remove old clang and link clang-15 to clang
if: matrix.os == 'ubuntu-20.04'
run: |
pyenv local "${{ matrix.python-version }}"
python3 --version
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
shell: bash -l {0}
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 Zm9yIFBZX1ZFUiBpbiAzLjggMy45IDMuMTAgMy4xMTsgZG8KICAgIHB5ZW52IGxvY2FsICIke1BZX1ZFUn0iCiAgICBweXRob24zIC0tdmVyc2lvbgogICAgcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCBweWJpbmQxMQogICAgZXhwb3J0IENDPS91c3IvYmluL2NsYW5nCiAgICBleHBvcnQgQ1hYPS91c3IvYmluL2NsYW5nKysKICAgIGJhc2ggLi9jaGRiL2J1aWxkLnNoCiAgICBweXRob24zIC1tIHBpcCBpbnN0YWxsIHBhbmRhcyBweWFycm93CiAgICBiYXNoIC14IC4vY2hkYi90ZXN0X3Ntb2tlLnNoCiAgICAjIEluc3RhbGwgdW5pdmVyc2FsMiBwa2cKICAgIHB5dGhvbjMgLVZWCiAgICBweXRob24zLWNvbmZpZyAtLWluY2x1ZGVzCiAgICAjIGlmIHB5dGhvbjMgLVZWIGRvZXMgbm90IGNvbnRhaW4gJHtQWV9WRVJ9LCB0aGVuIGV4aXQKICAgIGlmICEgcHl0aG9uMyAtVlYgMj4mMSB8IGdyZXAgLXEgIiR7UFlfVkVSfSI7IHRoZW4KICAgICAgICBlY2hvICJFcnJvcjogUmVxdWlyZWQgdmVyc2lvbiBvZiBQeXRob24gKCR7UFlfVkVSfSkgbm90IGZvdW5kLiBBYm9ydGluZy4iCiAgICAgICAgZXhpdCAxCiAgICBmaQogICAgIyBpZiBweXRob24zLWNvbmZpZyAtLWluY2x1ZGVzIGRvZXMgbm90IGNvbnRhaW4gJHtQWV9TSE9SVF9WRVJ9LCB0aGVuIGV4aXQKICAgIGlmICEgcHl0aG9uMy1jb25maWcgLS1pbmNsdWRlcyAyPiYxIHwgZ3JlcCAtcSAiJHtQWV9TSE9SVF9WRVJ9IjsgdGhlbgogICAgICAgIGVjaG8gIkVycm9yOiBSZXF1aXJlZCB2ZXJzaW9uIG9mIFB5dGhvbiAoJHtQWV9WRVJ9KSBub3QgZm91bmQuIEFib3J0aW5nLiIKICAgICAgICBleGl0IDEKICAgIGZpCgogICAgcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCAtVSBweWJpbmQxMSB3aGVlbCBidWlsZCB0b3gKICAgIHJtIC1yZiAke1BST0pfRElSfS9idWlsZGxpYgoKICAgICR7UFJPSl9ESVJ9L2NoZGIvYnVpbGQuc2gKICAgIGNkICR7UFJPSl9ESVJ9L2NoZGIgJiYgcHl0aG9uMyAtYyAiaW1wb3J0IF9jaGRiOyByZXMgPSBfY2hkYi5xdWVyeSgnc2VsZWN0IDExMTIyMjIyMjIsNTU1JywgJ0pTT04nKTsgcHJpbnQocmVzKSIKCiAgICBjZCAke1BST0pfRElSfQogICAgJHtQUk9KX0RJUn0vZ2VuX21hbmlmZXN0LnNoCiAgICBjYXQgJHtQUk9KX0RJUn0vTUFOSUZFU1QuaW4KCiAgICBweXRob24zIC1tIGJ1aWxkIC0td2hlZWwKCiAgICBweXRob24zIC1tIHdoZWVsIHRhZ3MgLS1wbGF0Zm9ybS10YWc9bWFjb3N4XzExXzBfYXJtNjQgLS1yZW1vdmUgZGlzdC9jaGRiLSotY3Ake1BZX1NIT1JUX1ZFUi8vLi99LWNwJHtQWV9TSE9SVF9WRVIvLy4vfS1tYWNvc3hfKl91bml2ZXJzYWwyLndobAoKICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgLS1mb3JjZS1yZWluc3RhbGwgZGlzdC9jaGRiLSotY3Ake1BZX1NIT1JUX1ZFUi8vLi99LWNwJHtQWV9TSE9SVF9WRVIvLy4vfS1tYWNvc3hfMTFfMF9hcm02NC53aGwKCiAgICBweXRob24zIC1jICJpbXBvcnQgY2hkYjsgcmVzID0gY2hkYi5xdWVyeSgnc2VsZWN0IHZlcnNpb24oKScsICdDU1YnKTsgcHJpbnQocmVzKSIKCiAgICBweXRob24zIC1tIGNoZGIgIlNFTEVDVCAxLCAnYWInIiBhcnJvd3RhYmxlCgogICAgcHl0aG9uMyAtbSBjaGRiICJTRUxFQ1QgMSwgJ2FiJyIgZGF0YWZyYW1lCgogICAgbWFrZSB0ZXN0CmRvbmUK | base64 -d | base -l -e
continue-on-error: false
- name: Install dependencies for building wheels
# - 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: |
python3 -m pip install -U pip tox pybind11 twine setuptools wheel
python3 -m pip install cibuildwheel==2.12.1
shell: bash -l {0}
- name: Build wheels
run: python3 -m cibuildwheel --output-dir wheelhouse
timeout-minutes: 300
env:
CIBW_DEBUG: 1
CIBW_BEFORE_BUILD_LINUX: "yum install -y wget && wget https://apt.llvm.org/llvm.sh; chmod +x llvm.sh; bash ./llvm.sh 15; which clang++-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 CXX=/usr/bin/clang++"
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()
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: |
sleep 60
while ps -ef | grep ccache | grep -v grep; do \
killall ccache; \
sleep 10; \
done
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: ls -lh wheelhouse
run: |
sudo rm -f dist/*-aarch64*.whl
ls -lh dist
shell: bash
continue-on-error: false
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
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:
Expand Down

0 comments on commit 4fb8148

Please sign in to comment.