libretroshare/.gitlab-ci.yml
Gioacchino Mazzurco ba90b27199
Fix Android build for ndk r29 on ubuntu 26.04
Drop armeabi-v7a and minapi16 (EOL), build arm64-v8a at API 21/24 only.

Toolchain:
- Replace make_standalone_toolchain.py with direct NDK toolchain copy
- Use NDK r29 compiler triple naming and llvm-ar/llvm-ranlib
- Add gentoo_disturl() for hash-based Gentoo mirror URLs

Dependencies:
- Add librnp (openssl backend) with json-c and sexpp support
- Add qemu-user for librnp cross-compilation feature detection
- Replace sqlcipher with plain sqlite (RS_SQLCIPHER=OFF)
- Switch rapidjson to git source for C++17 compatibility
- Bump bzip2, zlib, libpng, xapian, tiff, cimg, sqlite versions

CMake:
- Remove Android C++14 workaround (NDK r29 std::filesystem works)
- Refactor RS_RNPLIB to support inline, pre-built, and FetchContent
- Add CMAKE_POLICY_VERSION_MINIMUM for CMake 4.x compatibility

Dockerfile:
- Move to Ubuntu 26.04, python-is-python3
- Split COPY for layer caching of SDK and toolchain builds
2026-06-14 11:44:03 +02:00

112 lines
4.0 KiB
YAML

# Jobs tagged with `storage50` needs custom runners with more storage, they
# create a full build (multiple architecure, and both debug and release) a job
# for each minimum Android API level. After build the AAR packages are published
# on the project Gitlab maven repository
android-AAR-minapi21:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS == "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_21
script:
- rm -rf /libretroshare-aar/
- >
./gradlew build publish
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=21
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
tags:
- storage50
android-AAR-minapi24:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS == "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_24
script:
- rm -rf /libretroshare-aar/
- >
./gradlew build publish
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=24
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
tags:
- storage50
# For forks that doesn't have `storage50` custom runners available the job are
# split per architecture and build type and without maven publishing, instead at
# the end of the job the artifact is made available
android-minapi21_arm64-v8a_bundleDebugAar:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS != "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_21_arm64-v8a_bundleDebugAar
script:
- rm -rf /libretroshare-aar/
- >
./gradlew bundleDebugAar
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=21
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
-PJNI_NATIVE_LIBS_ARCHS="arm64-v8a"
- mv /libretroshare-build/outputs/aar/ $CI_PROJECT_DIR/outputs-aar/
artifacts:
paths:
- outputs-aar/
android-minapi21_arm64-v8a_bundleReleaseAar:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS != "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_21_arm64-v8a_bundleReleaseAar
script:
- rm -rf /libretroshare-aar/
- >
./gradlew bundleReleaseAar
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=21
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
-PJNI_NATIVE_LIBS_ARCHS="arm64-v8a"
- mv /libretroshare-build/outputs/aar/ $CI_PROJECT_DIR/outputs-aar/
artifacts:
paths:
- outputs-aar/
android-minapi24_arm64-v8a_bundleDebugAar:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS != "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_24_arm64-v8a_bundleDebugAar
script:
- rm -rf /libretroshare-aar/
- >
./gradlew bundleDebugAar
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=24
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
-PJNI_NATIVE_LIBS_ARCHS="arm64-v8a"
- mv /libretroshare-build/outputs/aar/ $CI_PROJECT_DIR/outputs-aar/
artifacts:
paths:
- outputs-aar/
android-minapi24_arm64-v8a_bundleReleaseAar:
rules:
- if: $PROJECT_HAVE_STORAGE50_RUNNERS != "true"
image: registry.gitlab.com/retroshare/retroshare:android_aar_base_24_arm64-v8a_bundleReleaseAar
script:
- rm -rf /libretroshare-aar/
- >
./gradlew bundleReleaseAar
-Dorg.gradle.project.buildDir=/libretroshare-build/
-PANDROID_MIN_API_LEVEL=24
-PLIBRETROSHARE_SOURCE_VERSION="$CI_COMMIT_SHORT_SHA"
-PNATIVE_TOOLCHAINS_DIR="/libretroshare-native-toolchains/"
-PJNI_NATIVE_LIBS_ARCHS="arm64-v8a"
- mv /libretroshare-build/outputs/aar/ $CI_PROJECT_DIR/outputs-aar/
artifacts:
paths:
- outputs-aar/