No compilation, please?
No compilation, please?
Posted Jul 11, 2024 19:43 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)Parent article: Nix alternatives and spinoffs
I guess Flatpaks are probably the closest we can get to this?
Posted Jul 11, 2024 20:03 UTC (Thu)
by atnot (subscriber, #124910)
[Link] (1 responses)
Posted Jul 11, 2024 20:19 UTC (Thu)
by jhe (subscriber, #164815)
[Link]
Posted Jul 11, 2024 20:32 UTC (Thu)
by ericproberts (guest, #139553)
[Link] (1 responses)
Maybe there's something I'm missing. Is there a specific problem you're trying to solve?
Posted Jul 11, 2024 20:36 UTC (Thu)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Posted Jul 12, 2024 8:55 UTC (Fri)
by spacefrogg (subscriber, #119608)
[Link] (12 responses)
Posted Jul 12, 2024 11:18 UTC (Fri)
by ms (subscriber, #41272)
[Link]
Posted Jul 12, 2024 14:23 UTC (Fri)
by intelfx (subscriber, #130118)
[Link] (10 responses)
Well, that is just blatantly untrue. In any other distribution platform in existence, changing kernel configuration, or patching the libc, or even changing gcc build flags will never result in rebuilding the world — so long as you maintain the ABI of the component in question, which is pretty much always.
The only distribution that has a problem with it is NixOS (and its derivatives/equivalents). And *that* is the problem with Nix{,OS}.
Posted Jul 12, 2024 15:39 UTC (Fri)
by atai (subscriber, #10977)
[Link] (6 responses)
Really? Gentoo should have the same "problem" and unrelated to NixOS or derivatives
Posted Jul 12, 2024 18:03 UTC (Fri)
by NYKevin (subscriber, #129325)
[Link]
Posted Jul 12, 2024 18:17 UTC (Fri)
by intelfx (subscriber, #130118)
[Link] (4 responses)
No, because Gentoo does not require rebuilding anything **as a consequence** of patching the libc or changing toolchain build flags.
As NYKevin says, when Gentoo _does_ require rebuilding things, it's because you deliberately chose to use a source-first distribution. Or you might choose to use Gentoo's binary cache, which is (unlike Nix's) not predicated on never touching or altering the dependencies of packages involved. So it's a feature (that you might or might not choose to use), not a problem.
Nix, on the other hand, will force you to rebuild the world exactly **as a consequence** of changing some definitions at the bottom of the dependency graph, even if it is not technically necessary.
Posted Jul 12, 2024 19:10 UTC (Fri)
by NightMonkey (subscriber, #23051)
[Link] (3 responses)
But, the times I've had to rebuild world all at once in the last 5 years has been zero. The work to create centralized binary caches at Gentoo HQ and making binary-only versions of some of the most brittle builds (major web browsers, office suites, multimedia players, etc.) has taken the pain out of everyday upgrades.
And, if you have a farm of dozens, hundreds or thousands of machines, you can easily create the infrastructure to reduce the pain of recompiling to a temporary build farm that creates a local binary cache, and distribute the built binaries to the fleet. Modern CPUs and ramdisks handle this task well.
Gentoo is a *metadistribtution*. This means that it can be used to create *your own distribution*. It has the tools to enable you to do so. With the care and attention, it can reward you greatly.
Let's not slag Gentoo reflexively when we want to just complain about inefficiency generally.
Cheers!
Posted Jul 12, 2024 19:59 UTC (Fri)
by Wol (subscriber, #4433)
[Link] (2 responses)
You haven't upgraded your profile recently?
Mind you, that was the upgrade from 2017 to 2024, and it was also the upgrade where you were sort-of forced to merged-usr, and it was sort-of the upgrade where you felt pushed forward to get the distro into the third decade.
I think it was only my second profile upgrade in however many years (Istr the one before was 2014), and this upgrade the instructions did say "finish with 'emerge -e @world' " ie "rebuild everything", But how long have I been using gentoo? And this is the first time.
Cheers,
Posted Jul 12, 2024 21:45 UTC (Fri)
by NightMonkey (subscriber, #23051)
[Link] (1 responses)
Posted Jul 12, 2024 22:26 UTC (Fri)
by Wol (subscriber, #4433)
[Link]
I went systemd for the same reason I chose gentoo - it's a deliberate choice of a learning curve. My old OpenRC system was just that - too old. I used to have distcc, but I just haven't got round to setting my new systems up the way I would like. I want to share the build directories over the network, and then I'd uprade the faster system (I build binary packages as a matter of course), and then upgrade the slower system with the "use packages if they're there" option.
Cheers,
Posted Jul 12, 2024 21:07 UTC (Fri)
by bauermann (subscriber, #37575)
[Link] (1 responses)
> so long as you maintain the ABI of the component in question, which is pretty much always. The aim of Nix and its derivatives/equivalents is to do away with the "pretty much" part of the sentence, because "pretty much" isn't reliable enough. It's very hard to guarantee that an ABI hasn't been broken, and subtle changes in the input can affect a package build in unexpected ways. The principle of Nix/Guix/etc is that the inputs to a package build are painstakingly tracked so that if anything changes in any of the inputs (or the inputs' inputs, etc down to the last turtle) then a new build is made. Which is why changes deep in the dependency graph trickle down to everything. Eelco Dolstra's PhD thesis has the details. It's an interesting read. This is the cornerstone of the functional package manager's reproducibility and rollback guarantees. Guix has the graft mechanism to replace a dependency without propagating the changes to the dependant packages, assuming that the ABI is the same. It's used to apply security fixes without requiring world rebuilds or downloads of updated cached binaries for everything. But it's a practical concession that goes against the underlying model.
Posted Jul 12, 2024 22:33 UTC (Fri)
by Wol (subscriber, #4433)
[Link]
I haven't looked ... but that is a plentiful source of gentoo bugs I suspect. I'm sure I've been bitten by missed dependencies in the ebuilds, I've seen bug reports ... and of course, they're a right pain to actually track down because they're obscure and don't bite that many people.
Cheers,
Posted Jul 13, 2024 9:05 UTC (Sat)
by JanSoundhouse (subscriber, #112627)
[Link]
Posted Jul 12, 2024 13:42 UTC (Fri)
by RaitoBezarius (subscriber, #106052)
[Link]
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
No compilation, please?
Wol
No compilation, please?
No compilation, please?
Wol
No compilation, please?
No compilation, please?
Wol
No compilation, please?
For example if a flag for the libc is changed, the depending packages must be able to infer whether that change needs a rebuild on their end. You cannot rely on make to do it for you, as it only looks a file dates and not the actual content.
For a human it might be possible to tell that a certain flag added or removed will result in a compatible binary, but if you want your builds to be always correct (and you dont have a perfect declaration of _all_ dependcies) rebuilding is the safest bet.
No compilation, please?