Skip to content

Commit f45408d

Browse files
authored
*_rebuild_updated_recipes CI jobs now test the updated recipe along all the supported Android archs (arm64-v8a, armeabi-v7a, x86_64, x86) (#2592)
1 parent 9670576 commit f45408d

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

.github/workflows/push.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,15 @@ jobs:
202202
path: ${{ matrix.runs_on }}-${{ env.AAB_ARTIFACT_FILENAME }}
203203

204204
ubuntu_rebuild_updated_recipes:
205-
name: Test updated recipes [ ubuntu-latest ]
205+
name: Test updated recipes for arch ${{ matrix.android_arch }} [ ubuntu-latest ]
206206
needs: [flake8]
207207
runs-on: ubuntu-latest
208+
continue-on-error: true
209+
strategy:
210+
matrix:
211+
android_arch: ["arm64-v8a", "armeabi-v7a", "x86_64", "x86"]
212+
env:
213+
REBUILD_UPDATED_RECIPES_EXTRA_ARGS: --arch=${{ matrix.android_arch }}
208214
steps:
209215
- name: Checkout python-for-android
210216
uses: actions/checkout@v2
@@ -227,23 +233,26 @@ jobs:
227233
make docker/run/make/rebuild_updated_recipes
228234
229235
macos_rebuild_updated_recipes:
230-
name: Test updated recipes [ ${{ matrix.runs_on }} ]
236+
name: Test updated recipes for arch ${{ matrix.android_arch }} [ ${{ matrix.runs_on }} ]
231237
needs: [flake8]
232238
defaults:
233239
run:
234240
shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }}
235241
runs-on: ${{ matrix.runs_on }}
242+
continue-on-error: true
236243
strategy:
237244
matrix:
245+
android_arch: ["arm64-v8a", "armeabi-v7a", "x86_64", "x86"]
246+
runs_on: [macos-latest, apple-silicon-m1]
238247
include:
239-
- runs_on: macos-latest
240248
- runs_on: apple-silicon-m1
241249
run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
242250
env:
243251
ANDROID_HOME: ${HOME}/.android
244252
ANDROID_SDK_ROOT: ${HOME}/.android/android-sdk
245253
ANDROID_SDK_HOME: ${HOME}/.android/android-sdk
246254
ANDROID_NDK_HOME: ${HOME}/.android/android-ndk
255+
REBUILD_UPDATED_RECIPES_EXTRA_ARGS: --arch=${{ matrix.android_arch }}
247256
steps:
248257
- name: Checkout python-for-android
249258
uses: actions/checkout@v2

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ PYTHON_WITH_VERSION=python$(PYTHON_VERSION)
1414
DOCKER_IMAGE=kivy/python-for-android
1515
ANDROID_SDK_HOME ?= $(HOME)/.android/android-sdk
1616
ANDROID_NDK_HOME ?= $(HOME)/.android/android-ndk
17+
REBUILD_UPDATED_RECIPES_EXTRA_ARGS ?= ''
1718

1819

1920
all: virtualenv
@@ -32,7 +33,7 @@ test:
3233
rebuild_updated_recipes: virtualenv
3334
. $(ACTIVATE) && \
3435
ANDROID_SDK_HOME=$(ANDROID_SDK_HOME) ANDROID_NDK_HOME=$(ANDROID_NDK_HOME) \
35-
$(PYTHON) ci/rebuild_updated_recipes.py
36+
$(PYTHON) ci/rebuild_updated_recipes.py $(REBUILD_UPDATED_RECIPES_EXTRA_ARGS)
3637

3738
testapps-with-numpy: virtualenv
3839
. $(ACTIVATE) && cd testapps/on_device_unit_tests/ && \
@@ -84,6 +85,9 @@ docker/run/make/with-artifact/aab/%: docker/build
8485
docker cp p4a-latest:/home/user/app/testapps/on_device_unit_tests/bdist_unit_tests_app-release-1.1-.aab ./aabs
8586
docker rm -fv p4a-latest
8687

88+
docker/run/make/rebuild_updated_recipes: docker/build
89+
docker run --name p4a-latest -e REBUILD_UPDATED_RECIPES_EXTRA_ARGS --env-file=.env $(DOCKER_IMAGE) make rebuild_updated_recipes
90+
8791
docker/run/make/%: docker/build
8892
docker run --rm --env-file=.env $(DOCKER_IMAGE) make $*
8993

ci/rebuild_updated_recipes.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
"""
2323
import sh
2424
import os
25+
import sys
26+
import argparse
2527
from pythonforandroid.build import Context
2628
from pythonforandroid import logger
2729
from pythonforandroid.toolchain import current_directory
@@ -46,7 +48,7 @@ def modified_recipes(branch='origin/develop'):
4648
return recipes
4749

4850

49-
def build(target_python, requirements):
51+
def build(target_python, requirements, archs):
5052
"""
5153
Builds an APK given a target Python and a set of requirements.
5254
"""
@@ -57,16 +59,29 @@ def build(target_python, requirements):
5759
requirements.add(target_python.name)
5860
requirements = ','.join(requirements)
5961
logger.info('requirements: {}'.format(requirements))
62+
6063
with current_directory('testapps/on_device_unit_tests/'):
6164
# iterates to stream the output
6265
for line in sh.python(
6366
'setup.py', 'apk', '--sdk-dir', android_sdk_home,
6467
'--ndk-dir', android_ndk_home, '--requirements',
65-
requirements, _err_to_out=True, _iter=True):
68+
requirements, *[f"--arch={arch}" for arch in archs],
69+
_err_to_out=True, _iter=True):
6670
print(line)
6771

6872

6973
def main():
74+
parser = argparse.ArgumentParser("rebuild_updated_recipes")
75+
parser.add_argument(
76+
"--arch",
77+
help="The archs to build for during tests",
78+
action="append",
79+
default=[],
80+
)
81+
args, unknown = parser.parse_known_args(sys.argv[1:])
82+
83+
logger.info(f"Building updated recipes for the following archs: {args.arch}")
84+
7085
target_python = TargetPython.python3
7186
recipes = modified_recipes()
7287
logger.info('recipes modified: {}'.format(recipes))
@@ -89,7 +104,7 @@ def main():
89104
broken_recipes = BROKEN_RECIPES[target_python]
90105
recipes -= broken_recipes
91106
logger.info('recipes to build (no broken): {}'.format(recipes))
92-
build(target_python, recipes)
107+
build(target_python, recipes, args.arch)
93108

94109

95110
if __name__ == '__main__':

0 commit comments

Comments
 (0)