Bug 443489 - Daily releases in the stable KDE F-Droid Repo
Summary: Daily releases in the stable KDE F-Droid Repo
Status: RESOLVED FIXED
Alias: None
Product: KDE Itinerary
Classification: Applications
Component: general (other bugs)
Version First Reported In: unspecified
Platform: Other Android 9.x
: NOR normal
Target Milestone: ---
Assignee: Volker Krause
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-10-08 18:19 UTC by Gerion
Modified: 2024-08-24 10:37 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gerion 2021-10-08 18:19:27 UTC
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 ;))
Comment 1 Volker Krause 2021-10-13 15:25:35 UTC
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.
Comment 2 Gerion 2021-10-13 22:10:07 UTC
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.
Comment 3 Volker Krause 2021-10-14 15:25:36 UTC
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 :)
Comment 4 Volker Krause 2024-08-24 10:37:57 UTC
Solved since some time with the switch to the Gitlab CI pipeline.