Commit Graph

43 Commits

Author SHA1 Message Date
Silvan Mosberger
4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
Silvan Mosberger
e3a6e38033 lib.fileset.toList: init 2024-02-26 20:21:50 +01:00
ibbem
6558e89177 lib.fileset.gitTracked: Allow clones of shallow repositories
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>
2024-02-01 00:01:26 +01:00
Silvan Mosberger
4a70c1e4da lib.fileset.gitTracked: Support out-of-tree builds 2023-12-19 22:08:59 +01:00
Silvan Mosberger
74f2e49543 lib.fileset.fetchGit: Refactoring 2023-12-19 01:46:15 +01:00
Silvan Mosberger
6e3be6ddb0 lib.fileset.gitTracked: Improve error when passing files 2023-12-11 23:05:51 +01:00
Silvan Mosberger
eec765f9e6 lib.fileset: Refactor gitTracked and gitTrackedWith
Introduce an internal function for them to share more behavior.
This makes future changes easier.
2023-12-11 22:57:12 +01:00
Silvan Mosberger
7486aee82e
Merge pull request #266362 from tweag/fileset.fileFilter-ext
`lib.fileset.fileFilter`: Predicate attribute for file extension
2023-11-24 00:15:43 +01:00
Silvan Mosberger
6816f28c96 lib.fileset.fileFilter: Predicate attribute for file extension 2023-11-23 21:05:23 +01:00
Silvan Mosberger
1cc2c2f13d lib.fileset.maybeMissing: init 2023-11-20 19:56:45 +01:00
Silvan Mosberger
b514f0433c lib.fileset: Minor changes
- 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-19 16:06:14 +01:00
Silvan Mosberger
d33f1a62f5 lib.fileset.gitTrackedWith: Introduce recurseSubmodules parameter 2023-11-16 01:12:18 +01:00
Silvan Mosberger
2dfb1d36cf lib.fileset.gitTracked/gitTrackedWith: init
A configuration parameter for gitTrackedWith will be introduced in the
next commit
2023-11-16 01:12:15 +01:00
Silvan Mosberger
1c3eb9eff1 lib.fileset.fileFilter: Restrict second argument to paths
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-15 01:20:36 +01:00
Silvan Mosberger
7e533bab6d
Merge pull request #267381 from tweag/fileset.fileFilter-path
`fileset.fileFilter`: Don't run predicate unnecessarily
2023-11-15 01:19:36 +01:00
Silvan Mosberger
2035f8a324 lib.fileset.fileFilter: Don't run predicate unnecessarily
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-14 07:30:16 +01:00
Silvan Mosberger
e1d8331738 lib.fileset.fileFilter: Minor cleanups and more tests 2023-11-14 07:29:57 +01:00
Robert Hensing
cfd83c931f
Merge pull request #261732 from tweag/fileset.fromSource
`lib.fileset.fromSource`: init
2023-11-10 20:32:51 +01:00
Silvan Mosberger
9cbd394aa0 lib.fileset: Remove unused bindings
Thanks nixd!
2023-11-09 00:02:43 +01:00
Silvan Mosberger
0ace383438 lib.fileset: Make error messages more uniform
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-08 23:59:04 +01:00
Silvan Mosberger
e07e80e841 lib.fileset.toSource: Mention fromSource in errors 2023-11-08 21:44:44 +01:00
Silvan Mosberger
73493584a7 lib.fileset.fromSource: init 2023-11-08 21:21:30 +01:00
Silvan Mosberger
fc28c5e5b7
Merge pull request #259065 from tweag/fileset.difference
`lib.fileset.difference`: init
2023-11-01 19:40:45 +01:00
Silvan Mosberger
50df7f9775 lib.fileset.difference: init 2023-10-30 12:51:55 +01:00
Silvan Mosberger
47c81d3286 lib.fileset.toSource: Optimise unknown file type error
Compared to the parent commit, this removes any detectable performance
cost :)
2023-10-30 12:48:13 +01:00
Silvan Mosberger
0f6cc8018c lib.fileset.toSource: Improve error for unknown file types
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-30 12:48:11 +01:00
Silvan Mosberger
f4e0043049 lib.fileset.fileFilter: init 2023-10-24 01:44:04 +02:00
Silvan Mosberger
7247ec07ba lib.fileset: Improved error for unsupported coercion values 2023-10-16 15:50:10 +02:00
Silvan Mosberger
4ecf025814 lib.fileset.intersection: init 2023-10-11 16:17:48 +02:00
Silvan Mosberger
2541635c13 lib.fileset: Refactor for performance and future re-use 2023-10-04 23:21:45 +02:00
Silvan Mosberger
5bbe67bf67 lib.fileset: Mention trace functions in the file set evaluation error 2023-10-04 16:31:13 +02:00
Silvan Mosberger
efbcf5938f lib.fileset: Add internal helpers for pretty-printing 2023-10-04 16:28:55 +02:00
Silvan Mosberger
86802e19ce lib.fileset: _simplifyTree -> _normaliseTreeFilter 2023-10-03 21:27:42 +02:00
Silvan Mosberger
b3c2281219 lib.fileset: Order noEval last 2023-10-03 21:27:40 +02:00
Silvan Mosberger
4f35f003e6 lib.fileset: Internal representation v3, empty value without a base
`unions []` now works!

Notably the new empty value without a base is not exposed in the interface.
I don't know of any use case for it.
2023-10-03 17:05:57 +02:00
Silvan Mosberger
94e103ee3f lib.fileset: Minor changes from feedback
Co-authored-by: Robert Hensing <robert@roberthensing.nl>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-09-21 00:21:02 +02:00
Silvan Mosberger
fe6c1539cc lib.fileset: Internal representation v2, ~12x faster unions!
$ ./benchmark.sh HEAD
    [...]
    Mean CPU time 0.04006 (σ = 0.0040146) for 10 runs is 8.193619775953792% (σ = 0.9584251052704821%) of the old value 0.488917 (σ = 0.0294955)
    [...]
2023-09-21 00:21:02 +02:00
Silvan Mosberger
7ab764e575 lib.fileset.unions: Don't stack overflow for many files 2023-09-21 00:21:01 +02:00
Silvan Mosberger
d866a0bda1 lib.fileset.union: init 2023-09-21 00:19:48 +02:00
Silvan Mosberger
7c6b0b107a lib.fileset: Minor internal type doc fix 2023-09-13 23:32:29 +02:00
Silvan Mosberger
7d4eb3f1b7 lib.fileset.toSource: Evaluate fileset even for empty directories 2023-09-13 23:32:14 +02:00
Silvan Mosberger
19b39dcc93 lib.fileset: Internal representation v1 2023-09-13 18:53:53 +02:00
Silvan Mosberger
465e05c0c5 lib.fileset.toSource: init 2023-09-01 15:46:04 +02:00