Eelco Dolstra
071f14a0bb
Don't do shallow fetches over ssh
2023-11-20 17:25:40 +01:00
Eelco Dolstra
e4066c0444
Fetch specific Git revisions
...
This is more efficient, and necessary when using shallow=1 with a rev.
2023-11-20 17:25:40 +01:00
Eelco Dolstra
7ab91e7238
Implement shallow fetching
2023-11-15 15:00:17 +01:00
Eelco Dolstra
5dd4ae8687
Remove unused cacheType field
2023-11-15 14:08:34 +01:00
Eelco Dolstra
2890999911
Show Git fetch progress
2023-11-15 13:57:20 +01:00
Eelco Dolstra
2964a9f562
Fix relative submodule handling
...
Tested on
nix flake prefetch 'git+https://github.com/blender/blender.git?rev=4ed8a360e956daf2591add4d3c9ec0719e2628fe&submodules=1 '
2023-11-14 16:00:21 +01:00
Eelco Dolstra
6ec6b8aa36
Improve git submodule error reporting
2023-11-14 15:52:18 +01:00
Eelco Dolstra
c257c82447
Cleanup
2023-11-14 14:47:17 +01:00
Eelco Dolstra
7f576f5dfe
Rename UnionInputAccessor to MountedInputAccessor
2023-11-14 14:02:57 +01:00
Eelco Dolstra
21140c987b
Fix doxygen comments
2023-11-14 14:02:57 +01:00
Eelco Dolstra
4329bdf6a3
Move comment
2023-11-14 14:02:57 +01:00
Eelco Dolstra
25cf8f1071
src/libfetchers/union-input-accessor.cc: Apply suggestion
...
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-11-14 13:57:24 +01:00
Eelco Dolstra
38b07d6347
src/libfetchers/git.cc: Apply suggestion
...
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-11-14 13:38:03 +01:00
Eelco Dolstra
d74d2fdaa7
Move statusCallbackTrampoline
2023-11-14 13:35:26 +01:00
Eelco Dolstra
21bb180547
Use libgit2 with ssh-exec support
...
See https://github.com/libgit2/libgit2/pull/6617 . This ensures that we
get support for ~/.ssh/config, known_hosts etc.
2023-11-14 13:30:51 +01:00
Eelco Dolstra
cf59ea83ec
configure: Check for libgit2
2023-11-10 13:58:59 +01:00
Eelco Dolstra
98a120b8b8
Merge remote-tracking branch 'origin/master' into libgit2
2023-11-09 16:48:41 +01:00
Robert Hensing
1fa87c6aa8
Merge pull request #9283 from obsidiansystems/mememory-source-accessor
...
Factor out `MemorySourceAccessor`, implement missing features
2023-11-06 19:51:02 +01:00
John Ericson
ac89bb064a
Split up util.{hh,cc}
...
All OS and IO operations should be moved out, leaving only some misc
portable pure functions.
This is useful to avoid copious CPP when doing things like Windows and
Emscripten ports.
Newly exposed functions to break cycles:
- `restoreSignals`
- `updateWindowSize`
2023-11-05 12:20:02 -05:00
John Ericson
9b880e3e29
Factor out MemorySourceAccessor
, implement missing features
...
The new `MemorySourceAccessor` rather than being a slightly lossy flat
map is a complete in-memory model of file system objects.
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
2023-11-04 15:24:20 -04:00
BootRhetoric
098f0615c9
fetchGit and flake: add publicKeys list input
...
This adds publicKeys as an optional fetcher input attribute to flakes
and builtins.fetchGit to provide a nix interface for the json-encoded
`publicKeys` attribute of the git fetcher.
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-11-03 20:23:31 +01:00
BootRhetoric
6df32889a5
Add git commit verification input attributes
...
This implements the git input attributes `verifyCommit`, `keytype`,
`publicKey` and `publicKeys` as experimental feature
`verified-fetches`. `publicKeys` should be a json string.
This representation was chosen because all attributes must be of type bool,
int or string so they can be included in flake uris (see definition of
fetchers::Attr).
2023-11-03 20:15:12 +01:00
Eelco Dolstra
39ea46abb1
Merge remote-tracking branch 'origin/master' into libgit2
2023-11-02 16:16:37 +01:00
Eelco Dolstra
5223114c93
Merge pull request #9269 from edolstra/unify-accessor
...
Unify `FSAccessor` and `SourceAccessor`
2023-11-02 14:23:10 +01:00
Eelco Dolstra
cdb27c1519
SourceAccessor: Change the main interface from lstat() to maybeLstat()
2023-11-01 15:26:07 +01:00
John Ericson
0707db2b1c
Merge pull request #9255 from NixOS/libfetcher-docs-json
...
libfetcher doc automation
2023-11-01 09:38:02 -04:00
Eelco Dolstra
0c5eac9c45
Git fetcher: Handle submodules for workdirs
2023-10-31 15:59:25 +01:00
Eelco Dolstra
669b074f51
Cleanup
2023-10-31 14:52:21 +01:00
Eelco Dolstra
d88106df24
Git fetcher: Improve submodule handling
...
Instead of making a complete copy of the repo, fetching the
submodules, and writing the result to the store (which is all
superexpensive), we now fetch the submodules recursively using the Git
fetcher, and return a union accessor that "mounts" the accessors for
the submodules on top of the root accessor.
2023-10-31 14:52:21 +01:00
Eelco Dolstra
ee36a44bf2
GitInputScheme: Use libgit2
...
This replaces most calls to the "git" binary with libgit2.
2023-10-31 14:52:21 +01:00
Eelco Dolstra
1d0e3d84b6
Provide a InputScheme::fetch() built on top of InputScheme::getAccessor()
...
This is for graceful migration to lazy-trees fetchers (which are all
accessor-based). Eventually fetch() will be removed.
2023-10-31 14:52:17 +01:00
Eelco Dolstra
e1b8442fa1
Fetcher cache: Add support for caching facts not related to store paths
2023-10-31 14:51:39 +01:00
John Ericson
077de2968e
Include fetcher input scheme info in the CLI dump
...
Leverages the previous commit.
2023-10-30 10:30:59 -04:00
John Ericson
8381eeda6f
Systematize fetcher input attribute validation
...
We now have `schemeName` and `allowedAttrs` functions for this purpose.
We look up the schema with the former; we restrict the set of input
attributes with the latter.
2023-10-30 10:17:24 -04:00
Eelco Dolstra
95d657c8b3
Input: Replace markFileChanged() by putFile()
...
Committing a lock file using markFileChanged() required the input to
be writable by the caller in the local filesystem (using the path
returned by getSourcePath()). putFile() abstracts over this.
2023-10-25 18:30:29 +02:00
Eelco Dolstra
955bbe53c5
Merge pull request #9177 from edolstra/input-accessors
...
Backport FSInputAccessor and MemoryInputAccessor from lazy-trees
2023-10-23 11:42:04 +02:00
Eelco Dolstra
34a42f0d0a
Move PosixSourceAccessor into its own file
2023-10-23 11:05:50 +02:00
Eelco Dolstra
935c9981de
Remove fetchers::Tree and move tarball-related stuff into its own header
2023-10-20 19:56:52 +02:00
Eelco Dolstra
0f7e9d0513
Input: Remove 'direct' field
2023-10-20 19:14:04 +02:00
Eelco Dolstra
af302267e5
Input::hasAllInfo(): Remove
2023-10-20 17:19:36 +02:00
Eelco Dolstra
57db3be9e4
SourceAccessor::readFile(): Support reading into a sink
2023-10-20 16:36:41 +02:00
Eelco Dolstra
7a086a32bc
fetchToStore(): Handle flat ingestion method and add test
2023-10-20 13:32:15 +02:00
Eelco Dolstra
bacceaea91
Move getLastModified(), remove setPathDisplay()
2023-10-20 12:40:46 +02:00
Eelco Dolstra
50156302c0
Deduplicate FSSourceAccessor and FSInputAccessor
2023-10-19 15:20:10 +02:00
Eelco Dolstra
fb6a3910c4
Move most of InputAccessor into libutil
2023-10-19 14:45:26 +02:00
Eelco Dolstra
12214fef09
InputAccessor::fetchToStore(): Support arbitrary ingestion methods
2023-10-19 14:19:10 +02:00
Yueh-Shun Li
e026f3e1ae
treewide: Reference HashFormat members with scope
...
Base* -> HashFormat::Base*
2023-10-19 00:56:41 +08:00
Eelco Dolstra
df73c6eb8c
Introduce MemoryInputAccessor and use it for corepkgs
...
MemoryInputAccessor is an in-memory virtual filesystem that returns
files like <nix/fetchurl.nix>. This removes the need for special hacks
to handle those files.
2023-10-18 17:38:11 +02:00
Eelco Dolstra
ea38605d11
Introduce FSInputAccessor and use it
...
Backported from the lazy-trees branch. Note that this doesn't yet use
the access control features of FSInputAccessor.
2023-10-18 17:37:32 +02:00
Eelco Dolstra
3470cd68c4
Mark some fetchers as experimental
2023-10-17 14:57:29 +02:00