| 1 Nov 2025 |
emily | the Rust derivation could probably rely on splicing instead of pkgsFooBar for those, but is there no way to turn off optimization flags or such to fix the LLVM 21 miscompilation instead? | 16:51:25 |
emily | or if the cause of the miscompilation is known we could revert the commit as a patch? | 16:51:39 |
Ihar Hrachyshka | oh but I mean I want to enable LTO :) this is in the way. otherwise it compiles fine. | 16:55:07 |
Ihar Hrachyshka | as-is firefox is "fine" - as in it compiles and works. only when LTO is enabled, the linker can't find some symbols for reasons. that's where I figured it's because llvm versions mixed for parts of the build - confirmed by looking at the tree of deps and the fix. | 16:56:49 |
Ihar Hrachyshka | (the reason why we need llvm 20 has nothing to do with LTO per se - we found a bug in llvm 21 with firefox on aarch64-darwin and had to revert to 20 for now) | 16:59:16 |
Ihar Hrachyshka | * (the reason why we need llvm 20 has nothing to do with LTO per se - we found a bug in llvm 21 with firefox on aarch64-darwin and had to revert to 20 for now) | 17:01:41 |
emily | yes, I know | 17:06:54 |
emily | I'm saying maybe you can just stay on the happy path of using LLVM 21 if you work around the bug or we revert its cause locally | 17:07:07 |
Ihar Hrachyshka | oh if I were to know the cause... | 17:07:38 |
Ihar Hrachyshka | for now I'm just waiting for mozilla folks who are now looking into it to come back with a fix. then we will probably know if we have a path with llvm21. | 17:08:20 |
emily | have you tried bisecting? shouldn't take too long | 17:08:47 |
Ihar Hrachyshka | bisecting whom? llvm? | 17:08:57 |
emily | yeah | 17:09:38 |
emily | we have a known good and known bad version | 17:09:45 |
Ihar Hrachyshka | I am not sure about "shouldn't take too long" :D but maybe I'm missing something. AFAIU it means rebuilding the world a bunch of times. | 17:10:25 |
emily | not the world. just LLVM, Rust, Firefox | 17:10:33 |
emily | which sure, take a long time, but bisect is O(log n). | 17:10:41 |
emily | so if you've built a handful of Firefoxes already you're well on the way to the total time it'd take to just find the problematic commit. | 17:10:54 |
emily | which is going to be required for any long-term solution | 17:11:00 |
Ihar Hrachyshka | :) I wasn't planning to spend a week babysitting a bisect but yeah sure :D | 17:12:01 |
emily | I'd expect more like a couple days, but who knows | 17:13:51 |
emily | Git will at least tell you immediately how many steps it anticipates | 17:14:02 |
Ihar Hrachyshka | I mean... I hear you, just not what I was planning to spend time on in the next few weeks, but if mozilla folks don't come back with some solution, we'll of course have to do it ourselves. | 17:14:58 |
emily | the immediate ergonomic solution would be to just get rid of the llvmSharedForBuild stuff in Rust | 17:15:52 |
emily | but in general | 17:16:35 |
emily | we will not be able to support what you are doing for too long | 17:16:40 |
emily | since IIRC Rust only supports the last couple LLVM versions | 17:16:48 |
emily | of course this will also be a problem for Mozilla… | 17:16:54 |
Ihar Hrachyshka | they are still on llvm19 | 17:18:14 |
Ihar Hrachyshka | looking at adopting 20 I think | 17:18:19 |