F-Droid build failed #2357
Labels
No Label
device mi band 7
activity post processing
activity/health
Android 12
Android 13
android integrations
architecture
Bangle.js
bug
changes requested
charts
details not provided
developer documentation
device amazfit band 5
device amazfit bip
device amazfit cor
device Casio
device fossil
device garmin
device gtr 2e
device gts 2 mini
device h30
device hplus
device huami
device Huawei
device liveview
device mi band
device mi band 2
device mi band 3
device mi band 4
device mi band 5
device mi band 6
device no.1 f1
device pace
device pebble
device pebble 2
device pinetime infinitime
device request
device sony
device support
device watch 9
device xiaomi
discussion
documentation
duplicate
enhancement
feature request
Gadgetbridge
good first issue
help wanted
i am developing my own app can you help
icebox
intent api
internationalisation
invalid
needs work
network companion app
new device
no feedback
not a bug
notifications
one of the 1000 issues about disconnection
pairing/connecting
potentially fixed / confirm and close
question
research
security
seems abandoned
Solved, waiting for F-Droid release
suggest to close
task
user interface / UX
wear os
weather
wontfix
Zepp OS
No Milestone
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Freeyourgadget/Gadgetbridge#2357
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What are these binaries? Is there any way to generate these binaries or they can be ignored safely? Thanks!
Hi @linsui thank you for getting back to us. Yes, these can be safely ignored, let me add @arjan5 here.
@arjan5 maybe it would be nice to add the jerryscript files to the assets as well?
That would not help , F-Droid can't build jerryscript, those bin files are meant to be flahed to the watch. F-Droid seems to be too strict here.
That's right. The .bin files are compiled with Jerryscript from the sources here: https://github.com/arjan-s/fossil-hr-watchface
If F-Droid has the Jerryscript 2.1.0 compiler, it could compile them, otherwise it is necessary to have F-Droid accept the binary files.
Is there a way to accomplish either one of these?
@linsui
Those binaries are compiled javascript bytecode (jerryscript 2.1.0), the source is here https://github.com/arjan-s/fossil-hr-watchface
The files are NOT run inside Gadgetbridge but uploaded to the Fossil Hybrid HR watch to replace the non-free watchface that the official app installs.
In theory it makes your watch more free, but in practice we are kicked out of F-Droid now.
Pesonally I agree with not allowing binaries that run on the phone but having compiled code that is open source and send to a device - I find that ok.
So to follow F-Droid guidelines, what are our options?
Download a jerryscript 2.1.0 compiler and compile during build? Would the F-Droid build server somehow support that?
If so I would still prefer to have the binaries in git even if F-Droids removes and regenerates them to 100% the same compiled code. I do not want to force everyone without a Fossil watch who just wants to compile Gadgetbridge to eventually contribute to do those useless stunts.
The buildserver is debian stretch. I'll yry to compile it.
@linsui
Thanks! You can use the instructions and commands on the linked github repo readme to compile the exact same binaries.
Going forward, what is the best way to approach this? I'm working on a new PR that includes even more widget binaries, so that would lead to the same issues again. Should we add the sources and a script to compile them? And what way would work best for F-Droid?
We can build jerryscript first, then build those binaries. I suggest adding those source code as git submodules and providing a script to build them. Then we can simply execute the build script to prepare those binaries. In this way you can update the build script and external repos easily. To build the current version I'll use srclibs for external repos. But that means we need to update the srclibs manully.
https://gitlab.com/fdroid/fdroiddata/-/merge_requests/9450
Judging from the MR above it seems the fossil sdk is not needed(?), just jerryscript and the watchface repo?
I think we can assume Fossil will stick to Jerryscript 2.1.0, so the only thing we should change is using one submodule which will be updated to a newer revision from time to time and right now stick it to:
Then providing a script that builds the jerryscript compiler and then rebuilds the jerryscript, which is then used by F-droid while we still have the compiled code in to make this build more easy for others.
Yes, that's good. Thanks!
I have added both the watchface repo and jerryscript as submodules and pushed a simple script thats builds both (basically the same as what fdroid does)
I think this is not enough for fdroid because of the relative paths?
It would be more robust to have something like
But it's enough for F-Droid. 👌 Thanks!
This is cool. Will f-droid try to re-run this build or do we need to re-tag?
We need a tag covering the change. If you re-tag or add a new tag I'll update the recipe.
The question is weather failed 0.59.0 as tagged can be rebuild. It should work with the current metadata , right?
Yes, it will be rebuild.
@linsui
Now that everything has been built, would it make sense to switch to exectuing the shell script now? (For the next release)
I'll do that when the next version available. Could you please ping me then? Thanks!
@linsui
We are pretty much ready to tag, if F-Droid builds before you change the metadate we will have a non-working version for Fossil Hybrid HR (because auf the missing new widgets), wouldn't it make sense to first update the metadata?
I opened an MR beased on master. https://gitlab.com/fdroid/fdroiddata/-/merge_requests/9568. The checkupdate bot runs once a day so it's not likely to pick the new version before I merge it.
@linsui
Thanks!
Just tagged 0.59.1
Done. Thanks!
@linsui
Many thanks, 0.59.1 was build successfully.
Now I tagged 0.59.2 which introduced C code (ndk), does this require a metadata update?
This is a temporary solution, I would like to convert the code to java later, but right now it is important.
Thanks! I'll update it.
@linsui
Oh, then it is neccessary?
Yes, we need to specify the ndk.
@linsui
Ok ok, I didn't specify anything, so I have no idea what is appropriate. There is only C code and should compile with any ndk
I test it and there is a problem. fdroidserver executes cleam task before scanning so that GBDaoGenerator is built. The clean task shouldn't depends on a build task. I'll add it the scandelete. Could you please also fix it on your side? Thanks!
@linsui
I can try, maybe the metadata reveals a hint on how to do that ;)
It might sound odd, but I really hate java and the associated "ecosystem" 😬
How are we on this ticket guys, is it all sorted or do we still need to do something? cheers P.
GBDaoGenerator is still build in gradle clean.
@linsui we are very happy to have you here at Codeberg :)
Our build now fails: https://monitor.f-droid.org/builds/log/nodomain.freeyourgadget.gadgetbridge/211#site-footer
I presume this is due to a different apk output path, after we added new product flavor for bangle.js:
2cb5844020
2cb5844020/app/build.gradle (L125)
I am not that well versed in fdroid but it seems that we need to tell it which variant to build and/or the output directory? Something like...:
Does it need a human interaction or can fdroid understand what happened and will it try to do this automatically?
I'm going to push a fix. The build falvor need to be set.
That would be wonderful, please. Thank you.
This is not fixed?
Depends on what you mean. The initial issue is solved. The following:
works as is and as nobody complains and the system builds the stuff it seems to be in the "solved" teritory, rather then being an issue...
Ah, I forgot closing this issue. I hardly use codeburg...