!LemuOOvbWqRXodtSsw:nixos.org

NixOS Reproducible Builds

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

Load older messages


SenderMessageTime
29 Nov 2024
@raboof:matrix.orgraboofwhat is it set to when you leave it unspecified?16:52:17
@atemu12:matrix.orgAtemuIt's random IIRC16:54:02
@raboof:matrix.orgraboofthen wouldn't that just-as-obviously cause reproducibility issues?16:54:23
@atemu12:matrix.orgAtemuSure would16:55:08
@p14:matrix.orgp14It depends how or whether it is used, right? Clang for example doesn’t use it16:55:13
@atemu12:matrix.orgAtemuI fixed that in the kernel once16:55:19
@p14:matrix.orgp14I am unclear how it is used in gcc, is there information about that somewhere? At least for some standard builds of some software, removing it improves reproducibility by removing the outpath from affecting the build.16:56:57
@raboof:matrix.orgraboofhttps://reproducible-builds.org/docs/randomness/ mentions "Link-Time Optimizations" may have to do with it. if we figure out what exactly is going on it'd be good to add that to that page.17:00:04
@p14:matrix.orgp14Yeah, I think it is used in LTO somehow; is LTO used in nixpkgs? If not it could be a noop. And even if it was, it would be good to use a different value for it which does not depend on outpath.17:01:22
@raboof:matrix.orgraboofif it'd be a noop then setting it to the output shouldn't hurt, though17:01:48
@raboof:matrix.orgraboof * if it'd be a noop then setting it to the output path shouldn't hurt, though17:02:01
@raboof:matrix.orgraboofbut I agree it doesn't seem like a great choice17:02:26
@rick:matrix.ciphernetics.nl@rick:matrix.ciphernetics.nlIt is at least used to generate the build-id, when separateDebugInfo is set you see that it differs17:09:36
@rick:matrix.ciphernetics.nl@rick:matrix.ciphernetics.nlWhen the input path is different and the output is expected to be the same, e.g. when setting an unused environment variable17:10:36
@p14:matrix.orgp14
In reply to @raboof:matrix.org
if it'd be a noop then setting it to the output path shouldn't hurt, though

Except that it breaks CA derivations because if something varies on the input then the outPath varies, which means now you are varying the compiler args, which results in changes to the bits in the output (e.g because compiler args go into the binaries or the build id) where otherwise you would have bitwise identical outputs.

So downstream packages then need to be rebuilt where otherwise they could have used the previous CA output.

17:14:45
@raboof:matrix.orgraboofaah, so the theory would be that the args are hashed into the output somewhere before being 'interpreted' - yeah I suppose that could be.17:19:18
@p14:matrix.orgp14So it would be preferable to set it to a constant or a function of something which would not vary unless the output is going to vary anyway.17:20:41
@raboof:matrix.orgraboofa constant would violate the "must be different for each translation unit" requirement even more though17:22:15
@raboof:matrix.orgraboofbut it'd be useful to find out what the impact of not specifying it at all like you suggested would be17:22:54
@raboof:matrix.orgraboof * but it'd be useful to find out what the impact of not specifying it at all would be like you suggested17:23:11
@p14:matrix.orgp14
In reply to @raboof:matrix.org
a constant would violate the "must be different for each translation unit" requirement even more though
I haven’t seen anyone articulate why this is important though, I am wondering if it is bogus. I also wonder exactly how/whether it affects the build id as was suggested
17:31:14
@lassulus:lassul.uslassulus changed their profile picture.18:30:27
30 Nov 2024
@p14:matrix.orgp14 raboof: the most significant lead I have for the rsync nonrepro is that the text section is different; and that a handful of symbols are different sizes. If I diff one of those symbols I find that it has extra code towards the end in my local build. 09:15:03
@p14:matrix.orgp14It seems as-if I have a reproducible build locally though, so what is divergent is my local build vs what is in cache.nixos.org09:16:00
@p14:matrix.orgp14So I have another x86 machine, and the divergence with cache.nixos.org is not present there. Hardware difference? One's an old intel chip, another is a recent amd chip.10:31:20
@p14:matrix.orgp14 Diffing the config log shows that one machine is getting #define INET6 1 in the config.h and the other is not, from checking whether to enable ipv6. 10:39:47
@p14:matrix.orgp14What does one do about this sort of non-reproducibility according to machine configuration (in this case ipv6 being disabled)? Is this a tractable problem? Will upstream care? Or is reproducibility only defined if we talk about machines having identical configuration?11:54:33
@rick:matrix.ciphernetics.nl@rick:matrix.ciphernetics.nlI think it makes sense to ask upstream whether this is intentional11:58:20
@p14:matrix.orgp14I'm writing an issue.11:58:29
@p14:matrix.orgp14
In reply to @rick:matrix.ciphernetics.nl
I think it makes sense to ask upstream whether this is intentional
https://github.com/RsyncProject/rsync/issues/675
11:59:59

Show newer messages


Back to Room ListRoom Version: 6