Eelco Dolstra
8656a2de56
Merge pull request #3269 from xzfc/nix-shell
...
nix-shell: don't check for "nix-shell" in shebang script name
2019-12-14 23:24:32 +01:00
Eelco Dolstra
ba6d2093c7
Fix progress bar
2019-12-14 23:19:04 +01:00
Albert Safin
a70706b025
nix-shell: don't check for "nix-shell" in shebang script name
2019-12-14 15:37:20 +00:00
Eelco Dolstra
ac9cc2ec08
Move some code
2019-12-13 19:10:39 +01:00
Eelco Dolstra
b4edc3ca61
Don't leak exceptions
2019-12-13 19:05:26 +01:00
Eelco Dolstra
e6bd88878e
Improve gzip error message
2019-12-13 19:05:26 +01:00
Eelco Dolstra
ca87707c90
Get rid of CBox
2019-12-13 19:05:26 +01:00
Eelco Dolstra
5a6d6da7ae
Validate tarball components
2019-12-13 19:05:26 +01:00
Eelco Dolstra
4581159e3f
Simplify tarball test
2019-12-13 17:26:58 +01:00
Eelco Dolstra
e8aa2290ed
Only install *.sb files on macOS
2019-12-13 14:42:55 +01:00
Eelco Dolstra
3e787423c2
Remove FIXME
2019-12-13 12:55:52 +01:00
Eelco Dolstra
d1b238ec3c
Simplify
2019-12-13 12:53:20 +01:00
Eelco Dolstra
2da4c61049
Merge branch 'libstore-ssh-better-exec-error-message' of https://github.com/Profpatsch/nix
2019-12-13 12:51:36 +01:00
Tom Bereknyei
c6295a3afd
Initial gzip support
...
Closes #3256
2019-12-13 03:34:15 -05:00
Profpatsch
38b29fb72c
libstore/ssh: Improve error message on failing execvp
...
If the `throw` is reached, this means that execvp into `ssh` wasn’t
successful. We can hint at a usual problem, which is a missing `ssh`
executable.
Test with:
```
env PATH= ./result/bin/nix-copy-closure --builders '' unusedhost
```
and the bash version with
```
env PATH= ./result/bin/nix-copy-closure --builders '' localhost
```
2019-12-12 15:32:17 +01:00
Eelco Dolstra
f800d450b7
Speed up StorePath::to_string()
...
1.81% -> 0.56%
2019-12-10 22:15:20 +01:00
Eelco Dolstra
f64b58b45e
Speed up base32::decode()
...
From 1.03% to 0.19% of the runtime of 'nix-instantiate "<nixpkgs>" -A
texlive.combined.scheme-full --dry-run'.
2019-12-10 22:06:05 +01:00
Eelco Dolstra
bbe97dff8b
Make the Store API more type-safe
...
Most functions now take a StorePath argument rather than a Path (which
is just an alias for std::string). The StorePath constructor ensures
that the path is syntactically correct (i.e. it looks like
<store-dir>/<base32-hash>-<name>). Similarly, functions like
buildPaths() now take a StorePathWithOutputs, rather than abusing Path
by adding a '!<outputs>' suffix.
Note that the StorePath type is implemented in Rust. This involves
some hackery to allow Rust values to be used directly in C++, via a
helper type whose destructor calls the Rust type's drop()
function. The main issue is the dynamic nature of C++ move semantics:
after we have moved a Rust value, we should not call the drop function
on the original value. So when we move a value, we set the original
value to bitwise zero, and the destructor only calls drop() if the
value is not bitwise zero. This should be sufficient for most types.
Also lots of minor cleanups to the C++ API to make it more modern
(e.g. using std::optional and std::string_view in some places).
2019-12-10 22:06:05 +01:00
Eelco Dolstra
ebd89999c2
Add StorePath tests
2019-12-10 22:04:40 +01:00
Eelco Dolstra
bca0afb943
Shut up about deprecated functions
2019-12-10 13:44:49 +01:00
Eelco Dolstra
9e565781c6
Shut up warnings
2019-12-10 13:37:23 +01:00
Eelco Dolstra
14aa0c3259
Use hyper directly instead of reqwest
2019-12-10 13:37:23 +01:00
Eelco Dolstra
a6f0bef0a7
Update to async/await-enabled tokio
2019-12-10 13:37:23 +01:00
Eelco Dolstra
7f08975050
Add NAR parser
2019-12-10 13:37:23 +01:00
Eelco Dolstra
6317f0f7a0
StorePath improvements
2019-12-10 13:37:23 +01:00
Eelco Dolstra
cce218f950
Add base32 encoder/decoder
2019-12-10 13:37:23 +01:00
Eelco Dolstra
a1ff43045b
Move stuff around
2019-12-10 13:37:23 +01:00
Eelco Dolstra
ce3c41aef0
Drop some dependencies
2019-12-10 13:37:23 +01:00
Eelco Dolstra
d832a355ea
Use rustls
...
In particular, this enables HTTP/2 support in reqwest, which is a lot
more efficient.
2019-12-10 13:37:23 +01:00
Eelco Dolstra
dd5d76e2ed
Basic BinaryCacheStore implementation using async Rust
2019-12-10 13:37:23 +01:00
Eelco Dolstra
98ef11677c
EvalState::callFunction(): Make FunctionCallTrace use less stack space
...
The FunctionCallTrace object consumes a few hundred bytes of stack
space, even when tracing is disabled. This was causing stack overflows:
$ nix-instantiate '<nixpkgs> -A texlive.combined.scheme-full --dry-run
error: stack overflow (possible infinite recursion)
This is with the default stack size of 8 MiB.
Putting the object on the heap reduces stack usage to < 5 MiB.
2019-12-10 13:32:30 +01:00
Eelco Dolstra
61cc9f34d2
Remove UserLock self-lock check
...
This is no longer needed since we're not using POSIX locks anymore.
2019-12-09 23:57:33 +01:00
Eelco Dolstra
3b9c9d34e5
Shut up clang warning
...
(cherry picked from commit 3392f1b778
)
2019-12-05 20:41:44 +01:00
Eelco Dolstra
80ab95315d
nix doctor: Fix typo
...
(cherry picked from commit 96c6b08ed7
)
2019-12-05 20:40:52 +01:00
Eelco Dolstra
47a937d512
Show hash mismatch warnings in SRI format
...
(cherry picked from commit 63c5c91cc0
)
2019-12-05 20:32:25 +01:00
Eelco Dolstra
0678e4d56a
Move #include
...
(cherry picked from commit 8beedd4486
)
2019-12-05 20:30:29 +01:00
Eelco Dolstra
79142cbbe1
Bindings: Add convenience method for requiring an attribute
...
(cherry picked from commit fb692e5f7b
)
2019-12-05 20:29:15 +01:00
Eelco Dolstra
0d118ef0c9
Bindings::get(): Add convenience method
...
This allows writing attribute lookups as
if (auto name = value.attrs->get(state.sName))
...
(cherry picked from commit f216c76c56
)
2019-12-05 20:29:00 +01:00
Eelco Dolstra
50d483a2c1
Fix precompiled-headers generation
...
It's now regenerated when util.hh changes, and is ordered after
config.h to fix a race.
2019-12-05 20:26:24 +01:00
Eelco Dolstra
5e449b43ed
Initialize Command::_name
...
(cherry picked from commit d0a769cb06
)
2019-12-05 20:21:22 +01:00
Eelco Dolstra
ac67685606
Make subcommand construction in MultiCommand lazy
...
(cherry picked from commit a0de58f471
)
2019-12-05 20:19:26 +01:00
Eelco Dolstra
f964f428fe
Move Command and MultiCommand to libutil
...
(cherry picked from commit f70434b1fb
)
2019-12-05 20:13:47 +01:00
Eelco Dolstra
f1b5c76c1a
MultiCommand: Simplify construction
...
(cherry picked from commit 15a16e5c05
)
2019-12-05 20:10:35 +01:00
Eelco Dolstra
092af3c826
Eliminate more pass-by-value in variadic calls
2019-12-05 19:58:52 +01:00
Eelco Dolstra
603b2f583c
Revert "Make fmt() non-recursive"
...
This reverts commit 2b761d5f50
.
Also *really* make fmt() take arguments by reference.
2019-12-05 19:58:49 +01:00
Eelco Dolstra
334b8f8af1
fmt(): Pass arguments by reference rather than by value
2019-12-05 17:40:46 +01:00
Eelco Dolstra
f4b9495854
Merge pull request #3255 from Profpatsch/doc-manual-allowSubstitutes-add-note
...
doc/manual: add note to `allowSubstitutes` advanced attribute
2019-12-04 12:46:31 +01:00
Eelco Dolstra
c1d18050b4
Disable recursive Nix test on macOS
...
https://hydra.nixos.org/build/107724274
2019-12-03 19:19:14 +01:00
Profpatsch
7923e22276
doc/manual: add ids to the advanced attribute definitions
...
This makes it possible to reference single attribute definitions,
for pointing people to their exact definition.
2019-12-03 18:22:27 +01:00
Profpatsch
7395e091c5
doc/manual: add note to allowSubstitutes
advanced attribute
2019-12-03 18:01:45 +01:00