7d764670c82308f061027a7e5beacfb9c17273bb
Fixes #323 Let's now all go an a little rant about spaghetti code... The result of this code is that the missing paths are not printed anymore. The basic issue was that the parent class of this command is StorePathsCommand, which inherits from BuiltPathsCommand, and their purpose is to work on path that are clearly in the store, building them if needed (and ofc telling the user about what's missing), the sequance of calls is: - BuiltPathsCommand::run(ref<Store> store, Installables && installables) - Installable::toBuiltPaths( *getEvaluator()->begin(aio()), getEvalStore(), store, realiseMode, operateOn, installables); where operateOn is Output by default, realiseMode is Derivation, so the only thing that can be built are the derivations for the required installables - Installable::build(state, evalStore, store, mode, installables) - Installable::build2(state, evalStore, store, mode, installables, bMode) And that final call has the following: ``` switch (mode) { case Realise::Nothing: case Realise::Derivation: state.aio.blockOn(printMissing(store, pathsToBuild, lvlError)); ``` So there were two options, hack a new spaghetti in the existing spaghetti code, or condense all those calls that are actually useless in our case because they mostly transform a list of installables into a map from installables to their BuiltPath which are then iterated to retrieve the final outputs, whereas it is possible to directly get the required paths in a much more efficient manner and without printing unrequired stuff through a multitude of intertwined function calls by simply replacing one method that was previously inherited from the grandparent class Change-Id: I1d2baaef5a099cd98b63b5346f2613914c6cd2ac
Lix
Lix is an implementation of Nix, a powerful package management system for Linux and other Unix systems that makes package management reliable and reproducible.
Read more about us at https://lix.systems.
Installation
On Linux and macOS the easiest way to install Lix is to run the following shell command (as a user other than root):
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
For systems that already have a Nix implementation installed, such as NixOS systems, read our install page
Building And Developing
See our Hacking guide in our manual for instruction on how to set up a development environment and build Lix from source.
Additional Resources
- The Lix reference manual:
- Our wiki
- Matrix - #space:lix.systems
License
Lix is released under LGPL-2.1-or-later.
Description
Working fork of Lix - carries the adaptive load-aware build-remote patch. Upstream: gerrit.lix.systems
92 MiB
Languages
C++
74.9%
Python
11.7%
Nix
6.1%
Shell
3.6%
Meson
2%
Other
1.6%