!LemuOOvbWqRXodtSsw:nixos.org

NixOS Reproducible Builds

487 Members
Report: https://reproducible.nixos.org Project progress: https://github.com/orgs/NixOS/projects/30108 Servers

Load older messages


SenderMessageTime
5 Sep 2024
@emilazy:matrix.orgemilyI hope someone does figure it out20:08:54
@emilazy:matrix.orgemilyeven if it won't affect the ISO any longer20:09:00
@kamillaova:matrix.orgKamilla 'ova
In reply to @raboof:matrix.org
yes and no: we have a strong indication that jfsutils sometimes produces a different output (https://github.com/NixOS/nixpkgs/issues/276433), but it's rare enough that I have never actually ran into that when trying to reproduce the ISO
*

by the way, this problem is most likely caused by the gnu&llvm strip bug, since I can't reproduce this very strange output with dontStrip = true (after 1000+ rebuilds, with dontStrip = false it fails to reproduce under ~300 rebuilds)

and this is the end, my strength was not enough for further debugging :(

20:11:28
@tpw_rules:matrix.orgtpw_rules reproducibility-focused friends, i have a derivation which uses the arm embedded and the rpi pico toolchain which builds a .bin and a .elf. i'd like to avoid stripping the debug info but the .elf becomes filled with /build/<8 random chars>.o object names which breaks reproducibility. how can i fix it? 20:37:39
@tpw_rules:matrix.orgtpw_rules * reproducibility-focused friends, i have a derivation which uses the arm embedded and the rpi pico toolchain which builds a .bin and a .elf. i'd like to avoid stripping the debug info but the .elf becomes filled with /build/<random chars>.o object names which breaks reproducibility. how can i fix it? 20:37:58
@raboof:matrix.orgraboof
In reply to @kamillaova:matrix.org
by the way, this problem is most likely caused by the gnu&llvm strip bug, since I can't reproduce [this](https://reproducible.nixos.org/nixos-iso-minimal-runtime/diff/f6324ec1d2bd8e7eb94aa170221be10b9f59702ddd8c6eda0190dcb70f82e850-bb3de609e45cb1278589282568f7b92cf577c1a69c6aad2efc16f013a94dcceb.html#:~:text=0000000000402480%C2%B7%3C(-,null,-)%3E%3A) _very strange_ output with `dontStrip = true` (after 1000+ rebuilds, with `dontStrip = false` it fails to reproduce under ~300 rebuilds) and this is the end, my strength was not enough for further debugging :(
Yeah thanks for your awesome work on this! Is there any upstream reference to a strip bug? Or are we only observing it here?
20:38:31
@tpw_rules:matrix.orgtpw_rulesi can share it if you like but i'm really just looking for the right strip/objdump invocation. the toolchain integration with nixpkgs is slightly broken20:38:36
@tpw_rules:matrix.orgtpw_rules * i can share it if you like but i'm really just looking for the right strip/objdump invocation. the toolchain integration with nixpkgs is slightly broken so maybe something that's already supposed to handle this doesn't20:39:54
@tpw_rules:matrix.orgtpw_rules(there might be a compiler flag to add?)20:40:01
@raboof:matrix.orgraboofI don't know - it might be interesting to consider 'separateDebugInfo' to move the debug info to a separate output that might be less important to have reproducible?20:44:35
@tpw_rules:matrix.orgtpw_rulesit looks like these are FILE entries in the symbol table, i wonder if gcc can be controlled to omit the object names. source names are good20:53:00
@tpw_rules:matrix.orgtpw_ruleslooks like it's a quirk of the rpi pico toolchain that it uses a temporary file name anyway, bleh21:12:37
6 Sep 2024
@qyliss:fairydust.spaceAlyssa RossThere's a flag to have it be a relative path I think08:01:22
@qyliss:fairydust.spaceAlyssa Ross

-fdebug-prefix-map

08:01:53
@raboof:matrix.orgraboofah, https://reproducible-builds.org/docs/build-path/08:02:09
@qyliss:fairydust.spaceAlyssa Ross

It might be nice to use that globally in Nixpkgs, because paths starting with /build in debug info are completely unhelpful

08:02:19
@qyliss:fairydust.spaceAlyssa RossBut even better would be to build directly from unpacked source store path, because then we'd be encoding the exact input files in the debug info paths…08:03:05
@emilazy:matrix.orgemilyI wish I could believe that build systems would support out-of-tree builds well enough for that to work 🫠08:08:57
@emilazy:matrix.orgemilywould be cool though08:09:04
@qyliss:fairydust.spaceAlyssa RossMost do08:09:08
@qyliss:fairydust.spaceAlyssa RossWe couldn't do it universally, but it could be the norm08:09:19
@qyliss:fairydust.spaceAlyssa RossI think the main weird bit would be that we'd want to start unpacking tarballs in separate derivations.08:09:59
@qyliss:fairydust.spaceAlyssa Ross

(We wouldn't want to just switch to fetchzip, because it's nice to be able to check the hash before operating on the output where it's reproducible)

08:10:22
@qyliss:fairydust.spaceAlyssa RossI guess we could have a mode where it checks the hash before unpacking08:10:48
@emilazy:matrix.orgemily
In reply to @qyliss:fairydust.space
I think the main weird bit would be that we'd want to start unpacking tarballs in separate derivations.
IIRC the times I've ended up doing this out of necessity it's been noticeably slow because of I guess hashing on store ingest
08:10:48
@qyliss:fairydust.spaceAlyssa RossAnd then still does it in the same derivation08:11:00
@emilazy:matrix.orgemilythough that might have been incombination with copying it in another derivation too08:11:00
@emilazy:matrix.orgemilyhm, that would mean we're not preserving original tarballs, which may or may not matter but makes me a little sad all the same08:11:32
@qyliss:fairydust.spaceAlyssa RossWe'd also need to apply patches as part of this08:11:46
@emilazy:matrix.orgemilyyou know, lazy trees would fix this 🤪08:12:08

Show newer messages


Back to Room ListRoom Version: 6