aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/globals.hh
AgeCommit message (Collapse)Author
2015-04-18Add the pre-build hook.Shea Levy
This hook can be used to set system-specific per-derivation build settings that don't fit into the derivation model and are too complex or volatile to be hard-coded into nix. Currently, the pre-build hook can only add chroot dirs/files through the interface, but it also has full access to the chroot root. The specific use case for this is systems where the operating system ABI is more complex than just the kernel-support system calls. For example, on OS X there is a set of system-provided frameworks that can reliably be accessed by any program linked to them, no matter the version the program is running on. Unfortunately, those frameworks do not necessarily live in the same locations on each version of OS X, nor do their dependencies, and thus nix needs to know the specific version of OS X currently running in order to make those frameworks available. The pre-build hook is a perfect mechanism for doing just that.
2015-04-18Revert "Add the pre-build hook."Shea Levy
Going to reimplement differently. This reverts commit 1e4a4a2e9fc382f47f58b448f3ee034cdd28218a.
2015-04-16Fix using restricted mode with chrootsEelco Dolstra
2015-04-12Add the pre-build hook.Shea Levy
This hook can be used to set system specific per-derivation build settings that don't fit into the derivation model and are too complex or volatile to be hard-coded into nix. Currently, the pre-build hook can only add chroot dirs/files. The specific use case for this is systems where the operating system ABI is more complex than just the kernel-supported system calls. For example, on OS X there is a set of system-provided frameworks that can reliably be accessed by any program linked to them, no matter the version the program is running on. Unfortunately, those frameworks do not necessarily live in the same locations on each version of OS X, nor do their dependencies, and thus nix needs to know the specific version of OS X currently running in order to make those frameworks available. The pre-build hook is a perfect mechanism for doing just that.
2015-04-09Implement a TTL on cached fetchurl/fetchTarball resultsEelco Dolstra
This is because we don't want to do HTTP requests on every evaluation, even though we can prevent a full redownload via the cached ETag. The default is one hour.
2015-02-23Use chroots for all derivationsEelco Dolstra
If ‘build-use-chroot’ is set to ‘true’, fixed-output derivations are now also chrooted. However, unlike normal derivations, they don't get a private network namespace, so they can still access the network. Also, the use of the ‘__noChroot’ derivation attribute is no longer allowed. Setting ‘build-use-chroot’ to ‘relaxed’ gives the old behaviour.
2014-09-17Settings: Add bool get()Eelco Dolstra
2014-08-05DohEelco Dolstra
2014-08-04Move some options out of globalsEelco Dolstra
2014-08-04RefactorEelco Dolstra
2014-08-04Add option ‘build-extra-chroot-dirs’Eelco Dolstra
This is useful for extending (rather than overriding) the default set of chroot paths.
2014-07-25nix-daemon: Pass on the user's $SSH_AUTH_SOCK to the SSH substituterEelco Dolstra
2014-07-17nix-daemon: Add trusted-users and allowed-users optionsEelco Dolstra
‘trusted-users’ is a list of users and groups that have elevated rights, such as the ability to specify binary caches. It defaults to ‘root’. A typical value would be ‘@wheel’ to specify all users in the wheel group. ‘allowed-users’ is a list of users and groups that are allowed to connect to the daemon. It defaults to ‘*’. A typical value would be ‘@users’ to specify the ‘users’ group.
2014-06-24Only add the importNative primop if the ↵Shea Levy
allow-arbitrary-code-during-evaluation option is true (default false)
2014-05-21nix-store -l: Fetch build logs from the InternetEelco Dolstra
If a build log is not available locally, then ‘nix-store -l’ will now try to download it from the servers listed in the ‘log-servers’ option in nix.conf. For instance, if you have: log-servers = http://hydra.nixos.org/log then it will try to get logs from http://hydra.nixos.org/log/<base name of the store path>. So you can do things like: $ nix-store -l $(which xterm) and get a log even if xterm wasn't built locally.
2014-02-26Add use-ssh-substituter setting.Shea Levy
It defaults to false and can be overridden by RemoteStore. Untested currently, just quickly put this together
2014-02-14Minor style fixesEelco Dolstra
2014-02-10Pass in params by const refShea Levy
Signed-off-by: Shea Levy <shea@shealevy.com>
2014-02-08Add download-via-ssh substituterShea Levy
This substituter connects to a remote host, runs nix-store --serve there, and then forwards substituter commands on to the remote host and sends their results to the calling program. The ssh-substituter-hosts option can be specified as a list of hosts to try. This is an initial implementation and, while it works, it has some limitations: * Only the first host is used * There is no caching of query results (all queries are sent to the remote machine) * There is no informative output (such as progress bars) * Some failure modes may cause unhelpful error messages * There is no concept of trusted-ssh-substituter-hosts Signed-off-by: Shea Levy <shea@shealevy.com>
2013-11-12Make function calls show up in stack traces againEelco Dolstra
Note that adding --show-trace prevents functions calls from being tail-recursive, so an expression that evaluates without --show-trace may fail with a stack overflow if --show-trace is given.
2013-09-06Don't apply the CPU affinity hack to nix-shell (and other Perl programs)Eelco Dolstra
As discovered by Todd Veldhuizen, the shell started by nix-shell has its affinity set to a single CPU. This is because nix-shell connects to the Nix daemon, which causes the affinity hack to be applied. So we turn this off for Perl programs.
2013-09-02Add an option to limit the log output of buildersEelco Dolstra
This is mostly useful for Hydra to deal with builders that get stuck in an infinite loop writing data to stdout/stderr.
2013-03-08Revert "Prevent config.h from being clobbered"Eelco Dolstra
This reverts commit 28bba8c44f484eae38e8a15dcec73cfa999156f6.
2013-03-07Prevent config.h from being clobberedEelco Dolstra
2013-02-19Add `Settings::nixDaemonSocketFile'.Ludovic Courtès
2012-12-29Allow mounting a path in a different location in the chrootEelco Dolstra
Fixes #24.
2012-11-27Add builtin constants ‘langVersion’ and ‘nixVersion’Eelco Dolstra
The integer constant ‘langVersion’ denotes the current language version. It gets increased every time a language feature is added/changed/removed. It's currently 1. The string constant ‘nixVersion’ contains the current Nix version, e.g. "1.2pre2980_9de6bc5".
2012-09-25Include <sys/types.h> for off_tEelco Dolstra
Reported by "gio" on IRC.
2012-07-31Pass all --option flags to the daemonEelco Dolstra
2012-07-30Refactor settings processingEelco Dolstra
Put all Nix configuration flags in a Settings object.
2012-07-30Pass configuration settings to the substitutersEelco Dolstra
Previously substituters could read nix.conf themselves, but this didn't take --option flags into account.
2012-07-18Use "#pragma once" to prevent repeated header file inclusionEelco Dolstra
2011-11-22* Move initialisation of variables like nixConfDir from libmain toEelco Dolstra
libstore so that the Perl bindings can use it as well. It's vital that the Perl bindings use the configuration file, because otherwise nix-copy-closure will fail with a ‘database locked’ message if the value of ‘use-sqlite-wal’ is changed from the default.
2011-06-30Add support for the `build-timeout' and `--timeout' options.Ludovic Courtès
2010-06-23Added support for passing an (impure) NIX_BUILD_CORES variable to build ↵Peter Simons
expressions. This patch adds the configuration file variable "build-cores" and the command line argument "--cores". These settings specify the number of CPU cores to utilize for parallel building within a job, i.e. by passing an appropriate "-j" flag to GNU Make. The default value is 1, which means that parallel building is *disabled*. If the number of build cores is specified as 0 (synonymously: "guess" or "auto"), then the actual value is supposed to be auto-detected by builders at run-time, i.e by calling the nproc(1) utility from coreutils. The environment variable $NIX_BUILD_CORES is available to builders, but the contents of that variable does *not* influence the hash that goes into the $out store path, i.e. the number of build cores to be utilized can be changed at will without requiring any re-builds.
2009-03-23* No longer block while waiting for a lock on a store path. InsteadEelco Dolstra
poll for it (i.e. if we can't acquire the lock, then let the main select() loop wait for at most a few seconds and then try again). This improves parallelism: if two nix-store processes are both trying to build a path at the same time, the second one shouldn't block; it should first see if it can build other goals. Also, it prevents the deadlocks that have been occuring in Hydra lately, where a process waits for a lock held by another process that's waiting for a lock held by the first. The downside is that polling isn't really elegant, but POSIX doesn't provide a way to wait for locks in a select() loop. The only solution would be to spawn a thread for each lock to do a blocking fcntl() and then signal the main thread, but that would require pthreads.
2009-02-27* Allow options from the Nix config file to be overriden from theEelco Dolstra
command line (e.g. "--option build-use-chroot true").
2008-12-11* Revert r13150: now that we use private namespaces for the chroot, weEelco Dolstra
don't have to put the chroot in /nix/var/nix/chroots anymore. They're back in /tmp now.
2008-11-20* Nix daemon: reload the configuration file after forking (NIX-100).Eelco Dolstra
2008-11-12* Some somewhat ad hoc mechanism to allow the build farm to monitorEelco Dolstra
build progress.
2008-10-29* Put the chroots under /nix/var/nix/chroots to reduce the risk ofEelco Dolstra
disasters involving `rm -rf' on bind mounts. Will try the definitive fix (per-process mounts, apparently possible via the CLONE_NEWNS flag in clone()) some other time.
2007-11-16* Flag `--no-build-hook' to disable distributed builds.Eelco Dolstra
* queryDeriver in daemon mode: don't barf if the other side returns an empty string (which means there is no deriver).
2007-08-12* Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra
need any info on substitutable paths, we just call the substituters (such as download-using-manifests.pl) directly. This means that it's no longer necessary for nix-pull to register substitutes or for nix-channel to clear them, which makes those operations much faster (NIX-95). Also, we don't have to worry about keeping nix-pull manifests (in /nix/var/nix/manifests) and the database in sync with each other. The downside is that there is some overhead in calling an external program to get the substitutes info. For instance, "nix-env -qas" takes a bit longer. Abolishing the substitutes table also makes the logic in local-store.cc simpler, as we don't need to store info for invalid paths. On the downside, you cannot do things like "nix-store -qR" on a substitutable but invalid path (but nobody did that anyway). * Never catch interrupts (the Interrupted exception).
2006-12-08* Kill a build if it has gone for more than a certain number ofEelco Dolstra
seconds without producing output on stdout or stderr (NIX-65). This timeout can be specified using the `--max-silent-time' option or the `build-max-silent-time' configuration setting. The default is infinity (0). * Fix a tricky race condition: if we kill the build user before the child has done its setuid() to the build user uid, then it won't be killed, and we'll potentially lock up in pid.wait(). So also send a conventional kill to the child.
2006-12-04* Install the worker in bindir, not libexecdir.Eelco Dolstra
* Allow the worker path to be overriden through the NIX_WORKER environment variable.
2006-11-30* Put building in the store API.Eelco Dolstra
2006-09-04* Use a proper namespace.Eelco Dolstra
* Optimise header file usage a bit. * Compile the parser as C++.
2006-07-20* Use $(libexecdir) to find find-runtime-roots.pl.Eelco Dolstra
2006-07-06* Allow the canonical system name to be specified at runtime in theEelco Dolstra
Nix config file.
2006-02-16* Allow the size of the GC reserved file to be specified in nix.confEelco Dolstra
through the new `gc-reserved-space' option.