about summary refs log tree commit diff
path: root/src/libstore/build.cc
AgeCommit message (Collapse)AuthorFilesLines
2006-11-30 * Put building in the store API.Eelco Dolstra1-3/+2
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-14/+18
containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations.
2006-11-13 * Remove the undocumented `noscan' feature. It's no longer necessaryEelco Dolstra1-15/+12
now that reference scanning is sufficiently streamy.
2006-11-13 * Magic attribute `exportReferencesGraph' that allows the referencesEelco Dolstra1-20/+56
graph to be passed to a builder. This attribute should be a list of pairs [name1 path1 name2 path2 ...]. The references graph of each `pathN' will be stored in a text file `nameN' in the temporary build directory. The text files have the format used by `nix-store --register-validity'. However, the deriver fields are left empty. `exportReferencesGraph' is useful for builders that want to do something with the closure of a store path. Examples: the builders that make initrds and ISO images for NixOS. `exportReferencesGraph' is entirely pure. It's necessary because otherwise the only way for a builder to get this information would be to call `nix-store' directly, which is not allowed (though unfortunately possible).
2006-10-28 * `nix-store --read-log / -l PATH' shows the build log of PATH, ifEelco Dolstra1-1/+1
available. For instance, $ nix-store -l $(which svn) | less lets you read the build log of the Subversion instance in your profile. * `nix-store -qb': if applied to a non-derivation, take the deriver.
2006-10-19 * Special derivation attribute `allowedReferences' that causes Nix toEelco Dolstra1-0/+31
check that the references of the output of a derivation are in the specified set. For instance, allowedReferences = []; specifies that the output cannot have any references. (This is useful, for instance, for the generation of bootstrap binaries for stdenv-linux, which must not have any references for purity). It could also be used to guard against undesired runtime dependencies, e.g., {gcc, dynlib}: derivation { ... allowedReferences = [dynlib]; } says that the output can refer to the path of `dynlib' but not `gcc'. A `forbiddedReferences' attribute would be more useful for this, though.
2006-09-04 * Use a proper namespace.Eelco Dolstra1-21/+32
* Optimise header file usage a bit. * Compile the parser as C++.
2006-08-15 On cygwin, disable the check that the output is not group or worldMartin Bravenboer1-0/+2
writable. File permissions on Cygwin are rather complex, and in this case this check introduced a problem with build jobs invoke from outside of Cygwin (MSYS). It seemed almost impossible to fix the permissions of the directory, so for now this safety check is disabled on Cygwin.
2006-07-20 * Call find-runtime-roots.pl from the garbage collector to preventEelco Dolstra1-16/+5
running applications etc. from being garbage collected.
2006-06-19 * Oops.Eelco Dolstra1-1/+2
2006-06-19 * _exit() doesn't seem to work right on Cygwin.Eelco Dolstra1-0/+11
2006-06-16 * Show when we're blocked waiting for a lock.Eelco Dolstra1-4/+4
2006-05-31 * For fixed-output derivations, pass the environment variables listedEelco Dolstra1-3/+20
in the attribute variable `impureEnvVars' from the caller to the builder.
2006-05-30 * Not all platforms have sys/select.h.Eelco Dolstra1-1/+1
2006-05-24 * Some Cygwin fixes.Eelco Dolstra1-0/+1
2006-03-06 * `nix-env (-i|-u) --dry-run' now shows exactly which missing pathsEelco Dolstra1-0/+1
will be built or substituted.
2006-03-01 * db.hh shouldn't depend on the Berkeley DB headers.Eelco Dolstra1-1/+2
2006-02-03 * Use setsid instead of setpgrp in child processes. This not onlyEelco Dolstra1-6/+8
creates a new process group but also a new session. New sessions have no controlling tty, so child processes like ssh cannot open /dev/tty (which is bad).
2006-02-02 * When killing a build hook, kill the entire process group (asEelco Dolstra1-0/+1
intended). This ensures that any ssh child processes to remote machines are also killed, and thus the Nix process on the remote machine also exits. Without this, the remote Nix process will continue until it exists or until its stdout buffer gets full and it locks up. (Partially fixes NIX-35.)
2005-11-16 * Did something useful while waiting at IAD: reference scanning is nowEelco Dolstra1-4/+1
much faster.
2005-10-20 * Prevent uids from being used for more than one buildEelco Dolstra1-36/+120
simultaneously. We do this using exclusive locks on uid files in /nix/var/nix/userpool, e.g., /nix/var/nix/userpool/123 for uid 123.
2005-10-19 * Oops. Fixed-output derivations were broken.Eelco Dolstra1-1/+0
2005-10-17 * Also kill all processes of the build user after the build. This isEelco Dolstra1-0/+8
critical to prevent certain kinds of 0wnage.
2005-10-17 * Before starting a build under some uid, kill all current processesEelco Dolstra1-0/+48
running under that uid.
2005-10-17 * Check that the build result is owned by the build user, and thatEelco Dolstra1-2/+13
nobody else has write permission to the build result. This catches most hack attempts.
2005-10-17 * Don't use FIFOs to make Nix create the output path on behalf of theEelco Dolstra1-68/+17
builder. Instead, require that the Nix store has sticky permission (S_ISVTX); everyone can created files in the Nix store, but they cannot delete, rename or modify files created by others.
2005-10-17 * Beginning of secure multi-user Nix stores. If Nix is started asEelco Dolstra1-45/+214
root (or setuid root), then builds will be performed under one of the users listed in the `build-users' configuration variables. This is to make it impossible to influence build results externally, allowing locally built derivations to be shared safely between users (see ASE-2005 paper). To do: only one builder should be active per build user.
2005-09-20 * Typo.Eelco Dolstra1-1/+1
2005-05-10 * Typo.Eelco Dolstra1-1/+1
2005-04-13 * Remove redundant message.Eelco Dolstra1-4/+0
2005-04-11 * Slightly nicer message.Eelco Dolstra1-3/+3
2005-03-24 * Create missing log and temproots directories automatically (reportedEelco Dolstra1-1/+7
by Rob).
2005-03-23 * Export the references graph to the build hook.Eelco Dolstra1-14/+30
2005-02-23 * When multiple derivations are specified in `nix-store -r', don'tEelco Dolstra1-62/+50
continue building when one fails unless `--keep-going' is specified. * When `--keep-going' is specified, print out the set of failing derivations at the end (otherwise it can be hard to find out which failed).
2005-02-22 * Support for fixed-output hashes over directory trees (i.e., over theEelco Dolstra1-14/+26
NAR dump of the path).
2005-02-22 * Compatibility hack so that Nixpkgs can continue to do hash checkingEelco Dolstra1-0/+9
in `fetchurl' in Nix <= 0.7, but doesn't in Nix 0.8.
2005-02-18 * Subtle bug in the builder: if a subgoal that is instantiatedEelco Dolstra1-31/+30
multiple times is also a top-level goal, then the second and later instantiations would never be created because there would be a stable pointer to the first one that would keep it alive in the WeakGoalMap. * Some tracing code for debugging this kind of problem.
2005-02-17 * Put build logs in $prefix/var/nix/log/drvs/.Eelco Dolstra1-1/+1
2005-02-11 * Input sources should be in the set of all referenceable paths too.Eelco Dolstra1-4/+4
2005-02-09 * Propagate the deriver of a path through the substitute mechanism.Eelco Dolstra1-1/+2
* Removed some dead code (successor stuff) from nix-push. * Updated terminology in the tests (store expr -> drv path). * Check that the deriver is set properly in the tests.
2005-02-08 * Updated `nix-store --verify' to the new schema.Eelco Dolstra1-2/+2
2005-02-07 * Maintain a database table (`derivers') that maps output paths to theEelco Dolstra1-2/+3
derivation that produced them. * `nix-store -qd PATH' prints out the derivation that produced a path.
2005-02-01 * Add missing files to dist.Eelco Dolstra1-2/+4
* Fix GC and substitute bugs related to self-references. Add a regression test.
2005-01-31 * Start of concurrent garbage collection. Processes write temporaryEelco Dolstra1-1/+7
roots to a per-process temporary file in /nix/var/nix/temproots while holding a write lock on that file. The garbage collector acquires read locks on all those files, thus blocking further progress in other Nix processes, and reads the sets of temporary roots.
2005-01-27 * Fix and simplify the garbage collector (it's still not concurrent,Eelco Dolstra1-2/+2
though). In particular it's now much easier to register a GC root. Just place a symlink to whatever store path it is that you want to keep in /nix/var/nix/gcroots.
2005-01-25 * Maintain the references/referers relation also for derivations.Eelco Dolstra1-3/+2
This simplifies garbage collection and `nix-store --query --requisites' since we no longer need to treat derivations specially. * Better maintaining of the invariants, e.g., setReferences() can only be called on a valid/substitutable path.
2005-01-25 * Simplification: registerSubstitutes -> registerSubstitute. We noEelco Dolstra1-1/+0
longer need the former since there we no longer have the substitutes-rev table (which triggered a O(n^2) cost in updating them).
2005-01-25 * Really fix the substitute mechanism, i.e., ensure the closureEelco Dolstra1-7/+32
invariant by registering references through the manifest. * Added a test for nix-pull.
2005-01-25 * Fix the `--fallback' switch.Eelco Dolstra1-0/+6
* Fix the substitutes tests.
2005-01-25 * Fix the build hook mechanism; pass the pointer graph to the hook.Eelco Dolstra1-2/+24