mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 04:43:09 +03:00
lib.fileset.toSource: Evaluate fileset even for empty directories
This commit is contained in:
parent
19b39dcc93
commit
7d4eb3f1b7
@ -92,6 +92,7 @@ The only way to change which files get added to the store is by changing the `fi
|
|||||||
fileset = _coerce "lib.fileset.toSource: `fileset`" filesetPath;
|
fileset = _coerce "lib.fileset.toSource: `fileset`" filesetPath;
|
||||||
rootFilesystemRoot = (splitRoot root).root;
|
rootFilesystemRoot = (splitRoot root).root;
|
||||||
filesetFilesystemRoot = (splitRoot fileset._internalBase).root;
|
filesetFilesystemRoot = (splitRoot fileset._internalBase).root;
|
||||||
|
filter = _toSourceFilter fileset;
|
||||||
in
|
in
|
||||||
if ! isPath root then
|
if ! isPath root then
|
||||||
if isStringLike root then
|
if isStringLike root then
|
||||||
@ -123,9 +124,10 @@ The only way to change which files get added to the store is by changing the `fi
|
|||||||
- Set `root` to ${toString fileset._internalBase} or any directory higher up. This changes the layout of the resulting store path.
|
- Set `root` to ${toString fileset._internalBase} or any directory higher up. This changes the layout of the resulting store path.
|
||||||
- Set `fileset` to a file set that cannot contain files outside the `root` ${toString root}. This could change the files included in the result.''
|
- Set `fileset` to a file set that cannot contain files outside the `root` ${toString root}. This could change the files included in the result.''
|
||||||
else
|
else
|
||||||
|
builtins.seq filter
|
||||||
cleanSourceWith {
|
cleanSourceWith {
|
||||||
name = "source";
|
name = "source";
|
||||||
src = root;
|
src = root;
|
||||||
filter = _toSourceFilter fileset;
|
inherit filter;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -294,6 +294,7 @@ rec {
|
|||||||
in
|
in
|
||||||
# Special case because the code below assumes that the _internalBase is always included in the result
|
# Special case because the code below assumes that the _internalBase is always included in the result
|
||||||
# which shouldn't be done when we have no files at all in the base
|
# which shouldn't be done when we have no files at all in the base
|
||||||
|
# This also forces the tree before returning the filter, leads to earlier error messages
|
||||||
if tree == null then
|
if tree == null then
|
||||||
empty
|
empty
|
||||||
else
|
else
|
||||||
|
@ -246,6 +246,9 @@ expectFailure 'toSource { root = ./a; fileset = ./a; }' 'lib.fileset.toSource: `
|
|||||||
\s*- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as '"$work"', and set `fileset` to the file path.'
|
\s*- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as '"$work"', and set `fileset` to the file path.'
|
||||||
rm -rf *
|
rm -rf *
|
||||||
|
|
||||||
|
# The fileset argument should be evaluated, even if the directory is empty
|
||||||
|
expectFailure 'toSource { root = ./.; fileset = abort "This should be evaluated"; }' 'evaluation aborted with the following error message: '\''This should be evaluated'\'
|
||||||
|
|
||||||
# Only paths under `root` should be able to influence the result
|
# Only paths under `root` should be able to influence the result
|
||||||
mkdir a
|
mkdir a
|
||||||
expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `fileset` could contain files in '"$work"', which is not under the `root` '"$work"'/a. Potential solutions:
|
expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `fileset` could contain files in '"$work"', which is not under the `root` '"$work"'/a. Potential solutions:
|
||||||
|
Loading…
Reference in New Issue
Block a user