RFC: Dockerfile based on Qt 5.12 and clang
Needs RevisionPublic

Authored by apol on Fri, Jan 11, 1:08 AM.



Instead of bringing the Qt binaries it builds our own.
It also finally solves some annoyances like including openssl by default.

Test Plan

I plan to test it, haven't tested yet.

Diff Detail

R857 CI System Tooling
No Linters Available
No Unit Test Coverage
Build Status
Buildable 6976
Build 6994: arc lint + arc unit
apol requested review of this revision.Fri, Jan 11, 1:08 AM
apol created this revision.
apol updated this revision to Diff 49235.Fri, Jan 11, 12:56 PM

small changes

apol updated this revision to Diff 49271.Fri, Jan 11, 6:07 PM

Fix permission issues, fix build-poppler with clang

Tested this here now, and hit two minor issues:

  • /opt/android-sdk/ needs to be user-writable as gradle apparently tries to put additional dependencies into there (happens e.g. during the KNotifications build)
  • build-kde-project and build-kde-dependencies are missing, which build-generic needs

With that fixed, it builds KDE Itinerary and all its dependencies, fixing both the problem in there and in KNotifications currently visible on the CI. Okular still fails with the same phonon issue we also see on binary factory right now.

Btw, Poppler needing API level 24 has been fixed upstream in master meanwhile,

nicolasfella added inline comments.Thu, Jan 17, 6:34 PM

Is there a particular reason why SDK level is still 21 instead of something recent-ish?

vkrause added inline comments.Thu, Jan 17, 6:47 PM

Doesn't seem to matter on the Java side at least, Gradle pulls in 28 for KNotification (therefore the need to have write access to the SDK location I guess). I suspect this is used also to define the minimum API level too though?

I needed a small adjustment to build the image

diff --git a/system-images/android/sdk/Dockerfile-clang b/system-images/android/sdk/Dockerfile-clang
index 75ba07e..ec364ad 100644
--- a/system-images/android/sdk/Dockerfile-clang
+++ b/system-images/android/sdk/Dockerfile-clang
@@ -71,7 +71,7 @@ RUN dpkg --add-architecture i386 && apt update && apt full-upgrade -y && apt ins
 # Download & unpack android SDK
 RUN curl -Lo /tmp/sdk-tools.zip 'https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip' \
     && mkdir -p /opt/android-sdk && unzip -q /tmp/sdk-tools.zip -d /opt/android-sdk && rm -f /tmp/sdk-tools.zip \
-    && yes | sdkmanager --licenses && sdkmanager --verbose "platforms;${SDK_PLATFORM}" "build-tools;${SDK_BUILD_TOOLS}" ${SDK_PACKAGES}
+    && yes | sdkmanager --licenses && yes | sdkmanager --verbose "platforms;${SDK_PLATFORM}" "build-tools;${SDK_BUILD_TOOLS}" ${SDK_PACKAGES}
 # Download & unpack android NDK
 RUN mkdir /tmp/android && cd /tmp/android && curl -Lo ndk.zip "https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip" \

Itinerary did build fine after fixing the issues Volker mentioned, but copying the apk to /output failed because it was expecting a different path. The apk was in itinerary-app_build_apk//build/outputs/apk/debug/itinerary-app_build_apk-debug.apk, but it tried to copy *_build_apk/build/outputs/apk/*.apk

nicolasfella requested changes to this revision.Sun, Jan 20, 1:51 AM
This revision now requires changes to proceed.Sun, Jan 20, 1:51 AM