about summary refs log tree commit diff
path: root/lib/fileset
AgeCommit message (Collapse)AuthorFilesLines
2024-05-20doc: migrate filesets to doc-comment format (#303811)Johannes Kirschbauer1-280/+471
* doc: migrate filesets to doc-comment format * fix definition list indentation
2024-04-02lib.fileset: fix typo: compatibity to compatibilityPhilip Taron1-1/+1
2024-02-27lib.fileset: Fix tests on Darwin, more POSIXSilvan Mosberger1-48/+52
This was found when trying to run the fileset tests on Darwin (https://github.com/NixOS/nix/pull/9546#issuecomment-1967409445), which mysteriously fail on Darwin: test case at lib/fileset/tests.sh:342 failed: toSource { root = "/nix/store/foobar"; fileset = ./.; } should have errored with this regex pattern: lib.fileset.toSource: `root` \(/nix/store/foobar\) is a string-like value, but it should be a path instead. \s*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead. but this was the actual error: error: lib.fileset.toSource: `root` (/nix/store/foobar) is a string-like value, but it should be a path instead. Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead. After dissecting this, I find out that apparently \s works on Linux, but not on Darwin for some reason! From the bash source code, it looks like <regex.h> with `REG_EXTENDED` is used for all platforms the same, so there's nothing odd there. It's almost impossible to know where <regex.h> comes from, but it looks to be a POSIX thing. So after digging through the almost impossible to find POSIX specifications (https://pubs.opengroup.org/onlinepubs/007908799/xbd/re.html#tag_007_003_005), I can indeed confirm that there's no mention of \s or the like! _However_, there is a mention of `[[:blank:]]`, so we'll use that instead.
2024-02-26lib.fileset.toList: initSilvan Mosberger3-2/+82
2024-02-01lib.fileset.gitTracked: Allow clones of shallow repositoriesibbem2-1/+31
The only reason shallow clones are not the default in `builtins.fetchGit` is that `revCount` can't be provided when cloning a shallow repository. However, `revCount` isn't used or exposed by `lib.fileset`. Hence, allowing cloning shallow repositories makes `gitTracked` more general without any drawbacks. Co-authored-by: Silvan Mosberger <github@infinisil.com>
2023-12-19Remove --simulate-pure-evalSilvan Mosberger1-36/+18
2023-12-19lib.fileset.gitTracked: Support out-of-tree buildsSilvan Mosberger3-6/+86
2023-12-19lib.fileset.fetchGit: RefactoringSilvan Mosberger1-18/+24
2023-12-11lib.fileset.gitTracked: Improve error when passing filesSilvan Mosberger2-0/+8
2023-12-11lib.fileset: Refactor gitTracked and gitTrackedWithSilvan Mosberger2-41/+48
Introduce an internal function for them to share more behavior. This makes future changes easier.
2023-11-24Merge pull request #266362 from tweag/fileset.fileFilter-extSilvan Mosberger3-3/+46
`lib.fileset.fileFilter`: Predicate attribute for file extension
2023-11-23lib.fileset.fileFilter: Predicate attribute for file extensionSilvan Mosberger3-3/+46
2023-11-22lib.fileset: Document decision for strict existence checksSilvan Mosberger1-0/+13
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-11-20lib.fileset.maybeMissing: initSilvan Mosberger4-7/+69
2023-11-19lib.fileset: Re-order to match reference overviewSilvan Mosberger1-200/+200
2023-11-19lib.fileset: Add overview section to reference docsSilvan Mosberger1-2/+44
2023-11-19Merge pull request #268520 from tweag/fileset-minor-changesSilvan Mosberger3-6/+11
`lib.fileset`: Minor changes
2023-11-19lib.fileset: Minor changesSilvan Mosberger3-6/+11
- Make fromSource's missing file error message more consistent with others, and add a test for it - Indent some function arguments - Fix an internal type
2023-11-19lib.fileset: Move introduction section above the functionsSilvan Mosberger1-0/+49
Previously the introductory section and the function listings were in different places. But now nixdoc supports having them together with https://github.com/nix-community/nixdoc/pull/70!
2023-11-16lib.fileset.gitTracked: Better error in pure evalSilvan Mosberger2-18/+49
2023-11-16lib.fileset.gitTrackedWith: Introduce recurseSubmodules parameterSilvan Mosberger3-6/+53
2023-11-16lib.fileset.gitTracked/gitTrackedWith: initSilvan Mosberger3-1/+253
A configuration parameter for gitTrackedWith will be introduced in the next commit
2023-11-15lib.fileset.fileFilter: Restrict second argument to pathsSilvan Mosberger4-31/+52
While this change is backwards-incompatible, I think it's okay because: - The `fileFilter` function is not yet in a stable NixOS release, it was only merged about [a month ago](https://github.com/NixOS/nixpkgs/pull/257356). - All public uses of the function on GitHub only pass a path - Any `fileFilter pred fileset` can also be expressed as `intersection fileset (fileFilter pred path)` without loss of functionality. - This is furthermore pointed out in the new error message when a file set is passed
2023-11-15Merge pull request #267381 from tweag/fileset.fileFilter-pathSilvan Mosberger3-16/+54
`fileset.fileFilter`: Don't run predicate unnecessarily
2023-11-14lib.fileset.fileFilter: Don't run predicate unnecessarilySilvan Mosberger2-16/+43
Before: nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix) trace: README.md trace: benchmark.sh trace: default.nix trace: internal.nix trace: mock-splitRoot.nix trace: tests.sh After: nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix) trace: default.nix
2023-11-14lib.fileset.fileFilter: Minor cleanups and more testsSilvan Mosberger3-2/+13
2023-11-13lib.fileset: Very minor changesSilvan Mosberger2-4/+1
2023-11-10Merge pull request #261732 from tweag/fileset.fromSourceRobert Hensing4-29/+398
`lib.fileset.fromSource`: init
2023-11-09lib.fileset: Remove unused bindingsSilvan Mosberger1-3/+0
Thanks nixd!
2023-11-08lib.fileset: Make error messages more uniformSilvan Mosberger3-45/+47
Just minor changes like: - Always using "X is a Y, but it should be Z" - "X is a path that does not exist" rather than "X does not exist" - Always using multi-line strings for errors - Always quoting string-like values and not quoting path-like values - But do quote filesystem roots. Even though they're paths, they might be very small, good to have quotes to know the start/end - Capitalise the first word - Distinguish root vs filesystem root more
2023-11-08lib.fileset: Remove nixdoc workaroundSilvan Mosberger1-9/+7
This problem was fixed in https://github.com/nix-community/nixdoc/pull/81 which is included in version 2.5.1, which is now used in Nixpkgs
2023-11-08lib.fileset.toSource: Mention fromSource in errorsSilvan Mosberger4-3/+19
2023-11-08lib.fileset.fromSource: initSilvan Mosberger3-0/+337
2023-11-08lib.fileset: Split out internal test helperSilvan Mosberger1-26/+42
2023-11-01lib.fileset: Add an additional argument in the design docsSilvan Mosberger1-0/+3
2023-11-01Merge pull request #259065 from tweag/fileset.differenceSilvan Mosberger3-0/+231
`lib.fileset.difference`: init
2023-10-30lib.fileset.difference: initSilvan Mosberger3-0/+231
2023-10-30lib.fileset.toSource: Optimise unknown file type errorSilvan Mosberger1-27/+28
Compared to the parent commit, this removes any detectable performance cost :)
2023-10-30lib.fileset.toSource: Improve error for unknown file typesSilvan Mosberger2-20/+33
This does decrease performance unfortunately Benchmarking expression toSource { root = ./.; fileset = ./.; } Mean CPU time 0.103747 (σ = 0.012415) for 10 runs is 97.32181384964636% (σ = 16.34179537413021%) of the old value 0.106602 (σ = 0.0125571) Statistic .envs.elements (205920) is 105.5842% (+10891) of the old value 195029 Statistic .gc.totalBytes (20247696) is 101.7495% (+348160) of the old value 19899536 Statistic .nrThunks (134824) is 108.7878% (+10891) of the old value 123933 Statistic .symbols.number (996) is 100.1005% (+1) of the old value 995 Statistic .values.number (275238) is 104.1199% (+10891) of the old value 264347
2023-10-26lib.fileset.toSource: Test with unknown file typeSilvan Mosberger1-0/+5
Currently just throws the Nix error because unknown file types are not supported by the Nix store, but nothing catches this error earlier (yet, see next commit)
2023-10-26lib.fileset: Fix shellcheck warnings in testsSilvan Mosberger1-4/+4
2023-10-24lib.fileset.fileFilter: initSilvan Mosberger3-0/+144
2023-10-16lib.fileset: Improved error for unsupported coercion valuesSilvan Mosberger2-4/+4
2023-10-11Merge pull request #257356 from tweag/fileset.intersectSilvan Mosberger4-8/+278
`lib.fileset.intersection`: init
2023-10-11lib.fileset: Minor contributor doc adjustmentsSilvan Mosberger1-2/+4
Co-authored-by: Robert Hensing <robert@roberthensing.nl>
2023-10-11lib.fileset.intersection: initSilvan Mosberger4-1/+257
2023-10-09link to documentation on IFD in the Nix manualValentin Gagarin1-1/+1
2023-10-04lib.fileset: Refactor for performance and future re-useSilvan Mosberger1-5/+17
2023-10-04Merge pull request #256417 from tweag/fileset.traceSilvan Mosberger4-74/+502
`lib.fileset.trace`, `lib.fileset.traceVal`: init
2023-10-04lib.fileset: Don't use ulimit for testing tracingSilvan Mosberger1-8/+13