reword details on keeping closure property

This commit is contained in:
Valentin Gagarin 2022-04-29 02:10:24 +02:00
parent e90586c0a4
commit b5ca3d12b6

View file

@ -43,13 +43,13 @@ Nix stores have the *closure property*: for each store object in the store, all
Building, copying and deleting store objects must be done in a way that obeys this property: Building, copying and deleting store objects must be done in a way that obeys this property:
- Build results must only refer to store objects in the closure of the build inputs.
- Store objects being copied must refer to objects already in the destination store.
Recursive copying must either proceed in dependency order or be atomic.
- We can only safely delete unreferenced objects. - We can only safely delete unreferenced objects.
- When copying, to maintain correctness, either the result must be "revealed" atomically to the destination store, or objects must be copied in reference-dependency order.
- Newly built store objects must only refer to store objects in the closure of the build inputs.
This ensures the purity of the build.
### Reference scanning ### Reference scanning
While references could be arbitrary paths, Nix requires them to be store paths to ensure correctness. While references could be arbitrary paths, Nix requires them to be store paths to ensure correctness.