From 4df3c28051f2af3d852b2658e117739553d3e135 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 3 Mar 2019 22:00:42 +0100 Subject: [PATCH] Continue work on PKGBUILDs for building final APKs * Add armv7a-eabi * APKs seem to build now but need further testing --- c++utilities/android-aarch64/PKGBUILD | 1 - c++utilities/android-armv7a-eabi/PKGBUILD | 1 - passwordfile/android-aarch64/PKGBUILD | 1 - passwordfile/android-armv7a-eabi/PKGBUILD | 1 - passwordmanager/android-aarch64/PKGBUILD | 76 +++++++++------ passwordmanager/android-armv7a-eabi/PKGBUILD | 99 ++++++++++++++++++++ qtutilities/android-aarch64/PKGBUILD | 1 - qtutilities/android-armv7a-eabi/PKGBUILD | 1 - tagparser/android-aarch64/PKGBUILD | 1 - tagparser/android-armv7a-eabi/PKGBUILD | 1 - 10 files changed, 144 insertions(+), 39 deletions(-) create mode 100644 passwordmanager/android-armv7a-eabi/PKGBUILD diff --git a/c++utilities/android-aarch64/PKGBUILD b/c++utilities/android-aarch64/PKGBUILD index eff9818d..f0c5db71 100644 --- a/c++utilities/android-aarch64/PKGBUILD +++ b/c++utilities/android-aarch64/PKGBUILD @@ -7,7 +7,6 @@ _reponame=cpp-utilities _pkgname=c++utilities _android_arch=arm64-v8a _pkg_arch=aarch64 -_android_toolchain=$_pkg_arch-linux-android _android_platform=22 _prefix=/opt/android-libs/$_pkg_arch diff --git a/c++utilities/android-armv7a-eabi/PKGBUILD b/c++utilities/android-armv7a-eabi/PKGBUILD index 9d764e62..dc4adaf5 100644 --- a/c++utilities/android-armv7a-eabi/PKGBUILD +++ b/c++utilities/android-armv7a-eabi/PKGBUILD @@ -7,7 +7,6 @@ _reponame=cpp-utilities _pkgname=c++utilities _android_arch=armeabi-v7a _pkg_arch=armv7a-eabi -_android_toolchain=$_pkg_arch-linux-android _android_platform=21 _prefix=/opt/android-libs/$_pkg_arch diff --git a/passwordfile/android-aarch64/PKGBUILD b/passwordfile/android-aarch64/PKGBUILD index b3897cc7..98c1c5dc 100644 --- a/passwordfile/android-aarch64/PKGBUILD +++ b/passwordfile/android-aarch64/PKGBUILD @@ -7,7 +7,6 @@ _reponame=passwordfile _pkgname=passwordfile _android_arch=arm64-v8a _pkg_arch=aarch64 -_android_toolchain=$_pkg_arch-linux-android _android_platform=22 _prefix=/opt/android-libs/$_pkg_arch diff --git a/passwordfile/android-armv7a-eabi/PKGBUILD b/passwordfile/android-armv7a-eabi/PKGBUILD index a1a7201f..42b035d2 100644 --- a/passwordfile/android-armv7a-eabi/PKGBUILD +++ b/passwordfile/android-armv7a-eabi/PKGBUILD @@ -7,7 +7,6 @@ _reponame=passwordfile _pkgname=passwordfile _android_arch=armeabi-v7a _pkg_arch=armv7a-eabi -_android_toolchain=$_pkg_arch-linux-android _android_platform=21 _prefix=/opt/android-libs/$_pkg_arch diff --git a/passwordmanager/android-aarch64/PKGBUILD b/passwordmanager/android-aarch64/PKGBUILD index cafcba24..4fc96cf5 100644 --- a/passwordmanager/android-aarch64/PKGBUILD +++ b/passwordmanager/android-aarch64/PKGBUILD @@ -17,8 +17,9 @@ pkgrel=1 arch=('any') pkgdesc="A simple password store using AES-256-CBC encryption via OpenSSL (Android, $_pkg_arch)" license=('GPL') -depends=("android-$_pkg_arch-passwordfile" "android-$_pkg_arch-qtutilities" "android-$_pkg_arch-kirigami2") -makedepends=('cmake' 'android-ndk' 'android-sdk' 'extra-cmake-modules' 'jdk8-openjdk') +depends=() +makedepends=("android-$_pkg_arch-passwordfile" "android-$_pkg_arch-qtutilities" "android-$_pkg_arch-kirigami2" + 'cmake' 'android-ndk' 'android-sdk' 'android-platform' 'jdk8-openjdk' 'breeze-icons') conflicts=("android-$_pkgname-$_android_arch") replaces=("android-$_pkgname-$_android_arch") url="https://github.com/Martchus/${_reponame}" @@ -33,54 +34,67 @@ prepare() { build() { cd "$srcdir/${PROJECT_DIR_NAME:-$_reponame-$pkgver}" - local android_sdk_path=${ANDROID_SDK_ROOT:-/opt/android-sdk} - local android_ndk_path=${ANDROID_NDK_ROOT:-/opt/android-ndk} + # locate keystore + local keystore_dir=${ANDROID_APK_KEYSTORE_DIR} + local keystore_alias=${ANDROID_APK_KEYSTORE_ALIAS} + local keystore_url=$keystore_dir/$keystore_alias + local keystore_password=${ANDROID_APK_KEYSTORE_PASSWORD} + if [[ ! -d $keystore_dir ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_DIR \"$keystore_dir\" is not a directory." + fi + if [[ -z $keystore_alias ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_ALIAS is empty." + fi + if [[ -z $keystore_password ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_PASSWORD is empty." + fi + + # locate SDK, NDK and further libraries + local android_sdk_root=${ANDROID_SDK_ROOT:-/opt/android-sdk} + local android_ndk_root=${ANDROID_NDK_ROOT:-/opt/android-ndk} local build_tools_version=$(pacman -Q android-sdk-build-tools | sed 's/.* r\(.*\)-.*/\1/') - local root="$android_ndk_root/sysroot;$_prefix" + local other_libs_root=/opt/android-libs/$_pkg_arch + local other_libs_include=$other_libs_root/include + local root="$android_ndk_root/sysroot;$other_libs_root" - mkdir home - export HOME=$PWD/home + # use Java 8 which seems to be the latest version which works + export PATH=/usr/lib/jvm/java-8-openjdk/jre/bin/:$PATH - archlinux-java set java-8-openjdk/jre - yes | sdkmanager --licenses + mkdir -p build + cd build cmake \ - -DCMAKE_TOOLCHAIN_FILE=/usr/share/ECM/toolchain/Android.cmake \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SYSTEM_NAME=Android \ -DCMAKE_SYSTEM_VERSION=$_android_platform \ -DCMAKE_ANDROID_ARCH_ABI=$_android_arch \ - -DCMAKE_ANDROID_SDK="$android_sdk_path" \ - -DCMAKE_ANDROID_NDK="$android_ndk_path" \ + -DCMAKE_ANDROID_NDK="$android_ndk_root" \ + -DCMAKE_ANDROID_SDK="$android_sdk_root" \ -DCMAKE_ANDROID_STL_TYPE=c++_shared \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=$_prefix \ + -DCMAKE_INSTALL_PREFIX=$other_libs_root \ -DCMAKE_PREFIX_PATH="$root" \ - -DCMAKE_FIND_ROOT_PATH="$root" \ + -DCMAKE_FIND_ROOT_PATH="$root;$root/libs" \ + -DCLANG_FORMAT_ENABLED=ON \ + -DUSE_NATIVE_FILE_BUFFER=ON \ -DNO_DOXYGEN=ON \ -DWIDGETS_GUI=OFF \ -DQUICK_GUI=ON \ - -DQt5Core_DIR="$_prefix/lib/cmake/Qt5Core" \ - -DANDROID_API_LEVEL=$_android_platform \ - -DANDROID_ABI=$_android_arch \ - -DANDROID_ARCHITECTURE=${_android_arch%-*} \ - -DANDROID_SDK_ROOT="$android_sdk_root" \ - -DANDROID_SDK_BUILD_TOOLS_REVISION="$build_tools_version" \ - -DECM_ADDITIONAL_FIND_ROOT_PATH="$root;$android_ndk_root/platforms/android-$_android_platform/arch-${_android_arch%-*};$android_ndk_root/sources/cxx-stl/gnu-libstdc++/4.9/libs/$_android_arch" \ - -DQTANDROID_EXPORTED_TARGET=$_pkgname \ - -DANDROID_APK_DIR=android \ - -DANDROID_EXTRA_LIBS="$_prefix/lib/libcrypto.so;$_prefix/lib/libssl.so;$_prefix/lib/libiconv.so;$_prefix/lib/libKF5Kirigami2.so" \ - . - - #-DCMAKE_EXE_LINKER_FLAGS="-fPIE;-pie;-Wl,--gc-sections;-Wl,-rpath-link=/opt/android-libs/$_android_arch/lib;/opt/android-qt5/$qt_version/$_android_arch/lib:/opt/android-libs/$_android_arch/lib" \ + -DBUILTIN_ICON_THEMES=breeze \ + -DBUILTIN_TRANSLATIONS=ON \ + -DANDROID_APK_KEYSTORE_URL="$keystore_url" \ + -DANDROID_APK_KEYSTORE_ALIAS="$keystore_alias" \ + -DANDROID_APK_KEYSTORE_PASSWORD="$keystore_password" \ + -DANDROID_APK_CXX_STANDARD_LIBRARY="$android_ndk_root/sources/cxx-stl/llvm-libc++/libs/$_android_arch/libc++_shared.so" \ + .. make VERBOSE=1 - make DESTDIR="${pkgdir}" create-apk + make DESTDIR="${pkgdir}" passwordmanager_apk } package() { cd "$srcdir/${PROJECT_DIR_NAME:-$_reponame-$pkgver}" - local api_dir=${pkgdir}/opt/android-libs/apk + local apk_dir=${pkgdir}/$_prefix/apk/$_pkgname mkdir -p "$apk_dir" - cp --target-directory="$apk_dir" "${_pkgname}_build_apk/build/outputs/apk/*.apk" + find build/apk -iname '*.apk' -exec cp --target-directory="$apk_dir" {} \; } diff --git a/passwordmanager/android-armv7a-eabi/PKGBUILD b/passwordmanager/android-armv7a-eabi/PKGBUILD new file mode 100644 index 00000000..92ce622b --- /dev/null +++ b/passwordmanager/android-armv7a-eabi/PKGBUILD @@ -0,0 +1,99 @@ +# Maintainer: Martchus + +# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where +# you also find the URL of a binary repository. + +_reponame=passwordmanager +_pkgname=passwordmanager +_android_arch=armeabi-v7a +_pkg_arch=armv7a-eabi +_android_platform=21 +_prefix=/opt/android-libs/$_pkg_arch + +pkgname=android-$_pkg_arch-$_pkgname +pkgver=4.0.1 +pkgrel=1 +arch=('any') +pkgdesc="A simple password store using AES-256-CBC encryption via OpenSSL (Android, $_pkg_arch)" +license=('GPL') +depends=() +makedepends=("android-$_pkg_arch-passwordfile" "android-$_pkg_arch-qtutilities" "android-$_pkg_arch-kirigami2" + 'cmake' 'android-ndk' 'android-sdk' 'android-platform' 'jdk8-openjdk' 'breeze-icons') +conflicts=("android-$_pkgname-$_android_arch") +replaces=("android-$_pkgname-$_android_arch") +url="https://github.com/Martchus/${_reponame}" +source=("${_pkgname}-${pkgver}.tar.gz::https://github.com/Martchus/${_reponame}/archive/v${pkgver}.tar.gz") +sha256sums=('89f10b004c4a2dcbce13f0b24bd9acda3a6ea52d165ef178b42e76fcd3c58079') +options=(!buildflags staticlibs !strip !emptydirs) + +prepare() { + cd "$srcdir/${PROJECT_DIR_NAME:-$_reponame-$pkgver}" +} + +build() { + cd "$srcdir/${PROJECT_DIR_NAME:-$_reponame-$pkgver}" + + # locate keystore + local keystore_dir=${ANDROID_APK_KEYSTORE_DIR} + local keystore_alias=${ANDROID_APK_KEYSTORE_ALIAS} + local keystore_url=$keystore_dir/$keystore_alias + local keystore_password=${ANDROID_APK_KEYSTORE_PASSWORD} + if [[ ! -d $keystore_dir ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_DIR \"$keystore_dir\" is not a directory." + fi + if [[ -z $keystore_alias ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_ALIAS is empty." + fi + if [[ -z $keystore_password ]]; then + msg2 "The specified ANDROID_APK_KEYSTORE_PASSWORD is empty." + fi + + # locate SDK, NDK and further libraries + local android_sdk_root=${ANDROID_SDK_ROOT:-/opt/android-sdk} + local android_ndk_root=${ANDROID_NDK_ROOT:-/opt/android-ndk} + local build_tools_version=$(pacman -Q android-sdk-build-tools | sed 's/.* r\(.*\)-.*/\1/') + local other_libs_root=/opt/android-libs/$_pkg_arch + local other_libs_include=$other_libs_root/include + local root="$android_ndk_root/sysroot;$other_libs_root" + + # use Java 8 which seems to be the latest version which works + export PATH=/usr/lib/jvm/java-8-openjdk/jre/bin/:$PATH + + mkdir -p build + cd build + + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SYSTEM_NAME=Android \ + -DCMAKE_SYSTEM_VERSION=$_android_platform \ + -DCMAKE_ANDROID_ARCH_ABI=$_android_arch \ + -DCMAKE_ANDROID_NDK="$android_ndk_root" \ + -DCMAKE_ANDROID_SDK="$android_sdk_root" \ + -DCMAKE_ANDROID_STL_TYPE=c++_shared \ + -DCMAKE_INSTALL_PREFIX=$other_libs_root \ + -DCMAKE_PREFIX_PATH="$root" \ + -DCMAKE_FIND_ROOT_PATH="$root;$root/libs" \ + -DCLANG_FORMAT_ENABLED=ON \ + -DUSE_NATIVE_FILE_BUFFER=ON \ + -DNO_DOXYGEN=ON \ + -DWIDGETS_GUI=OFF \ + -DQUICK_GUI=ON \ + -DBUILTIN_ICON_THEMES=breeze \ + -DBUILTIN_TRANSLATIONS=ON \ + -DANDROID_APK_KEYSTORE_URL="$keystore_url" \ + -DANDROID_APK_KEYSTORE_ALIAS="$keystore_alias" \ + -DANDROID_APK_KEYSTORE_PASSWORD="$keystore_password" \ + -DANDROID_APK_CXX_STANDARD_LIBRARY="$android_ndk_root/sources/cxx-stl/llvm-libc++/libs/$_android_arch/libc++_shared.so" \ + .. + + make VERBOSE=1 + make DESTDIR="${pkgdir}" passwordmanager_apk +} + +package() { + cd "$srcdir/${PROJECT_DIR_NAME:-$_reponame-$pkgver}" + + local apk_dir=${pkgdir}/$_prefix/apk/$_pkgname + mkdir -p "$apk_dir" + find build/apk -iname '*.apk' -exec cp --target-directory="$apk_dir" {} \; +} diff --git a/qtutilities/android-aarch64/PKGBUILD b/qtutilities/android-aarch64/PKGBUILD index fd96a6e1..15b55995 100644 --- a/qtutilities/android-aarch64/PKGBUILD +++ b/qtutilities/android-aarch64/PKGBUILD @@ -7,7 +7,6 @@ _reponame=qtutilities _pkgname=qtutilities _android_arch=arm64-v8a _pkg_arch=aarch64 -_android_toolchain=$_pkg_arch-linux-android _android_platform=22 _prefix=/opt/android-libs/$_pkg_arch diff --git a/qtutilities/android-armv7a-eabi/PKGBUILD b/qtutilities/android-armv7a-eabi/PKGBUILD index 98d8e0b0..b390dcac 100644 --- a/qtutilities/android-armv7a-eabi/PKGBUILD +++ b/qtutilities/android-armv7a-eabi/PKGBUILD @@ -7,7 +7,6 @@ _reponame=qtutilities _pkgname=qtutilities _android_arch=armeabi-v7a _pkg_arch=armv7a-eabi -_android_toolchain=$_pkg_arch-linux-android _android_platform=21 _prefix=/opt/android-libs/$_pkg_arch diff --git a/tagparser/android-aarch64/PKGBUILD b/tagparser/android-aarch64/PKGBUILD index f7cd36b8..de101068 100644 --- a/tagparser/android-aarch64/PKGBUILD +++ b/tagparser/android-aarch64/PKGBUILD @@ -7,7 +7,6 @@ _reponame=tagparser _pkgname=tagparser _android_arch=arm64-v8a _pkg_arch=aarch64 -_android_toolchain=$_pkg_arch-linux-android _android_platform=22 _prefix=/opt/android-libs/$_pkg_arch diff --git a/tagparser/android-armv7a-eabi/PKGBUILD b/tagparser/android-armv7a-eabi/PKGBUILD index ef5a6280..0a930d8d 100644 --- a/tagparser/android-armv7a-eabi/PKGBUILD +++ b/tagparser/android-armv7a-eabi/PKGBUILD @@ -7,7 +7,6 @@ _reponame=tagparser _pkgname=tagparser _android_arch=armeabi-v7a _pkg_arch=armv7a-eabi -_android_toolchain=$_pkg_arch-linux-android _android_platform=21 _prefix=/opt/android-libs/$_pkg_arch