Shea Levy
59124228b3
nix-channel: implement in c++
2016-08-11 11:34:43 -04:00
Vladimír Čunát
1bffd83e1a
nix-build: extend the meaning of $IN_NIX_SHELL
...
An equivalent was originally filed against the perl version:
https://github.com/NixOS/nix/pull/933
2016-08-11 17:14:09 +02:00
Eelco Dolstra
b0ebad88cd
Merge branch 'buildenv-c++' of https://github.com/shlevy/nix
2016-08-11 17:11:17 +02:00
Shea Levy
91978e3b9a
buildenv: perl -> c++
2016-08-11 07:58:33 -04:00
Eelco Dolstra
66adbdfd97
HttpBinaryCacheStore: Retry on transient HTTP errors
...
This makes us more robust against 500 errors from CloudFront or S3
(assuming the 500 error isn't cached by CloudFront...).
2016-08-10 18:08:23 +02:00
Eelco Dolstra
9204ea7294
Show HTTP error codes
2016-08-10 18:05:35 +02:00
Eelco Dolstra
f294623d1d
SQLite:: Add some convenience
2016-08-10 18:05:35 +02:00
Eelco Dolstra
6cb4bdf152
FSAccessor: Throw InvalidPath
2016-08-10 18:05:35 +02:00
Eelco Dolstra
f43823f676
NarAccessor: Fix handling of non-executable files
2016-08-10 18:05:35 +02:00
Eelco Dolstra
d961c29c9c
Mark content-addressed paths in the Nix database and in .narinfo
...
This allows such paths to be imported without signatures.
2016-08-10 18:05:35 +02:00
Eelco Dolstra
36a51ecab3
LocalFSStore::narFromPath(): Handle the diverted store case
2016-08-10 18:05:35 +02:00
Eelco Dolstra
3eb6217508
Add a "root" parameter to local stores
...
This makes it easier to create a diverted store, i.e.
NIX_REMOTE="local?root=/tmp/root"
instead of
NIX_REMOTE="local?real=/tmp/root/nix/store&state=/tmp/root/nix/var/nix" NIX_LOG_DIR=/tmp/root/nix/var/log
2016-08-10 18:05:35 +02:00
Eelco Dolstra
2fad86f361
Remove $NIX_DB_DIR
...
This variable has no reason to exist, given $NIX_STATE_DIR.
2016-08-10 18:05:35 +02:00
Eelco Dolstra
be64fbb501
RemoteStore / nix-daemon: Drop support for Nix < 1.0
2016-08-10 18:05:35 +02:00
Shea Levy
80ebc553ec
nix-build: Port to c++
...
This was a dumb line-for-line rewrite, because nix build/nix run/etc.
will replace it.
2016-08-09 07:42:20 -04:00
Eelco Dolstra
ee22a91ab8
makeFixedOutputPath(): Drop superfluous HashType argument
2016-07-26 21:25:52 +02:00
Eelco Dolstra
06bbfb6004
builtins.{fetchurl,fetchTarball}: Support a sha256 attribute
...
Also, allow builtins.{fetchurl,fetchTarball} in restricted mode if a
hash is specified.
2016-07-26 21:16:52 +02:00
Shea Levy
ee3032e4de
Merge branch 'find-runtime-roots-c++'
2016-07-24 07:33:49 -04:00
Shea Levy
18b0808475
Respect --keep-going when a substituter fails.
...
Fixes #977
2016-07-23 09:16:08 -04:00
Eelco Dolstra
d3cd0f5856
Fix assertion failure
2016-07-21 18:39:32 +02:00
Eelco Dolstra
e19c90fc6b
Fix random failures caused by CurlDownloader modifying a shared string
2016-07-21 18:35:31 +02:00
Eelco Dolstra
ea8e8df6c7
NarInfo::NarInfo(): Ensure that we get a NAR size/hash
2016-07-21 18:35:12 +02:00
Eelco Dolstra
e682a8e138
Fix assertion failure in ThreadPool::enqueue()
2016-07-21 18:14:16 +02:00
Eelco Dolstra
d57981bac4
Store::queryMissing(): Use a thread pool
...
For one particular NixOS configuration, this cut the runtime of
"nix-store -r --dry-run" from 6m51s to 3.4s. It also fixes a bug in
the size calculation that was causing certain paths to be counted
twice, e.g. before:
these paths will be fetched (1249.98 MiB download, 2995.74 MiB unpacked):
and after:
these paths will be fetched (1219.56 MiB download, 2862.17 MiB unpacked):
2016-07-21 17:50:39 +02:00
Eelco Dolstra
a728780fbd
Store::computeFSClosure(): Use thread pool
...
This speeds up queries against the binary cache.
2016-07-21 14:13:35 +02:00
Shea Levy
3c46fe62b8
find-runtime-roots: fold into gc.cc
2016-07-21 07:04:41 -04:00
Shea Levy
06068b353d
FdSink: Restore move constructor/assignment
2016-07-13 06:27:41 -04:00
Shea Levy
b33e85229d
Make Buffered{Source,Sink} move-safe
2016-07-13 06:03:37 -04:00
Shea Levy
cb5e7254b6
Modernize AutoCloseFD
2016-07-11 15:44:44 -04:00
Eelco Dolstra
74dd603495
Re-implement negative binary cache lookup caching
2016-06-20 17:39:05 +02:00
Eelco Dolstra
c68e5913c7
Run builds in a user namespace
...
This way, all builds appear to have a uid/gid of 0 inside the
chroot. In the future, this may allow using programs like
systemd-nspawn inside builds, but that will require assigning a larger
UID/GID map to the build.
Issue #625 .
2016-06-09 18:30:39 +02:00
Eelco Dolstra
202683a4fc
Use O_CLOEXEC in most places
2016-06-09 16:37:08 +02:00
Eelco Dolstra
9bdd949cfd
Fix "creating statement: table ValidPaths has no column named ultimate"
2016-06-03 16:06:42 +02:00
Eelco Dolstra
5e51ffb1c2
Support sandbox builds by non-root users
...
This allows an unprivileged user to perform builds on a diverted store
(i.e. where the physical store location differs from the logical
location).
Example:
$ NIX_LOG_DIR=/tmp/log NIX_REMOTE="local?real=/tmp/store&state=/tmp/var" nix-build -E \
'with import <nixpkgs> {}; runCommand "foo" { buildInputs = [procps nettools]; } "id; ps; ifconfig; echo $out > $out"'
will do a build in the Nix store physically in /tmp/store but
logically in /nix/store (and thus using substituters for the latter).
2016-06-03 15:59:28 +02:00
Eelco Dolstra
2f8b0e557b
Consistent quotes
2016-06-03 14:03:09 +02:00
Eelco Dolstra
080d607975
Don't call shared_from_this() from a destructor
2016-06-03 14:02:44 +02:00
Eelco Dolstra
30c8c3ba2d
Fix some more references to storeDir
2016-06-03 14:02:44 +02:00
Eelco Dolstra
a8dfdc52b8
Merge pull request #925 from abbradar/master
...
Show both cycle ends
2016-06-03 13:58:51 +02:00
Nikolay Amiantov
c87a56f4d0
Show both cycle ends
2016-06-03 14:25:37 +03:00
Eelco Dolstra
75361b6dce
Fix narrowing conversion from int64_t to bool
...
http://hydra.nixos.org/build/36613774
2016-06-03 13:20:46 +02:00
Eelco Dolstra
f8a8b4d8f8
nix run: Set a reasonable uid/gid
2016-06-02 19:04:09 +02:00
Eelco Dolstra
d64e0c1b64
Make derivationFromPath work on diverted stores
2016-06-02 18:43:36 +02:00
Eelco Dolstra
eda2aaae92
nix run: Handle the case where the /nix/store mount point doesn't exist
2016-06-02 18:24:51 +02:00
Eelco Dolstra
a424ab0444
createTempDir(): Don't do a chown on Linux
...
It's not needed and can cause problems in a user namespace.
2016-06-02 18:17:30 +02:00
Eelco Dolstra
a24f2c9b84
nix run: Mount the Nix store in a private namespace
...
This is a convenience command to allow users who are not privileged to
create /nix/store to use Nix with regular binary caches. For example,
$ NIX_REMOTE="local?state=$HOME/nix/var&real=/$HOME/nix/store" nix run firefox bashInteractive
will download Firefox and bash from cache.nixos.org, then start a
shell in which $HOME/nix/store is mounted on /nix/store.
2016-06-02 16:51:43 +02:00
Eelco Dolstra
6f2d51287c
Add basic "nix run" command
2016-06-02 16:29:49 +02:00
Eelco Dolstra
4494000e04
LocalStore: Allow the physical and logical store directories to differ
...
This is primarily to subsume the functionality of the
copy-from-other-stores substituter. For example, in the NixOS
installer, we can now do (assuming we're in the target chroot, and the
Nix store of the installation CD is bind-mounted on /tmp/nix):
$ nix-build ... --option substituters 'local?state=/tmp/nix/var&real=/tmp/nix/store'
However, unlike copy-from-other-stores, this also allows write access
to such a store. One application might be fetching substitutes for
/nix/store in a situation where the user doesn't have sufficient
privileges to create /nix, e.g.:
$ NIX_REMOTE="local?state=/home/alice/nix/var&real=/home/alice/nix/store" nix-build ...
2016-06-02 16:02:48 +02:00
Eelco Dolstra
064816ab98
Respect build-use-substitutes
2016-06-02 16:02:48 +02:00
Eelco Dolstra
812c0dfbe2
Allow setting the state directory as a store parameter
...
E.g. "local?store=/tmp/store&state=/tmp/var".
2016-06-02 16:02:48 +02:00
Eelco Dolstra
f2682e6e18
<nix/fetchurl.nix>: Use tarballs.nixos.org
...
This ensures that the disappearance of upstream bootstrap tarballs
(e.g. https://github.com/NixOS/nixpkgs-channels/pull/1 ) doesn't break
stdenv rebuilds.
2016-06-01 17:11:51 +02:00
Eelco Dolstra
dead8189ac
Typo
2016-06-01 16:56:22 +02:00
Eelco Dolstra
e24e2caaaf
Skip substituters with an incompatible store directory
2016-06-01 16:40:49 +02:00
Eelco Dolstra
cf198952d0
HttpBinaryCacheStore: Fix caching of WantMassQuery
...
Also, test HttpBinaryCacheStore in addition to LocalBinaryCacheStore.
2016-06-01 16:24:17 +02:00
Eelco Dolstra
7850d3d279
Make the store directory a member variable of Store
2016-06-01 16:24:17 +02:00
Eelco Dolstra
a9fa5e050a
Shut up some clang warnings
2016-05-31 13:31:04 +02:00
Eelco Dolstra
10f3a2e5f2
Fix clang build failure
...
Apparently opinion is divided on whether [[noreturn]] is allowed on a
lambda: http://stackoverflow.com/questions/26888805/how-to-declare-a-lambdas-operator-as-noreturn
http://hydra.nixos.org/build/36462100
2016-05-31 13:23:54 +02:00
Eelco Dolstra
c2d27d30cf
nix-copy-closure / build-remote.pl: Disable signature checking
...
This restores the Nix 1.11 behaviour.
2016-05-31 11:48:05 +02:00
Dmitry Kalinkin
78b00bbd8a
use $(LIBLZMA_LIBS) instead of -llzma
...
This is needed in case of non-standard lzma installation path that will
be specified in pkgconfig manifest as extra -L option for LDFLAGS.
2016-05-31 03:20:11 -04:00
Eelco Dolstra
cd35f0280c
Fix build
2016-05-30 16:12:50 +02:00
Eelco Dolstra
57d33013ce
Check signatures before downloading the substitute
2016-05-30 15:18:12 +02:00
Eelco Dolstra
bac123ddd9
Test the NAR info cache
2016-05-30 15:18:12 +02:00
Eelco Dolstra
3593c8285d
Re-implement binary cache signature checking
...
This is now done in LocalStore::addToStore(), rather than in the
binary cache substituter (which no longer exists).
2016-05-30 15:18:12 +02:00
Eelco Dolstra
12ddbad458
LocalStore::addToStore: Verify hash of the imported path
2016-05-30 15:18:12 +02:00
Eelco Dolstra
e222484401
Re-implement the WantMassQuery property of binary caches
2016-05-30 15:18:12 +02:00
Eelco Dolstra
b66ab6cdbc
Fix repair during substitution
2016-05-30 15:18:12 +02:00
Eelco Dolstra
3be2e71ab3
BinaryCacheStore: Remove buildPaths() / ensurePath()
2016-05-30 15:18:12 +02:00
Eelco Dolstra
75d2492f20
Make the aws-cpp-sdk dependency optional
2016-05-04 17:16:48 +02:00
Eelco Dolstra
6c75cf69c3
Cleanup: Remove singleton()
2016-05-04 16:16:53 +02:00
Eelco Dolstra
0d4a10e910
Do compression in a sink
2016-05-04 16:16:53 +02:00
Eelco Dolstra
c6a21aed07
More GC fixes
2016-05-04 16:16:53 +02:00
Eelco Dolstra
538a64e8c3
Add a Store::addToStore() variant that accepts a NAR
...
As a side effect, this ensures that signatures are propagated when
copying paths between stores.
Also refactored import/export to make use of this.
2016-05-04 16:15:54 +02:00
Eelco Dolstra
b6c768fb6a
nix-daemon: Fix queryPathInfo() backward compatibility
2016-05-04 12:53:24 +02:00
Eelco Dolstra
33de2bc080
Fix segfault in xz compression/decompression
2016-05-04 11:50:12 +02:00
Eelco Dolstra
f435f82475
Remove OpenSSL-based signing
2016-05-04 11:01:48 +02:00
Eelco Dolstra
dfebfc835f
Add a copyStorePath() utility function
2016-05-04 11:01:48 +02:00
Eelco Dolstra
d8bf0d4859
Support Git repos in the Nix path
...
E.g.
$ nix-build -I nixpkgs=git://github.com/NixOS/nixpkgs '<nixpkgs>' -A hello
This is not extremely useful yet because you can't specify a
branch/revision.
2016-04-29 21:07:47 +02:00
Eelco Dolstra
38539b943a
Add fetchgit builtin
...
The function builtins.fetchgit fetches Git repositories at evaluation
time, similar to builtins.fetchTarball. (Perhaps the name should be
changed, being confusing with respect to Nixpkgs's fetchgit function,
with works at build time.)
Example:
(import (builtins.fetchgit git://github.com/NixOS/nixpkgs) {}).hello
or
(import (builtins.fetchgit {
url = git://github.com/NixOS/nixpkgs-channels;
rev = "nixos-16.03";
}) {}).hello
Note that the result does not contain a .git directory.
2016-04-29 20:47:36 +02:00
Eelco Dolstra
83258225e6
nix-store -l: Simplify implementation
2016-04-29 17:47:03 +02:00
Eelco Dolstra
4dde0b0562
BinaryCacheStore: Support bzip2 compression
2016-04-29 17:43:37 +02:00
Eelco Dolstra
6963de2091
nix verify --all: Support local binary caches
2016-04-29 17:34:31 +02:00
Eelco Dolstra
0dd988d2e3
Better error message
2016-04-29 17:33:22 +02:00
Eelco Dolstra
5acb691402
BinaryCacheStore: Support "none" compression method
2016-04-29 17:02:57 +02:00
Eelco Dolstra
8e065c6b3e
BinaryCacheStore: Make the signing key a parameter
2016-04-29 16:47:20 +02:00
Eelco Dolstra
f6aee2f477
BinaryCacheStore::queryPathInfo: Don't check signatures
...
Other stores don't do this either. It's up to the caller to check
signatures.
2016-04-29 16:28:57 +02:00
Eelco Dolstra
95d20dfde9
Allow parameters in store URIs
...
This is to allow store-specific configuration,
e.g. s3://my-cache?compression=bzip2&secret-key=/path/to/key.
2016-04-29 16:26:16 +02:00
Eelco Dolstra
aa3bc3d5dc
Eliminate the substituter mechanism
...
Substitution is now simply a Store -> Store copy operation, most
typically from BinaryCacheStore to LocalStore.
2016-04-29 13:57:08 +02:00
Eelco Dolstra
21e9d183cc
Really handle carriage return
2016-04-28 14:27:00 +02:00
Eelco Dolstra
ce5776758d
Fix error message
2016-04-28 14:12:10 +02:00
Eelco Dolstra
cc804d0dc6
Handle carriage return
2016-04-25 19:18:45 +02:00
Eelco Dolstra
ca9de88a51
nix: Disable verbose builds
2016-04-25 19:18:45 +02:00
Eelco Dolstra
5761827d5b
Show the log tail when a build fails
...
If --no-build-output is given (which will become the default for the
"nix" command at least), show the last 10 lines of the build output if
the build fails.
2016-04-25 19:18:45 +02:00
Eelco Dolstra
6e1b099279
Remove --print-build-trace
...
This was added to support Hydra, but Hydra no longer uses it.
2016-04-25 19:18:45 +02:00
Eelco Dolstra
9eba2c3945
Fix "path is not in the Nix store" during GC
2016-04-25 19:18:45 +02:00
Eelco Dolstra
697e0b3a6f
Remove nix-log2xml
2016-04-25 19:18:45 +02:00
Eelco Dolstra
41633f9f73
Improved logging abstraction
...
This also gets rid of --log-type, since the nested log type isn't
useful in a multi-threaded situation, and nobody cares about the
"pretty" log type.
2016-04-25 19:18:45 +02:00
Eelco Dolstra
c879a20850
Factor out parallel processing of work items that have dependencies
2016-04-22 20:50:06 +02:00
Eelco Dolstra
91539d305f
nix copy: Parallelise
2016-04-22 18:19:48 +02:00
Eelco Dolstra
b2ce6fde5a
ThreadPool: Start doing work as soon as work items are enqueued
2016-04-22 18:19:17 +02:00
Eelco Dolstra
58c84cda3b
Make compression interruptible
2016-04-22 18:15:02 +02:00
Eelco Dolstra
456179018a
Fold "nix query-path-sigs" into "nix path-info"
2016-04-22 14:39:37 +02:00