Maximilian Bosch f7871fcb57 libutil/topo-sort: return std::variant<std::vector<T>, Cycle>
The variant has on the left-hand side the topologically sorted vector
and the right-hand side is a pair showing the path and its parent that
represent a cycle in the graph making the sort impossible.

The goal is to implement #551 which needs to throw an error if the
topo-sort fails. However, the error-message is supposed to contain a
graph of store-paths and the API to generate this is inherently async.

Now, catching the exception and re-throwing another one is impossible
since `co_await` is forbidden in `catch`-blocks and adding another
topoSort variant that allows an async `makeError` also seems odd. Hence,
I decided to alter the data-structure in use a bit for this use-case.
One out of two uses of the function are affected after all.

Change-Id: I70a987f470437df8beb3b1cc203ff88701d0aa1b
2025-08-23 16:23:35 +02:00
2025-07-31 15:15:24 +00:00
2025-08-23 10:39:30 +00:00
2025-07-14 18:20:47 -07:00
2025-07-15 06:40:48 +00:00
2025-08-20 18:25:57 +02:00
2025-08-22 01:51:47 +00:00
2025-07-14 18:20:47 -07:00
2025-07-14 18:20:47 -07:00
2024-03-29 22:57:40 -07:00
2025-05-10 21:13:45 +02:00
2024-11-04 13:46:10 +01:00
2025-07-29 09:51:33 +00:00
2024-03-29 22:57:40 -07:00
2024-04-08 13:00:00 -07:00
2025-08-19 10:45:40 +00:00
2025-08-16 14:27:13 +01:00
2025-07-14 18:20:47 -07:00
2025-08-20 18:31:52 +02:00
2025-03-18 04:20:00 +00:00
2024-12-30 07:25:23 -08:00
2025-05-10 22:14:10 +02:00

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

License

Lix is released under LGPL-2.1-or-later.

S
Description
Working fork of Lix - carries the adaptive load-aware build-remote patch. Upstream: gerrit.lix.systems
Readme
92 MiB
Languages
C++ 74.9%
Python 11.7%
Nix 6.1%
Shell 3.6%
Meson 2%
Other 1.6%