add extended android support

Add x64 for <5.14 and multiarch for >=5.14
This commit is contained in:
Skycoder42
2019-11-17 11:24:19 +01:00
parent e8d2ee77ac
commit 150423fd83
7 changed files with 43 additions and 25 deletions

View File

@@ -62,8 +62,12 @@ General usage looks like this:
* The Qt version is formatted like this: `5.11.3`
* Host is one of: `linux`, `mac`, `windows`
* Target is one of: `desktop`, `android`, `ios` (iOS only works with mac host)
* For android and windows you also need to specify an arch: `win64_msvc2017_64`,
`win64_msvc2015_64`, `win32_msvc2015`, `win32_mingw53`, `win64_mingw73`, `android_x86`, `android_armv7`
* For some platforms you also need to specify an arch:
* For windows, choose one of: `win64_msvc2017_64`, `win32_msvc2017`, `win64_msvc2015_64`, `win32_msvc2015`,
`win64_mingw73`, `win32_mingw73`, `win64_mingw53`, `win32_mingw53`, `win64_msvc2017_winrt_x64`,
`win64_msvc2017_winrt_x86`, `win64_msvc2017_winrt_armv7`
* For android and Qt 5.13 or below, choose one of: `android_x86_64`, `android_arm64_v8a`, `android_x86`,
`android_armv7`
* You can also use internal 7zip extractor instead of external 7zip command.
* You can specify external 7zip command path.

View File

@@ -29,6 +29,7 @@ import platform
import sys
import yaml
from packaging.version import Version, parse
from aqt.archives import QtArchives, ToolArchives
from aqt.installer import QtInstaller
@@ -75,7 +76,7 @@ class Cli():
exit(1)
return sevenzip
def _set_arch(self, args, oarch, os_name, target):
def _set_arch(self, args, oarch, os_name, target, qt_version):
arch = oarch
if arch is None:
if os_name == "linux" and target == "desktop":
@@ -84,6 +85,8 @@ class Cli():
arch = "clang_64"
elif os_name == "mac" and target == "ios":
arch = "ios"
elif target == "android" and parse(qt_version) >= Version('5.14.0'):
arch = "android"
if arch == "":
print("Please supply a target architecture.")
args.print_help()
@@ -102,12 +105,12 @@ class Cli():
arch = args.arch
target = args.target
os_name = args.host
qt_version = args.qt_version
output_dir = args.outputdir
arch = self._set_arch(args, arch, os_name, target)
arch = self._set_arch(args, arch, os_name, target, qt_version)
modules = args.modules
sevenzip = self._set_sevenzip(args)
mirror = self._check_mirror(args)
qt_version = args.qt_version
if not self._check_qt_arg_combination(qt_version, os_name, target, arch):
self.logger.error("Specified target combination is not valid: {} {} {}".format(os_name, target, arch))
exit(1)
@@ -160,7 +163,9 @@ class Cli():
"\n wasm_32"
"\nwindows/winrt: win64_msvc2017_winrt_x64, win64_msvc2017_winrt_x86"
"\n win64_msvc2017_winrt_armv7"
"\nandroid: android_x86, android_armv7")
"\nandroid: Qt 5.14: android (optional)"
"\n Qt 5.13 or below: android_x86_64, android_arm64_v8a"
"\n android_x86, android_armv7")
install_parser.add_argument('-m', '--modules', nargs='*', help="Specify extra modules to install")
install_parser.add_argument('-O', '--outputdir', nargs='?',
help='Target output directory(default current directory)')

View File

@@ -1,6 +1,9 @@
[{"qt": [
{"os_name": "linux", "target": "desktop", "arch": "gcc_64"},
{"os_name": "linux", "target": "desktop", "arch": "wasm_32"},
{"os_name": "linux", "target": "android", "arch": "android"},
{"os_name": "linux", "target": "android", "arch": "android_x86_64"},
{"os_name": "linux", "target": "android", "arch": "android_arm64_v8a"},
{"os_name": "linux", "target": "android", "arch": "android_x86"},
{"os_name": "linux", "target": "android", "arch": "android_armv7"},
{"os_name": "mac", "target": "desktop", "arch": "clang_64"},
@@ -18,6 +21,9 @@
{"os_name": "windows", "target": "winrt", "arch": "win64_msvc2017_winrt_x86"},
{"os_name": "windows", "target": "winrt", "arch": "win64_msvc2017_winrt_armv7"},
{"os_name": "windows", "target": "desktop", "arch": "wasm_32"},
{"os_name": "windows", "target": "android", "arch": "android"},
{"os_name": "windows", "target": "android", "arch": "android_x86_64"},
{"os_name": "windows", "target": "android", "arch": "android_arm64_v8a"},
{"os_name": "windows", "target": "android", "arch": "android_x86"},
{"os_name": "windows", "target": "android", "arch": "android_armv7"}
], "tools": [

View File

@@ -72,8 +72,8 @@ mac_build_jobs.append(
# Windows Desktop
windows_build_jobs.extend(
[
BuildJob('5.12.5', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64'),
BuildJob('5.12.5', 'windows', 'desktop', 'win32_msvc2017', 'msvc2017'),
BuildJob('5.12.6', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64'),
BuildJob('5.12.6', 'windows', 'desktop', 'win32_msvc2017', 'msvc2017'),
]
)
@@ -84,11 +84,11 @@ windows_build_jobs.append(
windows_build_jobs.extend(
[
BuildJob('5.13.1', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64'),
BuildJob('5.13.1', 'windows', 'desktop', 'win64_msvc2015_64', 'msvc2015_64'),
BuildJob('5.13.1', 'windows', 'desktop', 'win64_mingw73', 'mingw73_64'),
BuildJob('5.13.1', 'windows', 'desktop', 'win32_msvc2017', 'msvc2017'),
BuildJob('5.13.1', 'windows', 'desktop', 'win32_mingw73', 'mingw73_32'),
BuildJob('5.13.2', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64'),
BuildJob('5.13.2', 'windows', 'desktop', 'win64_msvc2015_64', 'msvc2015_64'),
BuildJob('5.13.2', 'windows', 'desktop', 'win64_mingw73', 'mingw73_64'),
BuildJob('5.13.2', 'windows', 'desktop', 'win32_msvc2017', 'msvc2017'),
BuildJob('5.13.2', 'windows', 'desktop', 'win32_mingw73', 'mingw73_32'),
]
)
@@ -104,20 +104,23 @@ windows_build_jobs.extend(
# Users might develop on Win/Mac, but are most likely to use Linux for CI/CD with
# the Android ecosystem.
for android_arch in ['android_x86', 'android_armv7']:
for android_arch in ['android_x86_64', 'android_arm64_v8a', 'android_x86', 'android_armv7']:
linux_build_jobs.append(
BuildJob('5.13.1', 'linux', 'android', android_arch, android_arch)
BuildJob('5.13.2', 'linux', 'android', android_arch, android_arch)
)
linux_build_jobs.append(
BuildJob('5.14.0', 'linux', 'android', 'android', 'android')
)
# Extra modules test
linux_build_jobs.append(
BuildJob('5.13.1', 'linux', 'desktop', 'gcc_64', 'gcc_64', module='qtnetworkauth')
BuildJob('5.13.2', 'linux', 'desktop', 'gcc_64', 'gcc_64', module='qtnetworkauth')
)
mac_build_jobs.append(
BuildJob('5.13.1', 'mac', 'desktop', 'clang_64', 'clang_64', module='qtnetworkauth')
BuildJob('5.13.2', 'mac', 'desktop', 'clang_64', 'clang_64', module='qtnetworkauth')
)
windows_build_jobs.append(
BuildJob('5.13.1', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64', module='qtnetworkauth')
BuildJob('5.13.2', 'windows', 'desktop', 'win64_msvc2017_64', 'msvc2017_64', module='qtnetworkauth')
)

View File

@@ -51,18 +51,18 @@ steps:
##----------------------------------------------------
# for Android on linux
- script: |
wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
unzip android-ndk-r19c-linux-x86_64.zip
wget https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
unzip android-ndk-r20b-linux-x86_64.zip
condition: and(eq(variables['TARGET'], 'android'), eq(variables['Agent.OS'], 'Linux'))
displayName: Download and extract Android NDK
# for Android on mac
- script: |
wget https://dl.google.com/android/repository/android-ndk-r19c-darwin-x86_64.zip
unzip android-ndk-r19c-darwin-x86_64.zip
wget https://dl.google.com/android/repository/android-ndk-r20b-darwin-x86_64.zip
unzip android-ndk-r20b-darwin-x86_64.zip
condition: and(eq(variables['TARGET'], 'android'), eq(variables['Agent.OS'], 'Darwin'))
displayName: Download and extract Android NDK
- script: |
export ANDROID_NDK_ROOT=$(Build.SourcesDirectory)/android-ndk-r19c
export ANDROID_NDK_ROOT=$(Build.SourcesDirectory)/android-ndk-r20b
$(Build.BinariesDirectory)/Qt/$(QT_VERSION)/$(ARCHDIR)/bin/qmake $(Build.SourcesDirectory)/tests/accelbubble/ && make
condition: and(eq(variables['TARGET'], 'android'), or(eq(variables['Agent.OS'], 'Linux'), eq(variables['Agent.OS'], 'Darwin')))
displayName: Build accelbubble example application to test for android

View File

@@ -21,7 +21,7 @@ setup(name='aqtinstall',
author_email='miurahr@linux.com',
packages=["aqt"],
package_data={'aqt': ['*.yml', "*.json", "*.ini"]},
install_requires=['requests', 'six', 'py7zr', 'pyyaml'],
install_requires=['requests', 'six', 'py7zr', 'pyyaml', 'packaging'],
extras_require={'dev': ['pytest', 'pytest-pep8', 'pytest-cov', 'flake8']},
scripts=["bin/aqt"],
classifiers=[

View File

@@ -15,7 +15,7 @@ ignore =
[isort]
known_first_party = aqt
known_third_party = docutils,flake8,pyannotate_runtime,pytest,pytz,setuptools,sphinx,yaml
known_third_party = docutils,flake8,pyannotate_runtime,pytest,pytz,setuptools,sphinx,yaml,packaging
[testenv:check]
deps =