State of the KF5 Android CI

banner-fundraising2016

I would have liked to say, “Yeah the Android CI runs!” – But we are not there yet; pretty close actually, and close enough that it already makes sense to tell about it, yet a few last Jenkins settings remain to be done and real life issues cause this to take a few more days. So, I will give a short primer on what we prepared in Randa.

After tonight’s run of the KApiDox generation at https://api.kde.org, all KF5 libraries whill correctly show if they support Android or not. The current count of supported frameworks is 16 and since last year some important ones like KI18n, KCoreAddons and Threadweaver were added to the list. For all of them I can say that the build is tested in my Android cross-building Docker image together with Qt 5.6 and the Android CMake toolchain from Extra-CMake-Modules.

Obviously, the currently most pressing issue is to get a proper CI system for KF5 on Android into place. The veryย  same Docker image, as names above, was extended to be utilized as container for our future Docker based CI system. During the Randa week the container was already integrated into build-sandbox.kde.org and just waits there for the last infrastructure bits to be correctly set. The next step following the build coverage will be the integration of automatic unit tests. For e.g. Linux systems this is a boring topic, since one can just run tools like CTest. On Android the story is slightly more complicated. Our goal is to run unit tests in a closest possible real life scenario. That means, we want unit test to be packaged as APK files, then installed and run in an Android emulator, and also need to get the results back. This means, we need some wrapper code around the generated CTest files that does all the packaging, installing, result downloads, etc. The main parts of these scripts were finished during Randa and as a proof of concept, for the first tested framework Attica’s unit tests already pass on my devel machine \o/ Once we have the build coverage in place, getting the unit tests checked on the CI will be the next step.

I hope that all of these existing bits will come together soon. However, with QtCon approaching in already two months and me giving a talk about KF5 on Android, it sounds there is a clear deadline for this integration to conclude ๐Ÿ™‚

PS: the fundraiser campaign for Randa is still ongoing for 12 more days!

Adding Android to the CI and Many Nit-Picks

banner-fundraising2016

Again, it’s the time of the year where about 40 KDE developers meet in the middle of the Alps to get a week of fresh air, away from their daily business, to work on improving KDE software. This year’s developer sprint is all about multi-platform distribution of KDE software. We are targeting Android, Windows, MacOSX, and of course all of our beloved Linux platforms.

The sprint is already running since Sunday afternoon and up to now really everybody is deep into his or her todo list. So, it’s a good time to talk about my very own humble plans. In a nutshell, I want to drive our KF5 on Android work a big step forward. This means, I want to will:

  • get continuous integration ready for all KF5 libraries that we can already build for Android (which means, I fulfill all of Scarlett’s wishes to adapt our Docker image)
  • get an infrastructure for KF5 unit tests into place (which means, automatic packaging of unit tests into APKs, installing and running them in the Android emulator and making it ready for CI integration)
  • get information about Android availability of frameworks visible at api.kde.org

The first steps are already done. Partially based on BogDans’s Android unit test script for the Qt Project, I have a first version ready that can successfully packages Attica’s unit test as APK, installs it at an emulator, running the test, and finally provides the unit test result. All in all, it was a surprising way, with many funny small difficulties lurking around ๐Ÿ™‚ On this way, I extended our Android toolchain to be more careful about which libraries to actually put into an APK.

Before I take the stairs down to my bed, let me say that such a sprint is also a wonderful opportunity to finally tackle all the small issues you carry around for long time, but never have free time or the relevant developer next to you to look into it. In the course of the last two days Pinak fixed my Baloo indexer startup crash, I finished my patch for re-enabling QML-QtHelp integration in KDevelop, finally I finished a security critical bug fix for some library, and many more small things that improve the usability and stability of KDE application for all platforms.

All of that is only possible, since people support sprints like this event. To get more information or a link to support KDE sprints, just visit:

https://www.kde.org/fundraisers/randameetings2016/