Build X86 #373
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 X86 | |
on: | |
workflow_dispatch: | |
inputs: | |
TAG_NAME: | |
description: 'Release Version Tag' | |
required: true | |
release: | |
types: [created] | |
pull_request: | |
types: [opened, reopened] | |
jobs: | |
build_wheels_linux: | |
name: ${{ matrix.os }} py${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-20.04 ] | |
python-version: [ "3.8", "3.9", "3.10", "3.11"] | |
# python-version: [ "3.7" ] | |
env: | |
RUNNER_OS: ${{ matrix.os }} | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
steps: | |
- name: Install python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ matrix.python-version }}" | |
- 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 17 | |
which clang++-17 | |
clang++-17 --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 | |
- 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-17 to clang | |
if: matrix.os == 'ubuntu-20.04' | |
run: | | |
sudo rm /usr/bin/clang | |
sudo ln -s /usr/bin/clang-17 /usr/bin/clang | |
sudo rm /usr/bin/clang++ | |
sudo ln -s /usr/bin/clang++-17 /usr/bin/clang++ | |
which clang++ | |
clang++ --version | |
- name: Run chdb/build.sh | |
run: | | |
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: python3 -m pip install -U pip tox pybind11 twine setuptools wheel | |
- name: Build wheels | |
run: | | |
export CC=/usr/bin/clang | |
export CXX=/usr/bin/clang++ | |
make wheel | |
- name: Install patchelf from github | |
run: | | |
wget https://github.com/NixOS/patchelf/releases/download/0.17.2/patchelf-0.17.2-x86_64.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: | | |
python3 -m pip install auditwheel | |
auditwheel -v repair -w dist/ --plat manylinux2014_x86_64 dist/*.whl | |
continue-on-error: false | |
- name: Show files | |
run: | | |
sudo rm -f dist/*-linux_x86_64.whl | |
ls -lh dist | |
shell: bash | |
- name: Run tests | |
run: | | |
python3 -m pip install dist/*.whl | |
python3 -m pip install pandas pyarrow psutil | |
python3 -c "import chdb; res = chdb.query('select 1112222222,555', 'CSV'); print(res)" | |
make test | |
continue-on-error: false | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: ./dist/*.whl | |
- name: Upload pypi | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: | | |
python3 -m pip install twine | |
python3 -m twine upload dist/*.whl | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
build_wheels_macos_12: | |
name: ${{ matrix.os }} py${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ macos-12 ] | |
# 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: Install python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ matrix.python-version }}" | |
- name: Remove /usr/local/bin/python3 | |
run: | | |
sudo rm -f /usr/local/bin/python3 | |
- name: Install clang++ for macOS | |
run: | | |
pwd | |
uname -a | |
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 | |
brew update | |
brew install ca-certificates lz4 mpdecimal openssl@3 readline sqlite xz z3 zstd | |
brew install --ignore-dependencies llvm@16 | |
brew install git ccache ninja libtool gettext gcc binutils grep findutils nasm | |
cd /usr/local/opt/ && sudo rm -f llvm && sudo ln -sf llvm@16 llvm | |
export PATH=$(brew --prefix llvm@16)/bin:$PATH | |
which clang++ | |
clang++ --version | |
ccache -s | |
- 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: Run chdb/build.sh | |
timeout-minutes: 300 | |
run: | | |
python3 -m pip install pybind11 | |
export PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin | |
export CC=$(brew --prefix llvm@16)/bin/clang | |
export CXX=$(brew --prefix llvm@16)/bin/clang++ | |
bash gen_manifest.sh | |
bash ./chdb/build.sh | |
python3 -m pip install pandas pyarrow | |
bash -x ./chdb/test_smoke.sh | |
continue-on-error: false | |
- 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 | |
- name: Check ccache statistics | |
run: | | |
ccache -s | |
ls -lh chdb | |
df -h | |
env: | |
CIBW_ENVIRONMENT_MACOS: "PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin CC=$(brew --prefix llvm@16)/bin/clang CXX=$(brew --prefix llvm@16)/bin/clang++" | |
- name: Install dependencies for building wheels | |
run: | | |
python3 -m pip install -U pip tox pybind11 twine setuptools wheel>=0.40.0 | |
- name: Build wheels | |
run: | | |
export PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin | |
export CC=$(brew --prefix llvm@16)/bin/clang | |
export CXX=$(brew --prefix llvm@16)/bin/clang++ | |
make wheel | |
- name: Fix wheel platform tag | |
run: | | |
python3 -m wheel tags --platform-tag=macosx_10_15_x86_64 --remove dist/*.whl | |
- name: Run tests | |
run: | | |
python3 -m pip install dist/*.whl | |
python3 -m pip install pandas pyarrow psutil | |
python3 -c "import chdb; res = chdb.query('select 1112222222,555', 'CSV'); print(res)" | |
make test | |
continue-on-error: false | |
- name: Show files | |
run: ls -lh dist | |
shell: bash | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: ./dist/*.whl | |
- name: Upload pypi | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: | | |
python3 -m pip install twine | |
python3 -m twine upload dist/*.whl | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
build_wheels_macos: | |
name: cbw on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ macos-11 ] | |
# python-version: [ "3.8", "3.9", "3.10"] | |
python-version: [ "3.8" ] | |
env: | |
RUNNER_OS: ${{ matrix.os }} | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
steps: | |
- name: Install Offical Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Check Python version | |
run: | | |
python3 -VV | |
python3-config --includes | |
- name: Install clang++ for macOS | |
if: matrix.os == 'macos-11' | |
run: | | |
pwd | |
uname -a | |
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 | |
brew update | |
brew install ca-certificates lz4 mpdecimal openssl@3 readline sqlite xz z3 zstd | |
brew install --ignore-dependencies llvm@16 | |
brew install git ccache ninja libtool gettext gcc binutils grep findutils nasm | |
cd /usr/local/opt/ && sudo rm -f llvm && sudo ln -sf llvm@16 llvm | |
export PATH=$(brew --prefix llvm@16)/bin:$PATH | |
which clang++ | |
clang++ --version | |
ccache -s | |
- 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: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ matrix.os }} | |
max-size: 5G | |
append-timestamp: true | |
- name: Prepare chdb/build.sh | |
run: | | |
python3 -m pip install pybind11 | |
export PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin | |
export CC=$(brew --prefix llvm@16)/bin/clang | |
export CXX=$(brew --prefix llvm@16)/bin/clang++ | |
continue-on-error: false | |
- name: Check ccache statistics | |
run: | | |
ccache -s | |
ls -lh chdb | |
df -h | |
env: | |
CIBW_ENVIRONMENT_MACOS: "PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin CC=$(brew --prefix llvm@16)/bin/clang CXX=$(brew --prefix llvm@16)/bin/clang++" | |
# - name: Remove /usr/local/bin/python3 | |
# run: | | |
# sudo rm -f /usr/local/bin/python3 | |
- name: Install dependencies for building wheels | |
run: | | |
python3 -m pip install -U pip tox pybind11 twine setuptools wheel | |
python3 -m pip install cibuildwheel==2.12.1 | |
- name: Build wheels | |
run: python3 -m cibuildwheel --output-dir wheelhouse | |
timeout-minutes: 300 | |
env: | |
CIBW_ENVIRONMENT_MACOS: "PATH=$(brew --prefix llvm@16)/bin:/usr/local/opt/grep/libexec/gnubin:/usr/local/opt/binutils/bin:$PATH:/usr/local/opt/findutils/libexec/gnubin CC=$(brew --prefix llvm@16)/bin/clang CXX=$(brew --prefix llvm@16)/bin/clang++" | |
CIBW_DEBUG: 1 | |
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-macosx_x86_64 cp39-macosx_x86_64 cp310-macosx_x86_64" | |
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 | |
- 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: | |
## Experimental Restart on Expire/Cancel (WIP) | |
## Requires: PAT Token | |
## the PAT token should have permissions according to this | |
## documentation - https://developer.github.com/v3/actions/workflow-runs/ | |
restart_failed: | |
name: Retry Expired Builds | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' && cancelled() | |
needs: [ build_wheels_linux, build_wheels_macos, build_wheels_macos_12 ] | |
steps: | |
- name: Sleep for 20 seconds | |
run: sleep 20s | |
shell: bash | |
- name: Retry Failed/Expired Build | |
run: | | |
curl -i \ | |
-X POST \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
-H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ | |
https://api.github.com/repos/chdb-io/chdb/actions/runs/${{ github.run_id }}/rerun \ | |
-d '{"ref": "${{ github.ref }}" }' | |