Carlo Nucera
d49e65ba9d
Merge remote-tracking branch 'john-ericson/enum-FileIngestionMethod' into no-stringly-typed-derivation-output
2020-05-26 12:30:48 -04:00
Eelco Dolstra
7898cdb75a
make check: Run unit tests
2020-05-08 11:49:40 +02:00
John Ericson
e433d4af4c
Extend Rust FFI
...
Do idiomatic C++ copy and move constructors for a few things, so
wrapping structs' defaults can work.
2020-03-25 16:12:14 -04:00
Leonhard Markert
1b56de8cd1
Remove macro_use
...
As of Rust 2018, macro_use is no longer required in most circumstances.
I think it is generally a good idea to remove these when not needed, to
stop them from polluting the crate's global namespace.
https://doc.rust-lang.org/edition-guide/rust-2018/macros/macro-changes.html#macro_rules-style-macros
2020-02-10 09:03:24 +01:00
Eelco Dolstra
ee235e764c
Merge branch 'libarchive' of https://github.com/yorickvP/nix
2019-12-19 14:47:18 +01:00
Eelco Dolstra
14d82baba4
StorePath::new(): Check store directory
2019-12-16 17:41:56 +01:00
Eelco Dolstra
410acd29c0
Fix cargo test
2019-12-15 10:47:59 +01:00
Eelco Dolstra
b4edc3ca61
Don't leak exceptions
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
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
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
b232eea40a
nix-rust: remove unused tar file code
2019-12-09 17:28:15 +07:00
Eelco Dolstra
39954a9586
Make libnixrust a dynamic library
...
This is a hack to fix the build on macOS, which was failing because
libnixrust.a contains compiler builtins that clash with
libclang_rt.osx.a. There's probably a better solution...
https://hydra.nixos.org/build/107473280
2019-11-29 18:30:39 +01:00
Eelco Dolstra
895ce1bb6c
make clean: Delete nix-rust/target
2019-11-27 17:33:59 +01:00
Eelco Dolstra
f553a8bdea
When OPTIMIZE=0, build rust code in debug mode
2019-11-27 14:18:57 +01:00
Eelco Dolstra
dbc4f9d478
Fix macOS build
...
https://hydra.nixos.org/build/107466992
2019-11-27 00:17:39 +01:00
Eelco Dolstra
e6c1d1b474
Update Cargo.lock
2019-11-26 22:46:36 +01:00
Eelco Dolstra
88f8063917
-Z offline -> --offline
2019-11-26 22:45:15 +01:00
Eelco Dolstra
f2bd847092
Ignore tar header entries
...
In particular, these are emitted by 'git archive' (in fetchGit).
2019-11-26 22:07:28 +01:00
Eelco Dolstra
d33dd6e6c0
Move code around
2019-11-26 22:07:28 +01:00
Eelco Dolstra
d14b1c261c
Shut up some rust warnings
2019-11-26 22:07:28 +01:00
Eelco Dolstra
f738cd4d97
More Rust FFI adventures
...
We can now convert Rust Errors to C++ exceptions. At the Rust->C++ FFI
boundary, Result<T, Error> will cause Error to be converted to and
thrown as a C++ exception.
2019-11-26 22:07:28 +01:00
Eelco Dolstra
8110b4ebb2
Rust cleanup
2019-11-26 22:07:28 +01:00
Eelco Dolstra
343ebcc048
Only pass '-Z offline' to cargo if we have a vendor directory
2019-11-26 22:07:28 +01:00
Eelco Dolstra
d722e2175e
Include cargo dependencies in the Nix tarball
2019-11-26 22:07:28 +01:00
Eelco Dolstra
0dbb249b36
Update Rust dependencies
2019-11-26 22:07:28 +01:00
Eelco Dolstra
045708db43
Make <nix/unpack-channel.nix> a builtin builder
...
This was the last function using a shell script, so this allows us to
get rid of tar, coreutils, bash etc.
2019-11-26 22:07:28 +01:00
Eelco Dolstra
e60f6bd4ce
Enable Rust code to call C++ Source objects
2019-11-26 22:07:28 +01:00
Eelco Dolstra
11da5b2816
Add some Rust code
2019-11-26 22:07:28 +01:00