mirror of
https://github.com/python/cpython.git
synced 2024-11-27 03:45:08 +08:00
8214e0f709
This change enables custom GHA runners for Ubuntu-24.04 that run on Arm hardware. It also prepares for Windows runners on Arm hardware, but doesn't enable that just yet, because the Arm GHA runner images for Windows need to be updated.
109 lines
4.2 KiB
YAML
109 lines
4.2 KiB
YAML
name: Reusable Ubuntu
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
config_hash:
|
|
required: true
|
|
type: string
|
|
free-threading:
|
|
description: Whether to use free-threaded mode
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
|
|
jobs:
|
|
build_ubuntu_reusable:
|
|
name: 'build and test'
|
|
timeout-minutes: 60
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-24.04, ubuntu-24.04-aarch64]
|
|
env:
|
|
FORCE_COLOR: 1
|
|
OPENSSL_VER: 3.0.15
|
|
PYTHONSTRICTEXTENSIONBUILD: 1
|
|
TERM: linux
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Register gcc problem matcher
|
|
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
|
|
- name: Install dependencies
|
|
run: sudo ./.github/workflows/posix-deps-apt.sh
|
|
- name: Configure OpenSSL env vars
|
|
run: |
|
|
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
|
|
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
|
|
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
|
|
- name: 'Restore OpenSSL build'
|
|
id: cache-openssl
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
|
|
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
|
|
- name: Install OpenSSL
|
|
if: steps.cache-openssl.outputs.cache-hit != 'true'
|
|
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
|
|
- name: Add ccache to PATH
|
|
run: |
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
|
|
- name: Configure ccache action
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
save: ${{ github.event_name == 'push' }}
|
|
max-size: "200M"
|
|
- name: Setup directory envs for out-of-tree builds
|
|
run: |
|
|
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
|
|
echo "CPYTHON_BUILDDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-builddir)" >> "$GITHUB_ENV"
|
|
- name: Create directories for read-only out-of-tree builds
|
|
run: mkdir -p "$CPYTHON_RO_SRCDIR" "$CPYTHON_BUILDDIR"
|
|
- name: Bind mount sources read-only
|
|
run: sudo mount --bind -o ro "$GITHUB_WORKSPACE" "$CPYTHON_RO_SRCDIR"
|
|
- name: Runner image version
|
|
run: echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV"
|
|
- name: Restore config.cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
|
|
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }}
|
|
- name: Configure CPython out-of-tree
|
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
|
run: >-
|
|
../cpython-ro-srcdir/configure
|
|
--config-cache
|
|
--with-pydebug
|
|
--enable-slower-safety
|
|
--enable-safety
|
|
--with-openssl="$OPENSSL_DIR"
|
|
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
|
|
- name: Build CPython out-of-tree
|
|
if: ${{ inputs.free-threading }}
|
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
|
run: make -j
|
|
- name: Build CPython out-of-tree (for compiler warning check)
|
|
if: ${{ !inputs.free-threading}}
|
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
|
run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt
|
|
- name: Display build info
|
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
|
run: make pythoninfo
|
|
- name: Check compiler warnings
|
|
if: ${{ !inputs.free-threading }}
|
|
run: >-
|
|
python Tools/build/check_warnings.py
|
|
--compiler-output-file-path=${{ env.CPYTHON_BUILDDIR }}/compiler_output_ubuntu.txt
|
|
--warning-ignore-file-path "${GITHUB_WORKSPACE}/Tools/build/.warningignore_ubuntu"
|
|
--compiler-output-type=gcc
|
|
--fail-on-regression
|
|
--fail-on-improvement
|
|
--path-prefix="../cpython-ro-srcdir/"
|
|
- name: Remount sources writable for tests
|
|
# some tests write to srcdir, lack of pyc files slows down testing
|
|
run: sudo mount "$CPYTHON_RO_SRCDIR" -oremount,rw
|
|
- name: Tests
|
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
|
run: xvfb-run make ci
|