diff --git a/.github/workflows/build_arm_whells.yml b/.github/workflows/build_arm_whells.yml index 1bd6f1a5a86..0b06b686d34 100644 --- a/.github/workflows/build_arm_whells.yml +++ b/.github/workflows/build_arm_whells.yml @@ -1,6 +1,12 @@ 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: @@ -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 @@ -72,49 +83,52 @@ 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 RElSPSIkKCBjZCAiJCggZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iICkiID4vZGV2L251bGwgMj4mMSAmJiBwd2QgKSIKUFJPSl9ESVI9JChkaXJuYW1lICR7RElSfSkKCmVjaG8gJHtQUk9KX0RJUn0KCmZvciBQWV9WRVIgaW4gMy44IDMuOSAzLjEwIDMuMTE7IGRvCiAgICBjZCAke1BST0pfRElSfS9jaGRiCiAgICBweWVudiBsb2NhbCAiJHtQWV9WRVJ9IgogICAgcHl0aG9uMyAtLXZlcnNpb24KICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgcHliaW5kMTEKICAgIGV4cG9ydCBDQz0vdXNyL2Jpbi9jbGFuZwogICAgZXhwb3J0IENYWD0vdXNyL2Jpbi9jbGFuZysrCiAgICAjIEluc3RhbGwgdW5pdmVyc2FsMiBwa2cKICAgIHB5dGhvbjMgLVZWCiAgICBweXRob24zLWNvbmZpZyAtLWluY2x1ZGVzCiAgICAjIGlmIHB5dGhvbjMgLVZWIGRvZXMgbm90IGNvbnRhaW4gJHtQWV9WRVJ9LCB0aGVuIGV4aXQKICAgIGlmICEgcHl0aG9uMyAtVlYgMj4mMSB8IGdyZXAgLXEgIiR7UFlfVkVSfSI7IHRoZW4KICAgICAgICBlY2hvICJFcnJvcjogUmVxdWlyZWQgdmVyc2lvbiBvZiBQeXRob24gKCR7UFlfVkVSfSkgbm90IGZvdW5kLiBBYm9ydGluZy4iCiAgICAgICAgZXhpdCAxCiAgICBmaQoKICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgLVUgcHliaW5kMTEgd2hlZWwgYnVpbGQgdG94CiAgICBybSAtcmYgLi9idWlsZGxpYgoKICAgIC4vY2hkYi9idWlsZC5zaAogICAgY2QgY2hkYiAmJiBweXRob24zIC1jICJpbXBvcnQgX2NoZGI7IHJlcyA9IF9jaGRiLnF1ZXJ5KCdzZWxlY3QgMTExMjIyMjIyMiw1NTUnLCAnSlNPTicpOyBwcmludChyZXMpIiAmJiBjZCAtCgogICAgLi9nZW5fbWFuaWZlc3Quc2gKICAgIGNhdCAuL01BTklGRVNULmluCgogICAgIyB0cnkgZGVsZXRlIAogICAgd2hsX2ZpbGU9JChmaW5kIGRpc3QgfCBncmVwICd3aGwkJyB8IGdyZXAgY3Ake1BZX1ZFUi8vLi99LWNwJHtQWV9WRVIvLy4vfSB8fCBlY2hvICJub3Rmb3VuZC53aGwiKQogICAgcm0gLWYgJHt3aGxfZmlsZX0gfHwgOgoKICAgIHB5dGhvbjMgLW0gYnVpbGQgLS13aGVlbAoKICAgIHB5dGhvbjMgLW0gd2hlZWwgdGFncyAtLXBsYXRmb3JtLXRhZz1tYW55bGludXhfMl8xN19hYXJjaDY0CgogICAgZmluZCBkaXN0CgogICAgcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCBwYW5kYXMgcHlhcnJvdyBwc3V0aWwKICAgIGZpbmQgZGlzdAogICAgd2hsX2ZpbGU9JChmaW5kIGRpc3QgfCBncmVwICd3aGwkJyB8IGdyZXAgY3Ake1BZX1ZFUi8vLi99LWNwJHtQWV9WRVIvLy4vfSkKICAgIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgLS1mb3JjZS1yZWluc3RhbGwgJHt3aGxfZmlsZX0KCiAgICBweXRob24zIC1jICJpbXBvcnQgY2hkYjsgcmVzID0gY2hkYi5xdWVyeSgnc2VsZWN0IHZlcnNpb24oKScsICdDU1YnKTsgcHJpbnQocmVzKSIKCiAgICBweXRob24zIC1tIGNoZGIgIlNFTEVDVCAxLCAnYWInIiBhcnJvd3RhYmxlCgogICAgcHl0aG9uMyAtbSBjaGRiICJTRUxFQ1QgMSwgJ2FiJyIgZGF0YWZyYW1lCgogICAgYmFzaCAteCAuL2NoZGIvdGVzdF9zbW9rZS5zaAoKICAgIG1ha2UgdGVzdApkb25lCg== | base64 -d | bash -l -e continue-on-error: false - - name: Install dependencies for building wheels + - 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 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_17_aarch64 dist/*.whl + continue-on-error: false - name: Show files - run: ls -lh wheelhouse + run: | + # e.g: remove chdb-0.11.4-cp310-cp310-linux_aarch64.whl, keep chdb-0.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sudo rm -f dist/linux_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: diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index f4a1e51a776..3bd49b0a588 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -1,21 +1,13 @@ -name: Build +name: Build X86 on: - push: - tags: - - 'v*' - branches: - - main - paths-ignore: - - '**.md' - - '**.yml' - - '.github/**' - - 'examples/**' - - 'tests/**' - pull_request: - branches: - - main workflow_dispatch: + inputs: + TAG_NAME: + description: 'Release Version Tag' + required: true + release: + types: [created] jobs: build_wheels_linux: