Patch _tkinter.c
to look in base prefix
#2442
Workflow file for this run
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: Linux Python build | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
env: | |
FORCE_COLOR: 1 | |
jobs: | |
pythonbuild: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install System Dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y --no-install-recommends libssl-dev pkg-config | |
- uses: actions/checkout@v4 | |
- name: Emit rustc version | |
run: | | |
rustc --version > .rustc-version | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-pythonbuild-${{ hashFiles('Cargo.lock', '.rustc-version') }} | |
- name: Build | |
run: | | |
cargo build --release | |
- name: Upload pythonbuild Executable | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pythonbuild | |
path: target/release/pythonbuild | |
image: | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- build | |
- build.cross | |
- gcc | |
- xcb | |
- xcb.cross | |
runs-on: ubuntu-22.04 | |
permissions: | |
packages: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate Dockerfiles | |
run: | | |
./build-linux.py --make-target empty | |
repo_name=$(echo "${GITHUB_REPOSITORY,,}" | sed 's|\.|_|g') | |
git_ref_name=$(echo "${GITHUB_REF_NAME,,}" | sed 's|[^a-z0-9_-]|_|g') | |
echo "REPO_NAME=${repo_name}" >> "${GITHUB_ENV}" | |
echo "GIT_REF_NAME=${git_ref_name}" >> "${GITHUB_ENV}" | |
- name: Build Image | |
id: build-image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: build/${{ matrix.image }}.Dockerfile | |
labels: org.opencontainers.image.source=https://github.com/${{ env.REPO_NAME }} | |
# Cache from/to the current branch of the current repo as the primary cache key. | |
# Cache from the default branch of the current repo so branches can have cache hits. | |
# Cache from the default branch of the canonical repo so forks can have cache hits. | |
# Ignore errors on cache writes so CI of forks works without a valid GHCR config. | |
cache-from: | | |
type=registry,ref=ghcr.io/${{ env.REPO_NAME }}:${{ matrix.image }}-${{ env.GIT_REF_NAME }} | |
type=registry,ref=ghcr.io/${{ env.REPO_NAME }}:${{ matrix.image }}-main | |
type=registry,ref=ghcr.io/indygreg/python-build-standalone:${{ matrix.image }}-main | |
cache-to: | | |
type=registry,ref=ghcr.io/${{ env.REPO_NAME }}:${{ matrix.image }}-${{ env.GIT_REF_NAME }},ignore-error=true | |
outputs: | | |
type=docker,dest=build/image-${{ matrix.image }}.tar | |
- name: Compress Image | |
run: | | |
echo ${{ steps.build-image.outputs.imageid }} > build/image-${{ matrix.image }} | |
zstd -v -T0 -6 --rm build/image-*.tar | |
- name: Upload Docker Image | |
uses: actions/upload-artifact@v4 | |
with: | |
name: image-${{ matrix.image }} | |
path: build/image-* | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
build: | |
- target_triple: 'x86_64-unknown-linux-gnu' | |
py: 'cpython-3.9' | |
options: 'debug' | |
run: true | |
- target_triple: 'x86_64-unknown-linux-gnu' | |
py: 'cpython-3.10' | |
options: 'debug' | |
run: true | |
- target_triple: 'x86_64-unknown-linux-gnu' | |
py: 'cpython-3.11' | |
options: 'debug' | |
run: true | |
- target_triple: 'x86_64-unknown-linux-gnu' | |
py: 'cpython-3.12' | |
options: 'debug' | |
run: true | |
needs: | |
- pythonbuild | |
- image | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Download pythonbuild | |
uses: actions/download-artifact@v4 | |
with: | |
name: pythonbuild | |
path: build | |
- name: Download images | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: image-* | |
path: build | |
merge-multiple: true | |
- name: Load Docker Images | |
run: | | |
for f in build/image-*.tar.zst; do | |
echo "decompressing $f" | |
zstd -d --rm ${f} | |
done | |
for f in build/image-*.tar; do | |
echo "loading $f" | |
docker load --input $f | |
done | |
- name: Build | |
run: | | |
# Do empty target so all generated files are touched. | |
./build-linux.py --make-target empty | |
# Touch mtimes of all images so they are newer than autogenerated files above. | |
touch build/image-* | |
./build-linux.py --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --options ${{ matrix.build.options }} | |
- name: Validate Distribution | |
run: | | |
chmod +x build/pythonbuild | |
if [ -n "${{matrix.build.run}}" ]; then | |
EXTRA_ARGS="--run" | |
fi | |
build/pythonbuild validate-distribution ${EXTRA_ARGS} dist/*.tar.zst | |
- name: Upload Distribution | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.build.py }}-${{ matrix.build.target_triple }}-${{ matrix.build.options }} | |
path: dist/* | |
# GitHub enforces a limit of 256 entries per matrix, which we exceeded above | |
# so the CPython 3.13 jobs are split out | |
build-313: | |
strategy: | |
fail-fast: false | |
matrix: | |
build: | |
- target_triple: 'x86_64-unknown-linux-gnu' | |
py: 'cpython-3.13' | |
options: 'debug' | |
run: true | |
needs: | |
- pythonbuild | |
- image | |
runs-on: ubuntu-22.04 | |
# The above should remain an exact duplicate of the `build` job | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Download pythonbuild | |
uses: actions/download-artifact@v4 | |
with: | |
name: pythonbuild | |
path: build | |
- name: Download images | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: image-* | |
path: build | |
merge-multiple: true | |
- name: Load Docker Images | |
run: | | |
for f in build/image-*.tar.zst; do | |
echo "decompressing $f" | |
zstd -d --rm ${f} | |
done | |
for f in build/image-*.tar; do | |
echo "loading $f" | |
docker load --input $f | |
done | |
- name: Build | |
run: | | |
# Do empty target so all generated files are touched. | |
./build-linux.py --make-target empty | |
# Touch mtimes of all images so they are newer than autogenerated files above. | |
touch build/image-* | |
./build-linux.py --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --options ${{ matrix.build.options }} | |
- name: Validate Distribution | |
run: | | |
chmod +x build/pythonbuild | |
if [ -n "${{matrix.build.run}}" ]; then | |
EXTRA_ARGS="--run" | |
fi | |
build/pythonbuild validate-distribution ${EXTRA_ARGS} dist/*.tar.zst | |
- name: Upload Distribution | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.build.py }}-${{ matrix.build.target_triple }}-${{ matrix.build.options }} | |
path: dist/* |