Skip to content

Commit e524c0b

Browse files
authored
add scipy/lapack CI tests (#2617)
* add scipy/lapack CI tests * retrigger checks * adding scipy test * add kivy to scipy test
1 parent 13177b1 commit e524c0b

File tree

4 files changed

+70
-1
lines changed

4 files changed

+70
-1
lines changed

.github/workflows/push.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ jobs:
6363
bootstrap:
6464
- name: sdl2
6565
target: testapps-with-numpy
66+
- name: sdl2_scipy
67+
target: testapps-with-scipy
6668
- name: webview
6769
target: testapps-webview
6870
steps:

Makefile

Lines changed: 8 additions & 0 deletions
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+
ANDROID_NDK_HOME_LEGACY ?= $(HOME)/.android/android-ndk-legacy
1718
REBUILD_UPDATED_RECIPES_EXTRA_ARGS ?= ''
1819

1920

@@ -41,6 +42,13 @@ testapps-with-numpy: virtualenv
4142
--requirements libffi,sdl2,pyjnius,kivy,python3,openssl,requests,urllib3,chardet,idna,sqlite3,setuptools,numpy \
4243
--arch=armeabi-v7a --arch=arm64-v8a --arch=x86_64 --arch=x86
4344

45+
testapps-with-scipy: virtualenv
46+
. $(ACTIVATE) && cd testapps/on_device_unit_tests/ && \
47+
export LEGACY_NDK=$(ANDROID_NDK_HOME_LEGACY) && \
48+
python setup.py apk --sdk-dir $(ANDROID_SDK_HOME) --ndk-dir $(ANDROID_NDK_HOME) \
49+
--requirements python3,scipy,kivy \
50+
--arch=armeabi-v7a --arch=arm64-v8a
51+
4452
testapps-with-numpy-aab: virtualenv
4553
. $(ACTIVATE) && cd testapps/on_device_unit_tests/ && \
4654
python setup.py aab --sdk-dir $(ANDROID_SDK_HOME) --ndk-dir $(ANDROID_NDK_HOME) \

ci/makefiles/android.mk

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
# Those android NDK/SDK variables can be override when running the file
44
ANDROID_NDK_VERSION ?= 23b
5+
ANDROID_NDK_VERSION_LEGACY ?= 19c
56
ANDROID_SDK_TOOLS_VERSION ?= 6514223
67
ANDROID_SDK_BUILD_TOOLS_VERSION ?= 29.0.3
78
ANDROID_HOME ?= $(HOME)/.android
@@ -23,22 +24,34 @@ ANDROID_SDK_TOOLS_DL_URL=https://dl.google.com/android/repository/$(ANDROID_SDK_
2324
ANDROID_NDK_HOME=$(ANDROID_HOME)/android-ndk
2425
ANDROID_NDK_FOLDER=$(ANDROID_HOME)/android-ndk-r$(ANDROID_NDK_VERSION)
2526
ANDROID_NDK_ARCHIVE=android-ndk-r$(ANDROID_NDK_VERSION)-$(TARGET_OS).zip
27+
28+
ANDROID_NDK_HOME_LEGACY=$(ANDROID_HOME)/android-ndk-legacy
29+
ANDROID_NDK_FOLDER_LEGACY=$(ANDROID_HOME)/android-ndk-r$(ANDROID_NDK_VERSION_LEGACY)
30+
ANDROID_NDK_ARCHIVE_LEGACY=android-ndk-r$(ANDROID_NDK_VERSION_LEGACY)-$(TARGET_OS)-x86_64.zip
31+
32+
ANDROID_NDK_GFORTRAN_ARCHIVE_ARM64=gcc-arm64-linux-x86_64.tar.bz2
33+
ANDROID_NDK_GFORTRAN_ARCHIVE_ARM=gcc-arm-linux-x86_64.tar.bz2
34+
35+
2636
ANDROID_NDK_DL_URL=https://dl.google.com/android/repository/$(ANDROID_NDK_ARCHIVE)
37+
ANDROID_NDK_DL_URL_LEGACY=https://dl.google.com/android/repository/$(ANDROID_NDK_ARCHIVE_LEGACY)
2738

2839
$(info Target install OS is : $(target_os))
2940
$(info Android SDK home is : $(ANDROID_SDK_HOME))
3041
$(info Android NDK home is : $(ANDROID_NDK_HOME))
42+
$(info Android NDK Legacy home is : $(ANDROID_NDK_HOME_LEGACY))
3143
$(info Android SDK download url is : $(ANDROID_SDK_TOOLS_DL_URL))
3244
$(info Android NDK download url is : $(ANDROID_NDK_DL_URL))
3345
$(info Android API level is : $(ANDROID_API_LEVEL))
3446
$(info Android NDK version is : $(ANDROID_NDK_VERSION))
47+
$(info Android NDK Legacy version is : $(ANDROID_NDK_VERSION_LEGACY))
3548
$(info JAVA_HOME is : $(JAVA_HOME))
3649

3750
all: install_sdk install_ndk
3851

3952
install_sdk: download_android_sdk extract_android_sdk update_android_sdk
4053

41-
install_ndk: download_android_ndk extract_android_ndk
54+
install_ndk: download_android_ndk download_android_ndk_legacy download_android_ndk_gfortran extract_android_ndk extract_android_ndk_legacy extract_android_ndk_gfortran
4255

4356
download_android_sdk:
4457
curl --location --progress-bar --continue-at - \
@@ -48,6 +61,17 @@ download_android_ndk:
4861
curl --location --progress-bar --continue-at - \
4962
$(ANDROID_NDK_DL_URL) --output $(ANDROID_NDK_ARCHIVE)
5063

64+
download_android_ndk_legacy:
65+
curl --location --progress-bar --continue-at - \
66+
$(ANDROID_NDK_DL_URL_LEGACY) --output $(ANDROID_NDK_ARCHIVE_LEGACY)
67+
68+
download_android_ndk_gfortran:
69+
curl --location --progress-bar --continue-at - \
70+
https://github.com/mzakharo/android-gfortran/releases/download/r$(ANDROID_NDK_VERSION_LEGACY)/$(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM64) --output $(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM64)
71+
curl --location --progress-bar --continue-at - \
72+
https://github.com/mzakharo/android-gfortran/releases/download/r$(ANDROID_NDK_VERSION_LEGACY)/$(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM) --output $(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM)
73+
74+
5175
# Extract android SDK and remove the compressed file
5276
extract_android_sdk:
5377
mkdir -p $(ANDROID_SDK_HOME) \
@@ -62,6 +86,22 @@ extract_android_ndk:
6286
&& mv $(ANDROID_NDK_FOLDER) $(ANDROID_NDK_HOME) \
6387
&& rm -f $(ANDROID_NDK_ARCHIVE)
6488

89+
extract_android_ndk_legacy:
90+
mkdir -p $(ANDROID_NDK_FOLDER_LEGACY) \
91+
&& unzip -q $(ANDROID_NDK_ARCHIVE_LEGACY) -d $(ANDROID_HOME) \
92+
&& mv $(ANDROID_NDK_FOLDER_LEGACY) $(ANDROID_NDK_HOME_LEGACY) \
93+
&& rm -f $(ANDROID_NDK_ARCHIVE_LEGACY)
94+
95+
extract_android_ndk_gfortran:
96+
rm -rf $(ANDROID_NDK_HOME_LEGACY)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/
97+
mkdir $(ANDROID_NDK_HOME_LEGACY)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/
98+
tar -xvf $(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM64) -C $(ANDROID_NDK_HOME_LEGACY)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/ --strip-components 1
99+
rm -rf $(ANDROID_NDK_HOME_LEGACY)/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/
100+
mkdir $(ANDROID_NDK_HOME_LEGACY)/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/
101+
tar -xvf $(ANDROID_NDK_GFORTRAN_ARCHIVE_ARM) -C $(ANDROID_NDK_HOME_LEGACY)/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/ --strip-components 1
102+
103+
104+
65105
# updates Android SDK, install Android API, Build Tools and accept licenses
66106
update_android_sdk:
67107
touch $(ANDROID_HOME)/repositories.cfg

testapps/on_device_unit_tests/test_app/tests/test_requirements.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,25 @@ def test_run_module(self):
1212
arr = np.random.random((3, 3))
1313
det = np.linalg.det(arr)
1414

15+
class ScipyTestCase(PythonTestMixIn, TestCase):
16+
module_import = 'scipy'
17+
18+
def test_run_module(self):
19+
import numpy as np
20+
from scipy.cluster.vq import vq, kmeans, whiten
21+
features = np.array([[ 1.9,2.3],
22+
[ 1.5,2.5],
23+
[ 0.8,0.6],
24+
[ 0.4,1.8],
25+
[ 0.1,0.1],
26+
[ 0.2,1.8],
27+
[ 2.0,0.5],
28+
[ 0.3,1.5],
29+
[ 1.0,1.0]])
30+
whitened = whiten(features)
31+
book = np.array((whitened[0],whitened[2]))
32+
print('kmeans', kmeans(whitened,book))
33+
1534

1635
class OpensslTestCase(PythonTestMixIn, TestCase):
1736
module_import = '_ssl'

0 commit comments

Comments
 (0)