diff options
author | ilkecan <ilkecan@protonmail.com> | 2021-09-22 21:58:21 +0300 |
---|---|---|
committer | ilkecan <ilkecan@protonmail.com> | 2021-10-06 19:25:33 +0300 |
commit | a4a6ef4fb218d87bc7d359dcb467bcec0aad56dc (patch) | |
tree | 63c9ecb90858ced4deb04af60654d08193561020 /src | |
parent | bcd73ebf60bb9ba6cb09f8df4366d5474c16e4a4 (diff) |
Add a warning to `filterSource`
Warn about the usage of `filterSource` with Nix store paths
Diffstat (limited to 'src')
-rw-r--r-- | src/libexpr/primops.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 8a087a781..15d56bd6d 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -413,7 +413,7 @@ static RegisterPrimOp primop_isNull({ Return `true` if *e* evaluates to `null`, and `false` otherwise. > **Warning** - > + > > This function is *deprecated*; just write `e == null` instead. )", .fun = prim_isNull, @@ -1919,6 +1919,19 @@ static RegisterPrimOp primop_filterSource({ .name = "__filterSource", .args = {"e1", "e2"}, .doc = R"( + > **Warning** + > + > `filterSource` should not be used to filter store paths. Since + > `filterSource` uses the name of the input directory while naming + > the output directory, doing so will produce a directory name in + > the form of `<hash2>-<hash>-<name>`, where `<hash>-<name>` is + > the name of the input directory. Since `<hash>` depends on the + > unfiltered directory, the name of the output directory will + > indirectly depend on files that are filtered out by the + > function. This will trigger a rebuild even when a filtered out + > file is changed. Use `builtins.path` instead, which allows + > specifying the name of the output directory. + This function allows you to copy sources into the Nix store while filtering certain files. For instance, suppose that you want to use the directory `source-dir` as an input to a Nix expression, e.g. @@ -2519,7 +2532,7 @@ static RegisterPrimOp primop_tail({ the argument isn’t a list or is an empty list. > **Warning** - > + > > This function should generally be avoided since it's inefficient: > unlike Haskell's `tail`, it takes O(n) time, so recursing over a > list by repeatedly calling `tail` takes O(n^2) time. |