SUMMARY For KDE Itinerary the KDE F-Droid Repo seems necessary. I have added the one for stable versions. However, with that repo I get daily updates for KDE Itinerary with always the same version. STEPS TO REPRODUCE 1. Activate auto-update in F-Droid. 1. Install KDE Stable F-Droid Repo. 2. Install KDE Iinerary. OBSERVED RESULT KDE Itinerary is downloaded and "updated" every day. Every day, the same version is newly installed. EXPECTED RESULT An update is only done, when the app is updated. SOFTWARE/OS VERSIONS F-Droid: 1.14-alpha2 ADDITIONAL INFORMATION (I would love, if the app would be directly in F-Droid ;))
Right, this is a limitation of binary-factory.kde.org does Android builds for the F-Droid repos at the moment, and affects all our Android apps. The builds happen unconditionally every 24h with whatever changes are available by then (which can include updates to underlying components as well, not just the application itself). Having this in the F-Droid mainline repository would solve this (as updates there are a manual process), but getting in there is non-trivial unfortunately.
Is it possible to enable a conditional build (as a workaround)? I have digged around a little bit in the binary-factory-tooling git and saw the pipeline which I assume is executed (craft/pipeline-templates/android.pipeline). According to the jenkins doc a stage can have an additional "when" directive that would enable a build only under certain conditions (https://www.jenkins.io/doc/book/pipeline/syntax/#when). However, there is no "steps" in the KDE receipt, so I'm not sure, if this the correct documentation. A possible way to get the last deployed version is to query the F-Droid-Repo itself (for example `curl -s https://cdn.kde.org/android/stable-releases/fdroid/repo/index.xml | xmllint --format --xpath '/fdroid/application[@id="org.kde.itinerary"]/package/version/text()' - | head -n 1`). Maybe one stage in the pipeline can execute this, query the current version, set an ENVIRONMENT_VARIABLE that is evaluated by the later stages in a when directive. The versioncode is really high. Is it updated every build? If yes, I understand, why F-Droid thinks that the package is new every time. If you want a daily build, it may also be enough to produce the same version code.
The F-Droid part of the Jenkins pipeline is here: https://invent.kde.org/sysadmin/binary-factory-tooling/-/blob/master/craft/pipeline-templates/android.pipeline The version code update is here: https://invent.kde.org/pim/itinerary/-/blob/master/src/app/android/build.gradle#L27 It's quite possible there are ways to do this better :)
Solved since some time with the switch to the Gitlab CI pipeline.