mirror of
https://github.com/Lambada10/SongSync.git
synced 2026-04-25 22:55:54 +03:00
[GH-ISSUE #103] Reproducible builds #70
Labels
No labels
bug
duplicate
enhancement
invalid
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/SongSync#70
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Originally created by @IzzySoft on GitHub (Nov 1, 2024).
Original GitHub issue: https://github.com/Lambada10/SongSync/issues/103
At IzzyOnDroid we support Reproducible Builds (see: Reproducible Builds, special client support and more at IzzyOnDroid). SongSync was established with RB here, and the previous release (v4.1.0) was successfully built as RB – but the current one (v4.2.0) failed, with a huge diff in
classes.dex. Was that APK really built from a clean tree at the commit the tag points to?Here's the diff of the APK:
The difference in
META-INF/services/*are line endings, so this APK has probably NOT been built using your Github workflows but on a Windows machine. The differences inbaseline.profwas to be expected ifclasses.dexdiffers. Which is too big to quote here (70+ kB) – but if you're interested, I can zip and attach it.We'd appreciate if you could help making your build reproducible. We've prepared some hints on reproducible builds for that.
Looking forward to your reply!
@Lambada10 commented on GitHub (Nov 1, 2024):
Yes, the release build was indeed built on a Windows machine. I do believe I built from a commit the tag points to, and checking my local tree right now indeed shows no differences with origin. Could you share the zip file?
@IzzySoft commented on GitHub (Nov 1, 2024):
But the previous release was not. Unfortunately, Windows inserts different line breaks (
\r\n) then Linux (\n) – so while we can make both work with RB, we only can do it if you don't switch between one and the other (i.e. one release built on Linux, the next on Windows) as we can only set it for one variant – not for "alternating variants".No artifacts from previous builds either? Gradle likes to cache them, and so does Android Studio. While the Github CI always builds from a "clean tree" as it starts with a "blank" image (as do our RBs), so there are no artifacts. So when not building with the CI, you'd have to run
cleanfirst.TL;DR: Might be worth considering to have the release builds always created by the CI here. I can check such a "clean build" against ours then if you wish (i.e. if you "now" create one from the tag the way you'd do it in the future).
Sure, there you go: dex.zip
@Lambada10 commented on GitHub (Nov 2, 2024):
Sure, I will only use the CI builds for release APKs from now on, should I update the APK for the current release?
@IzzySoft commented on GitHub (Nov 2, 2024):
Cool! That will make automated RB-updates a log easier, thanks!
One shouldn't replace what has already be distributed – so better have a "maintenance release" for that. Before doing so, may I suggest we first check such a build to make sure we're not in the same situation again with it? Could you build a release APK using the CI, rename it to
*.zipso you can attach it here, then attach it here and name the commit you've built from? Then I could manually verify RB here to see if any other "breakers" need fixing for that "maintenance release". As I've kept the APKs from v4.2.0 here, the easiest way to do that would be a CI build from exactly that tag – so I'd only need to download the APK and compare, no need to create a local build here as I've retained that.@Lambada10 commented on GitHub (Nov 4, 2024):
Here's thee CI build which was built from v4.2.0 release
songsync-release.zip
https://github.com/Lambada10/SongSync/actions/runs/11629791434
@IzzySoft commented on GitHub (Nov 4, 2024):
Thanks! That was not renamed to
*.zipbut but inside another zip (so I had to download, unzip and push it to the build server instead of just passing the URL to the build server), but meh… worked as well. And YES!! it's RB, wonderful! Looks like we found the culprit and solved the problem, so I'd say go ahead with the maintenance release then.@Lambada10 commented on GitHub (Nov 5, 2024):
Done, I am waiting for confirmation if everything works, then I'm closing this
@IzzySoft commented on GitHub (Nov 5, 2024):
Thanks a lot! Looks fine now 🤩