lixPackageSets.lix_2_9{1,2}: drop#426260
Conversation
|
There are quite a few conditionals for older versions in common-lix.nix which could be removed along with the old versions. Similar for the nix-eval-jobs source which can always be assumed to be the same as lix if you end up dropping everything below 2.93. |
|
I didn't drop them on purpose to let users reintroduce those versions
without breaking the build code, on the next release, I'd drop them.
Le ven. 18 juil. 2025, 17:16, alois31 ***@***.***> a écrit :
… *alois31* left a comment (NixOS/nixpkgs#426260)
<#426260 (comment)>
There are quite a few conditionals for older versions in common-lix.nix
<https://github.com/NixOS/nixpkgs/blob/c4ea7e484bd1de914d3b75481d6457bb06c6144e/pkgs/tools/package-management/lix/common-lix.nix>
which could be removed along with the old versions. Similar for the
nix-eval-jobs source which can always be assumed to be the same as lix if
you end up dropping everything below 2.93.
—
Reply to this email directly, view it on GitHub
<#426260 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AACMZRGE7Z6RETM3LVL5MZL3JEFT3AVCNFSM6AAAAACBZNX7TOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTAOBZHAZDAOJVGY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
045b6e3 to
f2a15a7
Compare
f2a15a7 to
61de286
Compare
|
After the discussion in #433057, I believe we should not drop Lix 2.91, yet, at least from a Nixpkgs perspective. Imho, this should only happen in 26.05, not in 25.11. We don't have a formal policy for this, yet, but I think it's reasonable to expect to be able to update from NixOS 24.11 to NixOS 25.11, because they overlap: There is a period where NixOS 24.11 is still supported and NixOS 25.11 is already being developed. To be able to verify that NixOS 25.11 evaluates with a NixOS 24.11 running Lix, we need to have Lix 2.91 still available in NixOS 25.11 - that's the reasonable amount of effort we can take to run it in CI etc. Since 24.11 was on 2.91 by default, and also doesn't have any newer Lix version, it would help to keep 2.91 until 26.05 branch-off. Of course, this only makes sense if it's also still supported upstream and doesn't become insecure. I think the fact that 2.91 is still the default in NixOS 25.05 is another argument for it. cc @emilazy (Edit: Note, this is intended to start the discussion about such a policy - how long should we expect Lix versions from one release to be in following releases? I said two cycles, the general answer could also be one cycle only, ofc) |
To make some concrete proposals: 1. Default +2 Each NixOS release's default Consequences (assuming 2.93 becomes the default in 25.11):
2. Latest +2 Each NixOS release's Consequences:
3. Default +1 Each NixOS release's default Consequences:
4. Latest +1 Each NixOS release's Consequences:
This PR, dropping 2.91 right now, would be at the bottom of this list in "Latest +1". I think that might not be enough. My proposal above is "Latest +2", I think. Maybe both of "Latest +2" and "Default +1"? |
|
I think it's more important to base our deprecations on what was stable. Doing a quick Github search, there are currently 476 uses of I don't want to state specific support windows, because I think that's up to the Lix team. My core opinions are:
Personally, I don't think 2.91 should be removed entirely yet. I'd prefer a deprecation warning for a single release, which reflects that it's only receiving security patches. |
|
Ideologically:
So far in Lix development, we've not really had a release that had significant unknown defects in it upon release since we have pretty strong QA on the main branch. Maybe we can keep stable-1 around with minimal maintenance in case something gets really blown up, but backporting further than the current stable means any of those old stable releases do not receive any meaningful QA. |
|
(What macOS kernel bug, btw?) |
OK, so let's assume that latest Lix is always backported and becomes the new
Yeah, if that's only ever going to be an unintended thing, then +1 should be enough. Just to make sure we can verify Nixpkgs still evaluating properly for those who are not on the latest stable NixOS version, yet. In practical consequences this means:
This means Lix 2.91 would still have to be supported until November. At least basic support as in: If there is anything security critical coming up, this would be fixed, so that the package doesn't need to be marked insecure. Does that make sense? |
|
Given that I have been in charge of the previous security issues, I think it's plausible we can do security until November but 2.91 is a highly expensive release, so November ought to be the utmost maximum support in nixpkgs IMHO. |
|
@wolfgangwalther So, I’m not convinced that keeping the previous default in the package set for the next release is that meaningful. In particular, what we really care about for version upgrades is bug‐compatibility with the entire closure used in that version. For instance, the Lix and Nix decision was that the behaviour relied upon by our Additionally, I don’t think the Nix team’s version support policy really enables the kind of verification you want, either; a strict reading is that the default version from the previous stable Nixpkgs goes EOL as soon as the next stable Nixpkgs is released, so by our own guidelines we should be dropping the previous default ahead of the enxt Nixpkgs release, as it won’t be supported throughout its lifetime. So, if you want to truly verify upgrade compatibility properties in CI, I don’t think there’s any way out of simply pinning the Nixpkgs release that you want to verify against, and pulling Nix implementations out of that. The alternative is to maintain that property reactively rather than proactively, fixing it when issues are reported, which I personally feel is fine. Therefore, it’s my opinion that it doesn’t really matter what versions we have in |
|
A while ago, I came to realize that we'd have to use another pinned nixpkgs in CI for my proposal in #426260 (comment) anyway: If 2.91 is dropped from master, but CI always pins that, we can't test it. So even if it was kept in 25.05, we couldn't use it. Thus, we'd have to use two pins: One to pull the older versions from 25.05 and one to pull the newer versions from unstable. I haven't come around to implementing that, yet. This is already half-way to what you're proposing. Of course, it makes much more sense to confirm that the whole of NixOS 24.11 can evaluate Nixpkgs 25.05, and not just any specific Nix version, which is also packaged in that release. The good thing is, that this also works around the unsupported-versions-are-marked-as-insecure problem, because these old Nix versions would not be marked insecure on an EOL branch anymore. Thus, we can just do this:
Doing it this way means that both Nix/Lix can freely update however they want, because the responsibility to keep Nixpkgs compatible is entirely within Nixpkgs. |
wolfgangwalther
left a comment
There was a problem hiding this comment.
Did not look at the diff, just confirming that I have no objections for these drops on master.
|
Should we make 2.93 the default rather than 2.92? AIUI it fixes perf regressions that 2.92 had or something? |
yes. 2.93 has no known regressions over 2.92. both have a cache query perf regression over 2.91, fixed in 2.94. |
It's already the case in this PR. |
emilazy
left a comment
There was a problem hiding this comment.
Sorry, I somehow missed that. LGTM, but aliases would be nice.
|
I added throw aliases. |
Lix 2.91 has been one of our historical LTS releases given that the Lix 2.92 series suffered from an unfortunate curl upstream bug and it took a lot of time to fix it, in addition of other papercuts with SSH connections. Lix 2.91 is the last release not containing the asyncification work we started. Lix 2.92 latest minors sorted out these issues and possess bits of asyncification, it's a much easier target for HEAD cherry-picks because it also renamed the directory `src/nix` to `lix/`. Plans are the following: * Lix 2.92 is skipped. * Lix 2.93 is the new stable. * Lix 2.94 is the next stable. Once NixOS 25.11 releases, Lix 2.92 will be dropped, therefore: it's dropped from the HEAD as of now. Lix 2.92 suffers from slight performance issues that are made up in Lix 2.93, your mileage may vary. Change-Id: I83d0d1764edfc4009e4373f6b22d728390419e30 Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
1ea086f to
dfd6bca
Compare
dfd6bca to
984ba8b
Compare
wolfgangwalther
left a comment
There was a problem hiding this comment.
CI likes it* and so do I.
* except for treefmt, you'll need to run that once more ;)
After discussing with the nixpkgs developers and Lix developers, we came to the conclusion that we could also drop directly 2.92 as this is not a much used version and 2.93 has no known regression over 2.92 (only advantages). To reduce the maintenance churn on the Lix team, we drop this version for 25.11 and will maintain only for the lifetime of 25.05. Change-Id: I4ee310df31d36b92e394ff2dfebd589d10b12228 Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
This ensures that evaluation doesn't suddenly break with cryptic messages and add a nice message for users. Change-Id: I1959ae7421c8a46ed93476bb014b84cfb26a4322 Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
984ba8b to
db84814
Compare
|
I should have satisfied treefmt, not sure this will keep the properties of every commit builds though because nixfmt wants to move too many things at a time visibly. |
|
@RaitoBezarius I think the patch from #413730 / https://gerrit.lix.systems/c/lix/+/3731 got inadvertently dropped with your last force-push, causing the build to fail for That patch should probably stay in place unless there's an imminent release of Lix 2.93.4 (the release branch does have the patch backported). As a quick workaround, |
|
@magneticflux- Thanks for the quick turnaround, I will fix this. |
## Lix 2.90 seriesLix 2.90 is vulnerable to critical CVEs, known vulnerabilities warningswere emitted. Users should have migrated by then.
There's no reason to keep it in-tree anymore.This was already dropped in a previous PR.
Lix 2.91 series
Lix 2.91 has been one of our historical LTS releases given that the Lix
2.92 series suffered from an unfortunate curl upstream bug and it took a
lot of time to fix it, in addition of other papercuts with SSH
connections.
Lix 2.91 is the last release not containing the asyncification work we
started.
Lix 2.92 latest minors sorted out these issues and possess bits of
asyncification, it's a much easier target for HEAD cherry-picks because
it also renamed the directory
src/nixtolix/.Plans are the following:
Once NixOS 25.11 releases, Lix 2.92 will be dropped.
Lix 2.92 suffers from slight performance issues that are made up in Lix
2.93, your mileage may vary.
Lix 2.92 series
Lix 2.92 is also dropped as we concluded that it is safe to skip over to 2.93 directly which we consider to be strongly stable. This simplifies maintenance for the Lix team.
If you are a user that discovers major regression in your workflows that worked in Lix 2.92, please contact or reach out the Lix team.
Things done
nix.conf? (See Nix manual)sandbox = relaxedsandbox = truenix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)Add a 👍 reaction to pull requests you find important.