klee: 3.1 -> 3.1-unstable-2025-07-11, bump to LLVM 18#435927
klee: 3.1 -> 3.1-unstable-2025-07-11, bump to LLVM 18#435927numinit merged 4 commits intoNixOS:masterfrom
Conversation
|
Oh, yeah, I've been waiting with bated breath for a new release. Thought about doing it this way myself, since it definitely can build with the new version but is not quite stable yet. Honestly, I think this is fine. If people want to use LLVM 13, they can use an older nixpkgs version. |
|
I’m cool going with this if it’s still valuable in this form. I tend to be a little hesitant about shipping prerelease code from active upstreams, and in this case there’s a very measurable loss of functionality, but if you think it’s more useful than a dropped package I’m happy with the bump :) I just don’t know KLEE well enough to judge myself whether it can still be used for real tasks like this. |
|
I wonder if the test disabling and asserts can be conditional on LLVM version. That way users can still overlay an older LLVM version if they want to use it. If a hello world still worked, and it was able to solve for some bitcode, that still seems useful, though I'll have to try with some examples I've got to verify how useful. In any case, these problems will go away with a future Klee update. If we need to break things for now and a backport will fix them, that sounds fairly reasonable. 13 is way too old. |
Our LLVM is no longer built with these, so the build system actually warns about the current default (and it breaks use with LLVM ≥ 18).
b8a85c0 to
821e8ed
Compare
|
I’m a little hesitant to establish a precedent of in‐tree Nixpkgs expressions exposing functionality for removed versions of dependencies; I figure that anyone adventurous enough to get a removed LLVM building out‐of‐tree can How do you feel about including the disabled tests so that the package will build and run, but marking it as |
|
That sounds reasonable to me. Let me give this a final review shortly. :-) |
numinit
left a comment
There was a problem hiding this comment.
This works OK on a test program. Hopefully they get the rest of the operations working soon.
@numinit KLEE officially supports up to LLVM 16, but all versions below 18 are planned to be removed for 25.11. How would you like to handle this one – bumping past the supported version, marking it broken for now in the hopes that there’ll be upstream progress on supporting newer versions, or dropping?
This PR implements the first option. There has been upstream work for supporting newer versions of LLVM (klee/klee#1664, klee/klee#1745, klee/klee#1751), and it does build with LLVM 18 and 19, but it’s clearly a work‐in‐progress (klee/klee#1754) and they don’t have CI for it. With LLVM 18, 330 (77%) of the tests have the expected result, but 96 (23%) have unexpected failures and we need to disable them to make the build go through. (A few more of them fail with LLVM 19, so it could be worse!)
The failures mostly relate to unimplemented intrinsics; I tested KLEE on an extremely basic program and it seemed to worked fine, but I imagine more complicated tests will run into issues. I don’t have enough KLEE experience to judge whether it’s still useful in this state, or whether it’d be more honest just to mark it
broken. Hopefully you’re in a better position to figure that out than I am.Things done
passthru.tests.nixpkgs-reviewon this PR. See nixpkgs-review usage../result/bin/.Add a 👍 reaction to pull requests you find important.