Repository navigation
austin-dist: Add version 4.0.0 #7
Workflow file for this run
This file contains hidden or 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
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on: https://github.com/P403n1x87/austin/blob/v4.0.0/.github/workflows/release_arch.yml | |
| # and https://github.com/P403n1x87/austin/blob/v4.0.0/.github/workflows/tests.yml | |
| name: Build austin-dist wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/austin-dist.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-austin-dist.yml' | |
| - 'docs/packages/austin-dist.yaml' | |
| - 'patches/austin-dist/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-austin-dist.yml' | |
| - 'docs/packages/austin-dist.yaml' | |
| - 'patches/austin-dist/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| LIBUNWIND_VERSION: '1.8.3' | |
| UV_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ | |
| # austin-python pins protobuf~=3.12 and our registry only carries 7.x, which | |
| # first-index resolution stops at. | |
| UV_INDEX_STRATEGY: unsafe-best-match | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: austin-dist | |
| version: ${{ inputs.version }} | |
| build_wheel: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build austin-dist ${{ matrix.version }} py3-none-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 60 | |
| env: | |
| AUSTIN_DIST_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout austin v${{ matrix.version }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: P403n1x87/austin | |
| ref: v${{ env.AUSTIN_DIST_VERSION }} | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Apply patches | |
| run: git apply -v python-wheels/patches/austin-dist/${{ env.AUSTIN_DIST_VERSION }}/*.patch | |
| # Rocky 10 ships no libunwind, so austinp's unwinder is built from source | |
| # the way upstream's scripts/build_arch.sh does for the other Linux | |
| # architectures. | |
| - name: Build austin and package the wheel | |
| run: | | |
| docker run --rm \ | |
| -v "$(pwd)":/workspace \ | |
| --workdir /workspace \ | |
| -e AUSTIN_DIST_VERSION \ | |
| -e LIBUNWIND_VERSION \ | |
| "${{ env.MANYLINUX_RISCV64_IMAGE }}" \ | |
| bash -c ' | |
| set -euxo pipefail | |
| dnf -y --disablerepo=extras install autoconf automake binutils-devel zlib-ng-compat-static | |
| cd /tmp | |
| curl -fsSLO "https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/libunwind-${LIBUNWIND_VERSION}.tar.gz" | |
| tar xf "libunwind-${LIBUNWIND_VERSION}.tar.gz" | |
| cd "libunwind-${LIBUNWIND_VERSION}" | |
| ./configure --prefix=/usr --libdir=/usr/lib64 --disable-documentation --disable-tests --disable-minidebuginfo --disable-zlibdebuginfo CFLAGS=-fPIC | |
| make -j"$(nproc)" install | |
| cp COPYING /workspace/LICENSE.libunwind | |
| cd /workspace | |
| for licence in /usr/share/licenses/binutils/*; do | |
| cp "$licence" "LICENSE.binutils.$(basename "$licence")" | |
| done | |
| autoreconf --install | |
| ./configure | |
| make -j"$(nproc)" | |
| /opt/python/cp312-cp312/bin/python -m pip install -q wheel | |
| /opt/python/cp312-cp312/bin/python scripts/build-wheel.py \ | |
| --version "$AUSTIN_DIST_VERSION" \ | |
| --platform manylinux_2_39_riscv64 \ | |
| --files austin:src/austin austinp:src/austinp \ | |
| --licenses LICENSE.md LICENSE.libunwind LICENSE.binutils.* | |
| ' | |
| - name: Verify the wheel ships both riscv64 binaries | |
| run: | | |
| python3 - dist/*.whl <<'EOF' | |
| import sys, zipfile | |
| names = zipfile.ZipFile(sys.argv[1]).namelist() | |
| print("\n".join(names)) | |
| scripts = sorted(n.rsplit("/", 1)[-1] for n in names if ".data/scripts/" in n) | |
| assert scripts == ["austin", "austinp"], scripts | |
| licenses = sorted(n.rsplit("/", 1)[-1] for n in names if ".dist-info/licenses/" in n) | |
| assert {"LICENSE.md", "LICENSE.libunwind"} <= set(licenses), licenses | |
| assert any(n.startswith("LICENSE.binutils.") for n in licenses), licenses | |
| with zipfile.ZipFile(sys.argv[1]) as zf: | |
| for name in (n for n in names if ".data/scripts/" in n): | |
| header = zf.read(name)[:20] | |
| assert header[:4] == b"\x7fELF", (name, header) | |
| assert header[18] == 0xF3, (name, header) | |
| EOF | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: austin-dist-${{ env.AUSTIN_DIST_VERSION }}-py3-none-manylinux_riscv64 | |
| path: dist/*.whl | |
| if-no-files-found: error | |
| test_wheel: | |
| name: Test austin-dist ${{ matrix.version }} on Python ${{ matrix.python-version }} | |
| needs: [setup, build_wheel] | |
| if: needs.setup.outputs.versions != '[]' | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # Upstream tests 3.9 to 3.14; trimmed to the interpreters this registry targets. | |
| python-version: ['3.12', '3.13', '3.14'] | |
| env: | |
| AUSTIN_DIST_VERSION: ${{ matrix.version }} | |
| AUSTIN_TESTS_PYTHON_VERSIONS: ${{ matrix.python-version }} | |
| # A native unwind per sample is slow enough on these runners that | |
| # austinp's CPU-bound cases overrun the suite's own 60-second default. | |
| AUSTIN_TESTS_TIMEOUT: '300' | |
| steps: | |
| - name: Checkout austin v${{ matrix.version }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: P403n1x87/austin | |
| ref: v${{ env.AUSTIN_DIST_VERSION }} | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Apply patches | |
| run: git apply -v python-wheels/patches/austin-dist/${{ env.AUSTIN_DIST_VERSION }}/*.patch | |
| - name: Download wheel | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: austin-dist-${{ env.AUSTIN_DIST_VERSION }}-py3-none-manylinux_riscv64 | |
| path: wheelhouse | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| activate-environment: true | |
| enable-cache: false | |
| - name: Install the wheel and upstream's test dependencies | |
| run: uv pip install -r test/requirements.txt wheelhouse/*.whl | |
| # The suite runs the binaries from src/, which is where upstream's own test | |
| # jobs download them to; here they come out of the installed wheel. | |
| - name: Stage the wheel's binaries | |
| run: cp "$(command -v austin)" "$(command -v austinp)" src/ | |
| # Upstream's own test jobs do this so that the suite can print a | |
| # backtrace of a crashed austin process. | |
| - name: Enable crash diagnostics | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y -qq --no-install-recommends gdb | |
| echo "core.%p" | sudo tee /proc/sys/kernel/core_pattern | |
| - name: Run upstream's tests | |
| run: | | |
| ulimit -c unlimited | |
| python -m pytest -svr a test/functional test/integrity | |
| - name: Run upstream's tests as root | |
| run: | | |
| ulimit -c unlimited | |
| sudo -E env PATH="$PATH" python -m pytest -svr a test/functional test/integrity | |
| gpl_sources: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Collect GPL sources for austin-dist ${{ matrix.version }} | |
| runs-on: ubuntu-24.04-riscv | |
| env: | |
| AUSTIN_DIST_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| # austinp links binutils' libbfd, libiberty and libsframe statically. | |
| - uses: ./actions/collect-gpl-sources | |
| with: | |
| image: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| packages: gcc binutils | |
| output: gpl-sources.tar | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: austin-dist-${{ env.AUSTIN_DIST_VERSION }}-gpl-sources | |
| path: gpl-sources.tar | |
| if-no-files-found: error | |
| publish: | |
| name: Publish austin-dist ${{ matrix.version }} | |
| needs: [setup, build_wheel, test_wheel, gpl_sources] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: austin-dist-${{ matrix.version }}-py3-none-manylinux_riscv64 | |
| gpl-sources-artifact: austin-dist-${{ matrix.version }}-gpl-sources | |
| gpl-sources-description: gcc and the binutils archives linked into austinp |