You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: rfcs/0023-musl-libc.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,7 +66,7 @@ most popular libc implementation on Linux, and is used
66
66
by a number of important projects you may be familiar with
67
67
large userbases, including:
68
68
* Alpine Linux - [#70 on Distrowatch](https://distrowatch.com/table.php?distribution=alpine) but very popular amongst docker users for producing slim container images.
69
-
*[OpenWRT/LEDE](https://openwrt.org/) - #1 open-source Linux router firmware project; foundation of most other projects targetting routers.
69
+
*[OpenWRT/LEDE](https://openwrt.org/) - #1 open-source Linux router firmware project; foundation of most other projects targeting routers.
70
70
More projects and details of how they use musl can be found here:
Copy file name to clipboardExpand all lines: rfcs/0042-config-option.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -192,7 +192,7 @@ The second part of this RFC aims to encourage people to write better NixOS modul
192
192
193
193
This RFC has to be thought of as a basis for *new* modules first and foremost. By using this approach we can provide a good basis for new modules, with great flexibility for future changes.
194
194
195
-
For existing modules, it is often not possible to use this `settings` style without breaking backwards compatibility. How this is handled is left up to the module authors. A workaround that could be employed is to define options `useLegacyConfig` or `declarative` which determin the modules behavior in regards to old options.
195
+
For existing modules, it is often not possible to use this `settings` style without breaking backwards compatibility. How this is handled is left up to the module authors. A workaround that could be employed is to define options `useLegacyConfig` or `declarative` which determine the modules behavior in regards to old options.
Add some experimental support for content-addressed store paths to Nix.
16
16
17
17
We plan here to give the possibility to mark certain store paths as
18
-
content-adressed (ca), while keeping the other input-adressed as they are
18
+
content-addressed (ca), while keeping the other input-addressed as they are
19
19
now (modulo some mandatory drv rewriting before the build, see below).
20
20
21
21
By making this opt-in, we can impose arbitrary limitations to the paths that
@@ -37,17 +37,17 @@ the `ca-derivation` experimental flag.
37
37
38
38
[motivation]: #motivation
39
39
40
-
Having a content-adressed store with Nix (aka the "Intensional store") is a
40
+
Having a content-addressed store with Nix (aka the "Intensional store") is a
41
41
long-time dream of the community − a design for that was already taking a whole
42
42
chapter in [Eelco's PHD thesis][nixphd].
43
43
44
44
This was never done because it represents quite a big change in Nix's model,
45
45
with some non-trivial implications (regarding the trust model in
46
46
particular).
47
47
Even without going all the way down to a fully intensional model, we can
48
-
make specific paths content-adressed, which can give some important benefits of
48
+
make specific paths content-addressed, which can give some important benefits of
49
49
the intensional store at a much lower price. In particular, setting some
50
-
critical derivations as content-adressed can lead to some substantial build
50
+
critical derivations as content-addressed can lead to some substantial build
51
51
cutoffs.
52
52
53
53
# Detailed design
@@ -87,7 +87,7 @@ these derivations).
87
87
88
88
To fully support this content-addressed model, we need to extend the current
89
89
build process, as well as the caching and remote building systems so that they
90
-
are able to take into account the specificies of these new derivations.
90
+
are able to take into account the specifics of these new derivations.
91
91
92
92
Fully supporting content-addressed derivations requires some deep changes to the Nix model.
93
93
For the sake of readability, we’ll first present a simplistic model that support them in a very basic way, and then extend this model in several different ways to improve the support.
@@ -119,7 +119,7 @@ the output paths of a derivation before building it.
119
119
This means that the Nix evaluator doesn’t know the output paths of the
120
120
dependencies it manipulates (it _could_ know them if they are already built, but
121
121
that would be a blatant purity hole), so these derivations can’t neither embed
122
-
their own output path, nor explicitely refer to their dependencies by their
122
+
their own output path, nor explicitly refer to their dependencies by their
123
123
output path.
124
124
125
125
### Output mappings
@@ -214,7 +214,7 @@ A store path `/nix/store/abc-foo` is said to be **self-referential** if the
214
214
content of the path mentions the path `/nix/store/abc-foo` itself (and this
215
215
mention of the store path is called a **self-reference**).
216
216
217
-
A lot of store paths happen to be self-referential (for example a path that contains both an dynamic library and an executable using that library will likely have the `rpath` of the exectuable mention the absolute path to the library).
217
+
A lot of store paths happen to be self-referential (for example a path that contains both an dynamic library and an executable using that library will likely have the `rpath` of the executable mention the absolute path to the library).
218
218
219
219
It happens that these are problematic with content-addressed derivations, because
220
220
@@ -224,9 +224,9 @@ It happens that these are problematic with content-addressed derivations, becaus
224
224
However, under the assumption that self-references only appear textually in the output (_i.e_ running strings on a file that contains self-references will print all the self-references out), we can:
225
225
226
226
- Build the derivation on a temporary directory (`/nix/store/someArbitraryHash-foo`, the path provided by the function `assignScratchOutputPaths` above)
227
-
- Replace all the occurences of `someArbitraryHash` by a fixed magic value
227
+
- Replace all the occurrences of `someArbitraryHash` by a fixed magic value
228
228
- Compute the hash of the resulting path to determine the final path
229
-
- Replace the occurences of the magic value by the final path hash
229
+
- Replace the occurrences of the magic value by the final path hash
230
230
- Move the result to the final path.
231
231
232
232
This is obviously a hack, however it seems to work very well in practice, due to the fact that:
@@ -311,7 +311,7 @@ work on store paths, but rather at the realisation level:
311
311
312
312
If the store knows about the given derivation output, it will return the associated realisation, otherwise it will return`None`.
313
313
314
-
- The substitution loop in Nix fist calls this method to ask the remote for the
314
+
- The substitution loop in Nix first calls this method to ask the remote for the
315
315
realisation of the current derivation output.
316
316
If this first call succeeds, then it fetches the corresponding output path
317
317
like before. Then, it registers the realisation in the database:
@@ -330,7 +330,7 @@ This folder contains a set of files of the form `{drvOutput}.doi`, each of them
330
330
331
331
#### The “two-glibc” issue
332
332
333
-
As stated in [Eelco’s thesis][nixphd], remote caching of content-addressed derivations can be problematic in conjonction with non-determinism:
333
+
As stated in [Eelco’s thesis][nixphd], remote caching of content-addressed derivations can be problematic in conjunction with non-determinism:
334
334
335
335
A typical scenario where this can happen is:
336
336
@@ -431,8 +431,8 @@ We also update `registerRealisation` for the local store to check these signatur
431
431
same end-goal. The big difference between these two is in the scope they cover:
432
432
RFC 0017 is about fundamentally changing the base model of Nix, while this
433
433
proposal suggests to make only the minimal amount of changes to the current
434
-
model to allow the content-adressed model to live in parallel (which would open
435
-
the way to a fully content-adressed store as RFC0017, but in a much more
434
+
model to allow the content-addressed model to live in parallel (which would open
435
+
the way to a fully content-addressed store as RFC0017, but in a much more
436
436
incremental way).
437
437
438
438
Eventually this RFC should be subsumed by RFC0017.
@@ -485,7 +485,7 @@ annoying since:
485
485
- More annoyingly, these references become dangling and can cause runtime
486
486
failures
487
487
488
-
We however have a way to dectect these: If we have leaking self-references then
488
+
We however have a way to detect these: If we have leaking self-references then
489
489
the output will change if we artificially change its output path. This could be
490
490
integrated in the `--check` option of `nix-store`.
0 commit comments