| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| {% import 'macros.jinja' as macros with context %} |
| |
| {{ macros.github_header() }} |
| |
| permissions: |
| packages: write |
| |
| jobs: |
| build: |
| name: "Build wheel for {{ linux_wheel_kind }} {{ linux_wheel_version }}" |
| {% if arch == "amd64" %} |
| runs-on: ubuntu-latest |
| {% else %} |
| runs-on: ubuntu-24.04-arm |
| {% endif %} |
| env: |
| {% if linux_wheel_kind == "musllinux" %} |
| ALPINE_LINUX: "3.22" |
| {% endif %} |
| # archery uses these environment variables |
| {% if arch == "amd64" %} |
| ARCH: amd64 |
| {% else %} |
| ARCH: arm64v8 |
| {% endif %} |
| PYTHON: "{{ python_version }}" |
| PYTHON_ABI_TAG: "{{ python_abi_tag }}" |
| PYTHON_IMAGE_TAG: "{{ python_version }}" |
| |
| steps: |
| {{ macros.github_checkout_arrow()|indent }} |
| {{ macros.github_free_space()|indent }} |
| {{ macros.github_install_archery()|indent }} |
| {{ macros.github_login_dockerhub()|indent }} |
| |
| # Detect free-threaded Python builds |
| - name: Prepare |
| run: | |
| if [[ "${PYTHON_ABI_TAG}" == *t ]]; then |
| test_image_prefix=python-free-threaded |
| else |
| test_image_prefix=python |
| fi |
| echo "TEST_IMAGE_PREFIX=${test_image_prefix}" >> ${GITHUB_ENV} |
| |
| - name: Build wheel |
| shell: bash |
| env: |
| GITHUB_TOKEN: {{ '${{ secrets.GITHUB_TOKEN }}' }} |
| run: | |
| if [ "{{ linux_wheel_kind }}" = "musllinux" ] && [ "{{ arch }}" = "arm64" ]; then |
| # We can't use NuGet on musl arm systems because the official NuGet binary for arm doesn't exist. |
| : |
| else |
| export VCPKG_BINARY_SOURCES="clear;nuget,GitHub,readwrite" |
| fi |
| archery docker run \ |
| -e SETUPTOOLS_SCM_PRETEND_VERSION={{ arrow.no_rc_version }} \ |
| python-wheel-{{ linux_wheel_kind }}-{{ linux_wheel_version }} |
| |
| - uses: actions/upload-artifact@v4 |
| with: |
| name: wheel |
| path: arrow/python/repaired_wheels/*.whl |
| |
| # TODO(kszucs): auditwheel show |
| - name: Test wheel |
| shell: bash |
| run: | |
| source arrow/ci/scripts/util_enable_core_dumps.sh |
| archery docker run ${TEST_IMAGE_PREFIX}-wheel-{{ linux_wheel_kind }}-test-imports |
| archery docker run ${TEST_IMAGE_PREFIX}-wheel-{{ linux_wheel_kind }}-test-unittests |
| |
| - name: Test wheel on AlmaLinux 8 |
| shell: bash |
| if: | |
| '{{ python_version }}' == '3.12' && '{{ linux_wheel_kind }}' == 'manylinux' |
| env: |
| ALMALINUX: "8" |
| run: | |
| archery docker run \ |
| -e ARROW_GANDIVA=OFF \ |
| -e TEST_DEFAULT=0 \ |
| -e TEST_PYARROW_VERSION={{ arrow.no_rc_version }} \ |
| -e TEST_PYTHON_VERSIONS={{ python_version }} \ |
| -e TEST_WHEEL_PLATFORM_TAGS={{ wheel_platform_tag }} \ |
| -e TEST_WHEELS=1 \ |
| almalinux-verify-rc |
| |
| - name: Test wheel on Ubuntu 22.04 |
| shell: bash |
| if: | |
| '{{ python_version }}' == '3.10' && '{{ linux_wheel_kind }}' == 'manylinux' |
| env: |
| UBUNTU: "22.04" |
| run: | |
| archery docker run \ |
| -e TEST_DEFAULT=0 \ |
| -e TEST_PYARROW_VERSION={{ arrow.no_rc_version }} \ |
| -e TEST_PYTHON_VERSIONS={{ python_version }} \ |
| -e TEST_WHEEL_PLATFORM_TAGS={{ wheel_platform_tag }} \ |
| -e TEST_WHEELS=1 \ |
| ubuntu-verify-rc |
| |
| - name: Test wheel on Ubuntu 24.04 |
| shell: bash |
| if: | |
| '{{ python_version }}' == '3.12' && '{{ linux_wheel_kind }}' == 'manylinux' |
| env: |
| UBUNTU: "24.04" |
| run: | |
| archery docker run \ |
| -e TEST_DEFAULT=0 \ |
| -e TEST_PYARROW_VERSION={{ arrow.no_rc_version }} \ |
| -e TEST_PYTHON_VERSIONS={{ python_version }} \ |
| -e TEST_WHEEL_PLATFORM_TAGS={{ wheel_platform_tag }} \ |
| -e TEST_WHEELS=1 \ |
| ubuntu-verify-rc |
| |
| {{ macros.github_upload_releases("arrow/python/repaired_wheels/*.whl")|indent }} |
| {{ macros.github_upload_wheel_scientific_python("arrow/python/repaired_wheels/*.whl")|indent }} |
| |
| {% if arrow.is_default_branch() %} |
| - name: Push Docker images |
| shell: bash |
| run: | |
| archery docker push python-wheel-{{ linux_wheel_kind }}-{{ linux_wheel_version }} |
| archery docker push ${TEST_IMAGE_PREFIX}-wheel-{{ linux_wheel_kind }}-test-unittests |
| {% endif %} |