Eelco Dolstra
451ebf24ce
Cache path info lookups in SQLite
...
This re-implements the binary cache database in C++, allowing it to be
used by other Store backends, in particular the S3 backend.
2016-04-20 14:12:38 +02:00
Eelco Dolstra
e0204f8d46
Move path info caching from BinaryCacheStore to Store
...
Caching path info is generally useful. For instance, it speeds up "nix
path-info -rS /run/current-system" (i.e. showing the closure sizes of
all paths in the closure of the current system) from 5.6s to 0.15s.
This also eliminates some APIs like Store::queryDeriver() and
Store::queryReferences().
2016-04-19 18:52:53 +02:00
Eelco Dolstra
d1b0909894
BinaryCacheStore::readFile(): Return a shared_ptr to a string
...
This allows readFile() to indicate that a file doesn't exist, and
might eliminate some large string copying.
2016-04-15 15:39:48 +02:00
Eelco Dolstra
f398949b40
Make LocalStore thread-safe
...
Necessary for multi-threaded commands like "nix verify-paths".
2016-04-08 18:07:13 +02:00
Eelco Dolstra
6e120b76ee
Add missing -pthread
...
https://hydra.nixos.org/build/33908385
2016-03-31 12:42:48 +02:00
Eelco Dolstra
ab3ce1cc13
Improve SIGINT handling in multi-threaded programs
...
The flag remembering whether an Interrupted exception was thrown is
now thread-local. Thus, all threads will (eventually) throw
Interrupted. Previously, one thread would throw Interrupted, and then
the other threads wouldn't see that they were supposed to quit.
2016-03-29 16:37:16 +02:00
Eelco Dolstra
784ee35c80
Add "nix verify-paths" command
...
Unlike "nix-store --verify-path", this command verifies signatures in
addition to store path contents, is multi-threaded (especially useful
when verifying binary caches), and has a progress indicator.
Example use:
$ nix verify-paths --store https://cache.nixos.org -r $(type -p thunderbird)
...
[17/132 checked] checking ‘/nix/store/rawakphadqrqxr6zri2rmnxh03gqkrl3-autogen-5.18.6’
2016-03-29 16:37:16 +02:00
Eelco Dolstra
02654f782f
Fix Darwin build
...
http://hydra.nixos.org/build/33279996
2016-03-15 12:11:27 +01:00
Eelco Dolstra
42bc395b63
Eliminate some large string copying
2016-03-04 16:49:56 +01:00
Eelco Dolstra
6055d84beb
Fix reading symlinks
...
The st_size field of a symlink doesn't have to be correct, e.g. for
/dev/fd symlinks.
2016-03-02 15:46:07 +01:00
Eelco Dolstra
89a2fa68ac
FdSource: track number of bytes read
2016-03-02 15:46:07 +01:00
Eelco Dolstra
24a8f9e27b
Merge branch 'master' into new-cli
2016-02-25 17:48:35 +01:00
Eelco Dolstra
1042c10fd0
Add NAR / Store accessor abstraction
...
This is primary to allow hydra-queue-runner to extract files like
"nix-support/hydra-build-products" from NARs in binary caches.
2016-02-25 17:43:19 +01:00
Eelco Dolstra
c5bc571861
Fix short boolean flags
2016-02-25 13:31:34 +01:00
Eelco Dolstra
f1bdeac986
Merge branch 'master' into new-cli
2016-02-25 11:25:11 +01:00
Eelco Dolstra
152b1d6bf9
deletePath(): Succeed if path doesn't exist
...
Also makes it robust against concurrent deletions.
2016-02-24 17:44:55 +01:00
Eelco Dolstra
9ccbd55c5b
BinaryCacheStore: Implement addToStore()
...
So now you can do
$ NIX_REMOTE=file:///tmp/binary-cache nix-instantiate '<nixpkgs>' -A hello
and lots of other operations.
2016-02-24 16:52:28 +01:00
Eelco Dolstra
45c83e5f9b
Typo
2016-02-24 14:49:28 +01:00
Eelco Dolstra
263187a2ec
Move BinaryCacheStore / LocalBinaryCacheStore from Hydra
...
So you can now do:
$ NIX_REMOTE=file:///tmp/binary-cache nix-store -qR /nix/store/...
2016-02-24 14:48:16 +01:00
Eelco Dolstra
bf2adf72c4
std::condition_variable_any -> std::condition_variable
...
The latter is supposed to be more efficient.
2016-02-24 13:31:46 +01:00
Eelco Dolstra
ccdbf589a4
C++ templates are just a glorified macro facility
2016-02-24 13:07:32 +01:00
Eelco Dolstra
5f862658c3
Remove bad daemon connections from the pool
...
This is necessary for long-running processes like hydra-queue-runner:
if a nix-daemon worker is killed, we need to stop reusing that
connection.
2016-02-24 11:39:56 +01:00
Eelco Dolstra
d5626bf4c1
Pool<T>: Allow a maximum pool size
2016-02-23 16:40:16 +01:00
Eelco Dolstra
e292144d46
RemoteStore: Make thread-safe
...
This allows a RemoteStore object to be used safely from multiple
threads concurrently. It will make multiple daemon connections if
necessary.
Note: pool.hh and sync.hh have been copied from the Hydra source tree.
2016-02-23 15:00:59 +01:00
Eelco Dolstra
c0b7a8a0b5
Move ref<t> into a separate header
2016-02-23 13:53:31 +01:00
Eelco Dolstra
eff5021eaa
Add xz compression function
...
This is used by the Hydra queue runner, but since it may also be
useful for the C++ rewrite of nix-push, I'm putting it here.
2016-02-15 21:45:56 +01:00
Eelco Dolstra
bfdacb712c
decompressXZ: Ensure that lzma_end() is called
...
Otherwise we might leak memory.
2016-02-15 21:26:28 +01:00
Eelco Dolstra
b3e8d72770
Merge pull request #762 from ctheune/ctheune-floats
...
Implement floats
2016-02-12 12:49:59 +01:00
Eelco Dolstra
fd205fb6f8
ref<T>: Add cast operator
2016-02-11 15:32:48 +01:00
Eelco Dolstra
cd2196b089
Start of new Nix command-line interface
2016-02-09 21:28:29 +01:00
Eelco Dolstra
0db9e6cd1a
New command line parsing infrastructure
2016-02-09 21:07:48 +01:00
Eelco Dolstra
c10c61449f
Eliminate the "store" global variable
...
Also, move a few free-standing functions into StoreAPI and Derivation.
Also, introduce a non-nullable smart pointer, ref<T>, which is just a
wrapper around std::shared_ptr ensuring that the pointer is never
null. (For reference-counted values, this is better than passing a
"T&", because the latter doesn't maintain the refcount. Usually, the
caller will have a shared_ptr keeping the value alive, but that's not
always the case, e.g., when passing a reference to a std::thread via
std::bind.)
2016-02-04 14:28:26 +01:00
Eelco Dolstra
7899fc959d
Define HashType's size to allow it to be forward-declared
2016-01-27 17:46:01 +01:00
Eelco Dolstra
739bab0be7
Trivia
2016-01-27 17:18:31 +01:00
Eelco Dolstra
d45ad8fcf5
Make hashLength32() a method of Hash
2016-01-27 17:18:20 +01:00
Eelco Dolstra
5b8c09c124
string2Int: Barf on negative numbers for unsigned types
2016-01-20 16:45:05 +01:00
Eelco Dolstra
9a4706eb19
Fix compilation
2016-01-05 14:05:11 +01:00
Eelco Dolstra
6298afc047
Merge pull request #685 from vizanto/master
...
POSIX compliant directory access (fixes build on Solaris)
2016-01-05 13:49:55 +01:00
FrankHB
607d91517e
Fixed unresolved 'BUFSIZ'
...
`BUFSIZ` is defined in header `<cstdio>`.
2016-01-05 13:33:40 +01:00
Christian Theune
14ebde5289
First hit at providing support for floats in the language.
2016-01-05 00:40:40 +01:00
Eelco Dolstra
8f67325a7c
Build sandbox support etc. unconditionally on Linux
...
Also, use "#if __APPLE__" instead of "#if SANDBOX_ENABLED" to prevent
ambiguity.
2015-12-10 11:47:17 +01:00
Danny Wilson
69b9d8fdbd
Use DT_UNKNOWN when dirent d_type extension is not supported.
...
edolstra:
“…since callers of readDirectory have to handle the possibility of
DT_UNKNOWN anyway, and we don't want to do a stat call for every
directory entry unless it's really needed.”
2015-11-25 21:57:19 +01:00
Shea Levy
1d3529e93a
Default arguments belong at declaration, not definition
2015-11-16 05:55:55 -05:00
Shea Levy
9b4cd20752
Fix copy-paste error
2015-11-16 05:54:34 -05:00
Shea Levy
58d2fac91d
AutoDelete: Add default constructor with deletion disabled
2015-11-16 05:53:10 -05:00
Eelco Dolstra
7759a56bed
Fix namespace issue
2015-11-09 21:28:25 +01:00
Danny Wilson
cdb346c65e
Fix build on Solaris
...
d_type is not part of the POSIX spec unfortunately.
2015-11-07 04:51:33 +01:00
Eelco Dolstra
6f1743b1a5
Support SHA-512 hashes
...
Fixes #679 .
Note: on x86_64, SHA-512 is considerably faster than SHA-256 (198 MB/s
versus 131 MB/s).
2015-11-04 16:37:49 +01:00
Eelco Dolstra
a6ca68a70c
Require OpenSSL
2015-11-04 16:37:49 +01:00
Eelco Dolstra
1f735a3440
<nix/fetchurl.nix>: Support xz-compressed NARs
2015-10-30 12:34:30 +01:00