Skip to content

Commit 58d2114

Browse files
authored
Merge pull request #3321 from kivy/release-2026.05.09
Release 2026.05.09
2 parents 957a3e5 + 0d1977c commit 58d2114

278 files changed

Lines changed: 9164 additions & 4404 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ bin/
66
*.pyc
77
**/__pycache__
88
*.egg-info/
9+
docker-data/

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Keep GitHub Actions up to date with GitHub's Dependabot...
2+
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
3+
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem
4+
version: 2
5+
updates:
6+
- package-ecosystem: github-actions
7+
directory: /
8+
groups:
9+
github-actions:
10+
patterns:
11+
- "*" # Group all Actions updates into a single larger pull request
12+
schedule:
13+
interval: weekly

.github/workflows/custom-build.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Custom build
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
arch:
7+
description: "Comma separated architectures (e.g., armeabi-v7a, arm64-v8a, x86_64, x86)"
8+
required: true
9+
default: "armeabi-v7a,arm64-v8a,x86_64,x86"
10+
artifact:
11+
description: "Artifact type"
12+
required: true
13+
default: "apk"
14+
type: choice
15+
options:
16+
- "aab"
17+
- "aar"
18+
- "apk"
19+
bootstrap:
20+
description: "Bootstrap to use"
21+
required: true
22+
default: "sdl2"
23+
type: choice
24+
options:
25+
- "qt"
26+
- "sdl2"
27+
- "service_library"
28+
- "service_only"
29+
- "webview"
30+
mode:
31+
description: "Build mode"
32+
required: true
33+
default: "debug"
34+
type: choice
35+
options:
36+
- "debug"
37+
- "release"
38+
os:
39+
description: "Operating system to run on"
40+
required: true
41+
default: "ubuntu-latest"
42+
type: choice
43+
options:
44+
- "ubuntu-latest"
45+
- "macos-latest"
46+
requirements:
47+
description: "Comma separated requirements"
48+
required: true
49+
default: "python3,kivy"
50+
51+
env:
52+
APK_ARTIFACT_FILENAME: bdist_unit_tests_app-debug-1.1.apk
53+
AAB_ARTIFACT_FILENAME: bdist_unit_tests_app-release-1.1.aab
54+
AAR_ARTIFACT_FILENAME: bdist_unit_tests_app-release-1.1.aar
55+
PYTHONFORANDROID_PREREQUISITES_INSTALL_INTERACTIVE: 0
56+
57+
jobs:
58+
build:
59+
name: Build test APP [ ${{ github.event.inputs.arch }} | ${{ github.event.inputs.artifact }} | ${{ github.event.inputs.bootstrap }} | ${{ github.event.inputs.mode }} | ${{ github.event.inputs.os }} | ${{ github.event.inputs.requirements }}]
60+
runs-on: ${{ github.event.inputs.os }}
61+
steps:
62+
- name: Checkout python-for-android
63+
uses: actions/checkout@v6
64+
- name: Pull the python-for-android docker image
65+
run: make docker/pull
66+
- name: Build python-for-android docker image
67+
run: make docker/build
68+
- name: Build multi-arch artifact with docker
69+
run: |
70+
docker run --name p4a-latest kivy/python-for-android make ARCH=${{ github.event.inputs.arch }} ARTIFACT=${{ github.event.inputs.artifact }} BOOTSTRAP=${{ github.event.inputs.bootstrap }} MODE=${{ github.event.inputs.mode }} REQUIREMENTS=${{ github.event.inputs.requirements }} testapps-generic
71+
- name: Copy produced artifacts from docker container (*.apk, *.aab)
72+
if: github.event.inputs.bootstrap != 'service_library'
73+
run: |
74+
mkdir -p dist
75+
docker cp p4a-latest:/home/user/app/testapps/on_device_unit_tests/${{ env.APK_ARTIFACT_FILENAME }} dist/ || true
76+
docker cp p4a-latest:/home/user/app/testapps/on_device_unit_tests/${{ env.AAB_ARTIFACT_FILENAME }} dist/ || true
77+
- name: Copy produced artifacts from docker container (*.aar)
78+
if: github.event.inputs.bootstrap == 'service_library'
79+
run: |
80+
mkdir -p dist
81+
docker cp p4a-latest:/home/user/app/testapps/on_device_unit_tests/${{ env.AAR_ARTIFACT_FILENAME }} dist/
82+
- name: Rename artifacts to include the build platform name (*.apk, *.aab, *.aar)
83+
run: |
84+
if [ -f dist/${{ env.APK_ARTIFACT_FILENAME }} ]; then mv dist/${{ env.APK_ARTIFACT_FILENAME }} dist/${{ github.event.inputs.os }}-${{ github.event.inputs.bootstrap }}-${{ env.APK_ARTIFACT_FILENAME }}; fi
85+
if [ -f dist/${{ env.AAB_ARTIFACT_FILENAME }} ]; then mv dist/${{ env.AAB_ARTIFACT_FILENAME }} dist/${{ github.event.inputs.os }}-${{ github.event.inputs.bootstrap }}-${{ env.AAB_ARTIFACT_FILENAME }}; fi
86+
if [ -f dist/${{ env.AAR_ARTIFACT_FILENAME }} ]; then mv dist/${{ env.AAR_ARTIFACT_FILENAME }} dist/${{ github.event.inputs.os }}-${{ github.event.inputs.bootstrap }}-${{ env.AAR_ARTIFACT_FILENAME }}; fi
87+
- name: Upload artifacts
88+
uses: actions/upload-artifact@v7
89+
with:
90+
name: ${{ github.event.inputs.os }}-${{ github.event.inputs.bootstrap }}-artifacts
91+
path: dist
92+
# Cleanup the container after all steps are done
93+
- name: Cleanup Docker container
94+
run: docker rm p4a-latest
95+
if: always()

.github/workflows/docker.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Docker
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- develop
8+
tags:
9+
- "*"
10+
pull_request:
11+
12+
jobs:
13+
docker:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v6
17+
- uses: docker/setup-buildx-action@v4
18+
- run: make docker/build
19+
- name: docker login
20+
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/')
21+
env:
22+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
23+
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
24+
run: make docker/login
25+
- name: docker push
26+
if: github.ref == 'refs/heads/develop'
27+
run: make docker/push
28+
- name: docker push (tag)
29+
if: startsWith(github.ref, 'refs/tags/')
30+
run: |
31+
make docker/tag DOCKER_TAG=${GITHUB_REF#refs/tags/}
32+
make docker/push

0 commit comments

Comments
 (0)