Eelco Dolstra
941f95284a
Merge remote-tracking branch 'origin/master' into flakes
2020-05-01 11:59:56 +02:00
Maximilian Bosch
d1229859c2
Fix displaying error-position in builtins.fetch{Tree,Tarball}
...
Without dereferencing this pointer, you'd get an error like this:
```
error: unsupported argument 'abc' to 'fetchTarball', at 0x13627e8
```
2020-04-29 22:53:39 +02:00
Ben Burdette
e2f61263eb
uncrustify formatting
2020-04-29 10:14:32 -06:00
Eelco Dolstra
6521c92ce8
Improve path:// handling
...
In particular, doing 'nix build /path/to/dir' now works if
/path/to/dir is not a Git tree (it only has to contain a flake.nix
file).
Also, 'nix flake init' no longer requires a Git tree (but it will do a
'git add flake.nix' if it's a Git tree)
2020-04-27 22:53:11 +02:00
Eelco Dolstra
b4e23dcd9e
nix search: Search legacyPackages recursively
2020-04-27 16:29:26 +02:00
Eelco Dolstra
ef4d3fc111
Merge remote-tracking branch 'origin/master' into flakes
2020-04-23 15:16:18 +02:00
Ben Burdette
3bc9155dfc
a few more 'format's rremoved
2020-04-22 15:00:11 -06:00
Ben Burdette
e4fb9a3849
remove 'format' from Error constructor calls
2020-04-21 17:07:07 -06:00
Eelco Dolstra
8c75621da6
Fix typo
2020-04-20 15:28:56 +02:00
Eelco Dolstra
42a12f9232
Move eval-cache.{cc,hh}
2020-04-20 13:14:59 +02:00
Eelco Dolstra
539a9c1c5f
Get rid of the old eval cache
2020-04-20 13:13:52 +02:00
Domen Kožar
25ed842725
Merge pull request #3502 from NixOS/more-pos
...
pass Pos to forceValue to improve infinite recursion error
2020-04-18 14:05:21 +02:00
Eelco Dolstra
aaa109565e
Use a more space/time-efficient representation for the eval cache
2020-04-17 23:04:21 +02:00
Eelco Dolstra
12b7eefbc5
nix flake show: Use evaluation cache
2020-04-17 01:02:29 +02:00
Eelco Dolstra
c277231b7d
Use RootValue
2020-04-16 18:33:34 +02:00
Eelco Dolstra
f89349f07e
Merge remote-tracking branch 'origin/master' into flakes
2020-04-16 18:33:10 +02:00
Eelco Dolstra
fcd048a526
Use RootValue
2020-04-16 18:02:59 +02:00
Eelco Dolstra
9f46f54de4
JSONSax: Use a RootValue
...
More #3377 .
2020-04-16 17:30:18 +02:00
Eelco Dolstra
10e17eaa58
ValueMap, VectorVector: Use traceable_allocator
...
We want to *trace* the 'Value *' arrays, not garbage-collect them!
Otherwise the vectors/maps can end up pointing to nowhere.
Fixes #3377 . Closes #3384 .
2020-04-16 17:30:13 +02:00
Eelco Dolstra
b3e5eea4a9
Add function to allocate a Value in traceable memory
2020-04-16 17:30:05 +02:00
Eelco Dolstra
1290411c2d
fetchMercurial: Use inputFromAttrs()
2020-04-16 17:29:30 +02:00
Domen Kožar
b865b5b40c
pass Pos to forceValue to improve infinite recursion error
2020-04-16 12:32:07 +02:00
Eelco Dolstra
c0c2cb871d
Merge remote-tracking branch 'origin/master' into flakes
2020-04-14 13:02:55 +02:00
Domen Kožar
fc144242d5
Merge pull request #3447 from DavHau/improve-tofile-error-msg
...
improve toFile error message when containing potential drv path
2020-04-11 13:12:11 +02:00
DavHau
fc14213d2d
improve toFile error message when containing potential drv path
2020-04-11 10:54:26 +00:00
Eelco Dolstra
e5ea01c1a8
Remove flake 'edition' field
...
Future editions of flakes or the Nix language can be supported by
renaming flake.nix (e.g. flake-v2.nix). This avoids a bootstrap
problem where we don't know which grammar to use to parse
flake*.nix. It also allows a project to support multiple flake
editions, in theory.
2020-04-10 10:24:09 +02:00
Eelco Dolstra
d103c79144
Merge remote-tracking branch 'origin/master' into flakes
2020-04-09 15:54:21 +02:00
Domen Kožar
a693a9fa4b
Attach pos to if expression errors
2020-04-09 09:45:15 +02:00
Nikola Knezevic
7867685dcd
after flake rebase
2020-04-08 22:26:57 +02:00
Nikola Knezevic
f5095594e7
datatransfer.{cc,hh} -> filetransfer.{cc,hh}
2020-04-08 22:26:57 +02:00
Nikola Knezevic
c4c1ae0a00
DownloadError -> DataTransferError
2020-04-08 22:26:57 +02:00
Nikola Knezevic
741e9012d3
Rename src/lib/download.* to src/lib/datatransfer.*
2020-04-08 22:26:57 +02:00
Eelco Dolstra
9ed097db7b
Merge pull request #3468 from Infinisil/functionArgsPositions
...
Make function arguments retain position info
2020-04-08 15:29:39 +02:00
Eelco Dolstra
03a4a3c95c
Merge branch 'flakes' of github.com:NixOS/nix into flakes
2020-04-07 14:30:25 +02:00
Eelco Dolstra
54955867a6
Merge remote-tracking branch 'origin/master' into flakes
2020-04-07 14:29:45 +02:00
Eelco Dolstra
55cefd41d6
Merge branch 'fetchgit-recursive' of https://github.com/blitz/nix
2020-04-07 13:45:17 +02:00
Eelco Dolstra
462421d345
Backport libfetchers from the flakes branch
...
This provides a pluggable mechanism for defining new fetchers. It adds
a builtin function 'fetchTree' that generalizes existing fetchers like
'fetchGit', 'fetchMercurial' and 'fetchTarball'. 'fetchTree' takes a
set of attributes, e.g.
fetchTree {
type = "git";
url = "https://example.org/repo.git ";
ref = "some-branch";
rev = "abcdef...";
}
The existing fetchers are just wrappers around this. Note that the
input attributes to fetchTree are the same as flake input
specifications and flake lock file entries.
All fetchers share a common cache stored in
~/.cache/nix/fetcher-cache-v1.sqlite. This replaces the ad hoc caching
mechanisms in fetchGit and download.cc (e.g. ~/.cache/nix/{tarballs,git-revs*}).
This also adds support for Git worktrees (c169ea5904
).
2020-04-07 09:03:14 +02:00
Eelco Dolstra
68b43e01dd
nix flake info: Show resolved URL
...
This is useful for finding out what a registry lookup resolves to, e.g
$ nix flake info patchelf
Resolved URL: github:NixOS/patchelf
Locked URL: github:NixOS/patchelf/cd7955af31698c571c30b7a0f78e59fd624d0229
2020-04-06 14:56:13 +02:00
Eelco Dolstra
6e7f252ea6
Make --override-input sticky
...
When we do something like 'nix flake update --override-input nixpkgs
...', the override is now kept on subsequent calls. (If you don't want
this behaviour, you can use --no-write-lock-file.)
2020-04-03 14:06:29 +02:00
Eelco Dolstra
9c78f7f196
getFlake: In pure mode, check that the argument is an immutable flakeref
2020-04-03 13:07:05 +02:00
Eelco Dolstra
a6ff66b658
Respect the narHash attribute in more input types
...
call-flake.nix now passes node.info.narHash to fetchTree. This ensures
that dirty Git trees work even in pure mode.
2020-04-02 19:04:33 +02:00
Eelco Dolstra
e1fc9f6690
Improve error message
2020-04-02 19:03:32 +02:00
Eelco Dolstra
ab47868639
Change lastModified to the number of seconds in the epoch
...
'lastModifiedDate' is now a string representing the equivalent
date/time.
2020-04-02 18:39:41 +02:00
Eelco Dolstra
6d6467d376
Move parseTreeInfo()
2020-04-02 18:26:39 +02:00
Andreas Rammhold
4fc4eb6c93
libexpr: remove unused attrError
...
The attrError variable is no longer used but still allocated on every
call to the findAlongAttrPath function.
2020-04-02 17:04:00 +02:00
Eelco Dolstra
6cf91d6fbd
fetchTree: Support integer attributes
2020-04-02 16:51:56 +02:00
Eelco Dolstra
ed13457dbf
nix flake info --json: Show TreeInfo
2020-04-02 11:51:34 +02:00
Silvan Mosberger
c34e96f7e0
Make function arguments retain position info
...
This allows querying the location of function arguments. E.g.
builtins.unsafeGetAttrPos "x" (builtins.functionArgs ({ x }: null))
=> { column = 57; file = "/home/infinisil/src/nix/inst/test.nix"; line = 1; }
2020-04-02 05:52:52 +02:00
John Ericson
7e9a2718f0
s/outputHashRecursive/ingestionMethod/c
2020-03-30 22:36:15 +00:00
John Ericson
51afea3af2
Never cast FileIngestionMethod
to or from boolean
2020-03-30 22:31:51 +00:00
John Ericson
c251b011cd
Merge remote-tracking branch 'upstream/master' into enum-FileIngestionMethod
2020-03-30 18:16:44 -04:00
John Ericson
bbbb7c1bc7
Use auto
with some FileIngestionMethod
local variables
2020-03-30 18:15:55 -04:00
Eelco Dolstra
e322a16523
Remove global -I flags
...
(cherry picked from commit 2c692a3b14
)
2020-03-30 15:30:19 +02:00
Eelco Dolstra
2c692a3b14
Remove global -I flags
2020-03-30 14:39:33 +02:00
Eelco Dolstra
e0a0ae0467
Move fetchers from libstore to libfetchers
2020-03-30 14:04:53 +02:00
Julian Stecklina
40c023ecfe
fetchGit: don't use std::filesystem to filter git repos
...
Using std::filesystem means also having to link with -lstdc++fs on
some platforms and it's hard to discover for what platforms this is
needed. As all the functionality is already implemented as utilities,
use those instead.
2020-03-30 00:32:42 +02:00
Bjørn Forsman
f686efeed4
fetchGit: fix submodule corner case by fetching all refs from cacheDir
...
Due to fetchGit not checking if rev is an ancestor of ref (there is even
a FIXME comment about it in the code), the cache repo might not have the
ref even though it has the rev. This doesn't matter when submodule =
false, but the submodule = true code blows up because it tries to fetch
the (missing) ref from the cache repo.
Fix this in the simplest way possible: fetch all refs from the local
cache repo when submodules = true.
TODO: Add tests.
2020-03-29 22:29:58 +02:00
Bjørn Forsman
cc522d0d23
fetchGit: fix submodules = true for dirty trees
2020-03-29 22:29:58 +02:00
Bjørn Forsman
b306b7039e
fetchGit: checkout rev instead of latest ref
...
Major bugfix for the submodules = true code path.
TODO: Add tests.
2020-03-29 22:29:58 +02:00
Bjørn Forsman
369fffd6f1
fetchGit: add submodules attribute to the .link file
...
The .link file is used as a lock, so I think we should put the
"submodule" attribute in there since turning on submodules creates a new
.link file path.
2020-03-29 22:29:58 +02:00
Bjørn Forsman
6864ad7cf5
fetchGit: fix submodule output attribute
...
Before this change it would be false for all evaluations but the first.
Now it follows the input argument (as it should).
2020-03-29 22:29:58 +02:00
Bjørn Forsman
002a3a95dc
fetchGit: fix "fatal: couldn't find remote ref refs/heads/master" issue with submodules
2020-03-29 22:29:58 +02:00
Julian Stecklina
cc4fe977e5
Link to stdc++fs
...
Some platforms seem to still require linking with stdc++fs to enable
STL std::filesystem support.
2020-03-29 22:29:58 +02:00
Julian Stecklina
435366ed3c
Rename fetchGit fetchSubmodules to just submodules
2020-03-29 22:29:58 +02:00
Julian Stecklina
c8d33de777
Add git submodule fixes from @bjornfor
...
This fixes fetching repositories with no submodules and also cleans up
.git files in checkouts.
2020-03-29 22:29:57 +02:00
Julian Stecklina
f58604ac32
Add fetchSubmodules to builtins.fetchGit
...
There are some downsides to this features:
- Submodules are not cached (unlike the root repo),
- Full checkouts are created in a temporary directory.
2020-03-29 22:29:57 +02:00
John Ericson
225e62a56a
Replace some bool recursive
with a new FileIngestionMethod
enum
2020-03-29 15:16:20 -04:00
Eelco Dolstra
2fccef0c59
Warn about --override-input / --update-input flags that don't match an input
2020-03-28 19:09:36 +01:00
Eelco Dolstra
2287e2f279
nix flake info: Show flake subdirectory
2020-03-28 18:05:50 +01:00
Eelco Dolstra
015f8f1c13
Improve lock file generation
...
This is now done in a single pass. Also fixes some issues when
updating flakes with circular dependencies. Finally, when using
'--recreate-lock-file --commit-lock-file', the commit message now
correctly shows the differences.
2020-03-27 21:08:41 +01:00
Eelco Dolstra
3fa1e7dace
Fix diffLockFiles()
2020-03-27 16:15:50 +01:00
Eelco Dolstra
0a10854f85
Misc changes from the flakes branch
2020-03-24 14:34:47 +01:00
Eelco Dolstra
76e7d958ed
Fix coverage build
...
https://hydra.nixos.org/build/110757285
(cherry picked from commit b430a81a1f
)
2020-03-24 14:06:47 +01:00
Eelco Dolstra
231a8aa2c2
nix edit: Support non-derivation attributes
...
E.g.
$ nix edit .#nixosConfigurations.bla
now works.
(cherry picked from commit d2032edb2f
)
2020-03-24 14:06:47 +01:00
Eelco Dolstra
c1ca4f0acc
findAlongAttrPath(): Return position
...
(cherry picked from commit 0b013a54dc
)
2020-03-24 14:06:47 +01:00
Eelco Dolstra
1eb952d27a
findAlongAttrPath(): Throw AttrPathNotFound
...
(cherry picked from commit 6b0ca8e803
)
2020-03-24 14:06:47 +01:00
Eelco Dolstra
c34a20e1f6
EvalState::allocAttr(): Add convenience method
...
(cherry picked from commit c02da99757
)
2020-03-24 13:26:37 +01:00
Eelco Dolstra
1537e270fb
Merge remote-tracking branch 'origin/master' into flakes
2020-03-20 13:15:11 +01:00
Eelco Dolstra
f6ddf48882
Get rid of downloadCached()
...
Everything uses the generic caching system now.
2020-03-18 17:24:19 +01:00
Eelco Dolstra
d1165d8791
Require shallow clones to be requested explicitly
...
If you do a fetchTree on a Git repository, whether the result contains
a revCount attribute should not depend on whether that repository
happens to be a shallow clone or not. That would complicate caching a
lot and would be semantically messy. So applying fetchTree/fetchGit to
a shallow repository is now an error unless you pass the attribute
'shallow = true'. If 'shallow = true', we don't return revCount, even
if the repository is not actually shallow.
Note that Nix itself is not doing shallow clones at the moment. But it
could do so as an optimisation if the user specifies 'shallow = true'.
Issue #2988 .
2020-03-17 22:35:29 +01:00
Eelco Dolstra
2a4e4f6a6e
Unified fetcher caching system
2020-03-17 22:35:29 +01:00
Eelco Dolstra
fbcb897e21
Add a test for shallow Git clones
...
Also, don't return a revCount anymore for shallow or dirty Git trees,
since it's incorrect.
Closes #2988 .
2020-03-16 13:20:32 +01:00
John Ericson
68fe0d9809
Add missing #include <regex>
2020-03-13 21:24:35 -04:00
Eelco Dolstra
ae9119167e
Change the lock file to a graph
...
This enables support for cycles between flakes.
2020-03-12 22:06:57 +01:00
Eelco Dolstra
e188fe7c6d
Move call-flake.nix into libexpr
2020-03-11 17:04:51 +01:00
Eelco Dolstra
35f6651735
Merge remote-tracking branch 'origin/master' into flakes
2020-03-11 17:03:38 +01:00
Eelco Dolstra
9950cdec35
Move some corepkgs into the nix binary
2020-03-11 16:57:48 +01:00
Eelco Dolstra
e02481ded2
parseExprFromString(): Use std::string_view
2020-03-11 16:56:29 +01:00
Eelco Dolstra
cfc38257cf
Fix flake subdirectory handling
2020-03-10 19:21:47 +01:00
Eelco Dolstra
73769b28e3
Move calling flakes into a Nix helper function (call-flake.nix)
2020-03-09 15:28:41 +01:00
Eelco Dolstra
5a1514adb8
Add 'flake' attribute to lock files to denote non-flakes
2020-03-09 15:27:49 +01:00
Eelco Dolstra
73b6d87e17
Merge remote-tracking branch 'origin/master' into flakes
2020-03-04 13:58:42 +01:00
Eelco Dolstra
401b5bc541
builtins.cache: Cache regular expressions
...
The evaluator was spending about 1% of its time compiling a small
number of regexes over and over again.
2020-03-04 11:44:33 +01:00
Eelco Dolstra
73c9840569
Restore subdir -> dir
...
Got this mixed up somewhere.
2020-02-20 23:44:06 +01:00
Eelco Dolstra
d068f9ffff
Restore subdir support in registries
...
Hacky...
2020-02-20 22:14:44 +01:00
Eelco Dolstra
890df325c7
fetchTree: Use a feature flag
2020-02-20 13:36:16 +01:00
Eelco Dolstra
46a284263f
Fix build
2020-02-14 22:45:33 +01:00
Eelco Dolstra
6208d24c38
Merge remote-tracking branch 'origin/master' into flakes
2020-02-14 22:42:35 +01:00
Eelco Dolstra
9af10b753c
Bindings::get(): std::optional<Attr *> -> Attr *
...
Returning a nullable type in an optional is silly.
2020-02-13 17:15:05 +01:00
Eelco Dolstra
26dacc0983
Add fetchTree builtin function
...
This allows all supported fetchers to be used, e.g.
builtins.fetchTree {
type = "github";
owner = "NixOS";
repo = "nix";
rev = "d4df99a3349cf2228a8ee78dea320afef86eb3ba";
}
2020-02-11 23:53:46 +01:00