about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2012-03-26 Make the garbage collector more concurrentEelco Dolstra3-21/+48
Make the garbage collector more concurrent by deleting valid paths outside the region where we're holding the global GC lock. This should greatly reduce the time during which new builds are blocked, since the deletion accounts for the vast majority of the time spent in the GC. To ensure that this is safe, the valid paths are invalidated and renamed to some arbitrary path while we're holding the lock. This ensures that we when we finally delete the path, it's not a (newly) valid or locked path.
2012-03-26 Remove the --max-links GC optionEelco Dolstra7-30/+3
We don't need this anymore now that current filesystems support more than 32,000 files in a directory.
2012-03-20 nix-store --clear-failed-paths: Clear derivation outputsEelco Dolstra1-1/+3
If the argument to ‘nix-store --clear-failed-paths’ is a derivation, then clear the failed state of its outputs.
2012-03-19 Fix the coverage buildEelco Dolstra1-0/+2
2012-03-19 Fix the Deb buildsEelco Dolstra1-2/+2
2012-03-19 Fix the RPMEelco Dolstra2-2/+7
2012-03-19 Add a command "nix-build --run-env" to reproduce the environment of a derivationEelco Dolstra3-0/+72
This command builds or fetches all dependencies of the given derivation, then starts a shell with the environment variables from the derivation. This shell also sources $stdenv/setup to initialise the environment further. The current directory is not changed. Thus this is a convenient way to reproduce a build environment in an existing working tree. Existing environment variables are left untouched (unless the derivation overrides them). As a special hack, the original value of $PATH is appended to the $PATH produced by $stdenv/setup. Example session: $ nix-build --run-env '<nixpkgs>' -A xterm (the dependencies of xterm are built/fetched...) $ tar xf $src $ ./configure $ make $ emacs (... hack source ...) $ make $ ./xterm
2012-03-19 Replace "make check" with "make installcheck"Eelco Dolstra8-46/+25
Ensuring that the tests work from the build tree requires a growing number of nasty hacks. The tests also don't verify that the installed Nix actually works. Thus, the tests now require "make install" to have been run.
2012-03-19 Fix the optional dependency on OpenSSLEelco Dolstra1-1/+1
http://hydra.nixos.org/build/2306540
2012-03-18 Drop the externals directoryEelco Dolstra12-181/+66
Nix now requires SQLite and bzip2 to be pre-installed. SQLite is detected using pkg-config. We required DBD::SQLite anyway, so depending on SQLite is not a big problem. The --with-bzip2, --with-openssl and --with-sqlite flags are gone.
2012-03-18 Clean up when building from a working treeEelco Dolstra1-1/+6
2012-03-13 Ensure that Perl processes delete their entry in the temproots directoryEelco Dolstra4-17/+12
By moving the destructor object to libstore.so, it's also run when download-using-manifests and nix-prefetch-url exit. This prevents them from cluttering /nix/var/nix/temproots with stale files.
2012-03-12 Fix testsEelco Dolstra3-7/+7
2012-03-06 Update bzip2 dependencyEelco Dolstra1-3/+3
2012-03-05 Fix compilation on FreeBSDEelco Dolstra2-0/+2
http://hydra.nixos.org/build/2213576 Not sure why compilation doesn't fail on other platforms...
2012-03-05 nix-copy-closure: don't print copied path on stdoutEelco Dolstra2-2/+2
We're already printing progress on stderr, so printing them on stdout afterwards is kind of useless.
2012-03-05 Set the close-on-exec flag on file descriptorsEelco Dolstra5-3/+20
2012-03-05 Don't leak a file descriptor in commonChildInit()Eelco Dolstra1-0/+1
2012-03-05 nix-worker: put the pid of the caller in argv[1]Eelco Dolstra3-2/+25
This is useful for debugging.
2012-03-05 Restore progress indication during nix-copy-closureEelco Dolstra3-2/+2
2012-03-05 build-remote.pl: don't wait forever for the upload lockEelco Dolstra1-3/+17
In the build hook, don't wait forever to get the upload lock. This ensures progress if another process gets stuck while holding the upload lock.
2012-03-01 Remove dependency on sqlite3_table_column_metadataEelco Dolstra1-7/+0
Not all SQLite builds have the function sqlite3_table_column_metadata. We were only using it in a schema upgrade check for compatibility with databases that were probably never seen in the wild. So remove it.
2012-03-01 Fix an uninitialised variableEelco Dolstra1-0/+1
The variable ‘useChroot’ was not initialised properly. This caused random failures if using the build hook. Seen on Mac OS X 10.7 with Clang. Thanks to KolibriFX for finding this :-)
2012-02-18 Fix chroots buildsEelco Dolstra1-0/+16
Chroots are initialised by hard-linking inputs from the Nix store to the chroot. This doesn't work if the input has its immutable bit set, because it's forbidden to create hard links to immutable files. So temporarily clear the immutable bit when creating and destroying the chroot. Note that making regular files in the Nix store immutable isn't very reliable, since the bit can easily become cleared: for instance, if we run the garbage collector after running ‘nix-store --optimise’. So maybe we should only make directories immutable.
2012-02-15 On Linux, make the Nix store really read-only by using the immutable bitEelco Dolstra7-8/+130
I was bitten one time too many by Python modifying the Nix store by creating *.pyc files when run as root. On Linux, we can prevent this by setting the immutable bit on files and directories (as in ‘chattr +i’). This isn't supported by all filesystems, so it's not an error if setting the bit fails. The immutable bit is cleared by the garbage collector before deleting a path. The only tricky aspect is in optimiseStore(), since it's forbidden to create hard links to an immutable file. Thus optimiseStore() temporarily clears the immutable bit before creating the link.
2012-02-15 Fix a broken guard around utime()Eelco Dolstra1-2/+5
Because of an outdated check for a timestamp of 0, we were calling utime() even when it wasn't necessary.
2012-02-15 Don't use deletePath() to delete a single fileEelco Dolstra1-1/+1
2012-02-09 Fix error messageEelco Dolstra1-3/+4
This fixes the error message error: file `' was not found in the Nix search path (add it using $NIX_PATH or -I)
2012-02-09 Use data() instead of c_str() where appropriateEelco Dolstra9-18/+18
2012-02-08 Update .gitignoreEelco Dolstra1-108/+9
2012-02-08 Remove empty ChangeLog fileEelco Dolstra1-0/+0
2012-02-08 Set the versionSuffix to include the Git shortrevEelco Dolstra1-1/+2
2012-02-07 * Build Nix for the latest Fedora and Ubuntu releases (and drop someEelco Dolstra1-4/+6
old ones).
2012-02-04 * Inline some functions and get rid of the indirection throughEelco Dolstra7-116/+94
EvalState::eval(). This gives a 12% speedup on ‘nix-instantiate /etc/nixos/nixos/ -A system --readonly-mode’ (from 1.01s to 0.89s).
2012-02-04 * Print elapsed evaluation time.Eelco Dolstra1-1/+9
2012-02-02 * nix-channel: fail if we don't have write permission to the manifestsEelco Dolstra1-13/+7
directory. Previously in this situation we did add the Nix expressions from the channel to allow installation from source, but this doesn't work for binary-only channels and leads to confusing error messages.
2012-01-26 * Fix importing a derivation. This gave a segfault.Eelco Dolstra1-8/+23
2012-01-26 * Add a test for importing derivations.Eelco Dolstra3-1/+37
2012-01-19 * Allow comparisons between derivations by comparing the outPathEelco Dolstra1-2/+14
attributes.
2012-01-19 * Add some debug output to print the derivation name once it's known.Eelco Dolstra1-1/+4
This makes it easier to pinpoint the source of a crash.
2012-01-19 * Add a test case for comparing derivations.Eelco Dolstra2-0/+11
2012-01-18 * Don't distribute Store.cc, it's generated automatically by xsubpp.Eelco Dolstra1-1/+3
2012-01-18 * Pass the appropriate flags to GCC when building the Perl bindings.Eelco Dolstra1-1/+2
Without these, Nix fails on 32-bit Linux with Perl 5.14, with a rather unhelpful error message: Not a CODE reference at /nix/store/n6kpbacn6nn7i3i735v8j3di8aqyl07v-perl-5.14.2/lib/perl5/5.14.2/i686-linux-thread-multi/DynaLoader.pm This is likely because the lack of -D_FILE_OFFSET_BITS=64 causes various Perl structures to not match what the Perl interpreter expects.
2012-01-17 * Added a command ‘nix-store --print-env $drvpath’ that prints out theEelco Dolstra2-0/+39
environment of the given derivation in a format that can be sourced by the shell, e.g. $ eval "$(nix-store --print-env $(nix-instantiate /etc/nixos/nixpkgs -A pkg))" $ NIX_BUILD_TOP=/tmp $ source $stdenv/setup This is especially useful to reproduce the environment used to build a package outside of its builder for development purposes. TODO: add a nix-build option to do the above and fetch the dependencies of the derivation as well.
2012-01-13 * nix-build: put the temporary derivation symlink in a temporaryEelco Dolstra3-52/+25
directory rather than the current directory. * nix-build: --drv-link now implies --add-drv-link.
2012-01-12 * ‘-module’ causes the generated library to have an .so extension onEelco Dolstra1-1/+0
Mac OS X instead of .dylib, so don't do that.
2012-01-11 tests: Run `download-using-manifests' via libtool so that dlopening works.Ludovic Courtès3-1/+8
2012-01-11 perl: Build libNixStore.la with `-module'.Ludovic Courtès1-1/+2
2012-01-11 * Figure out the extension of dynamic libraries; don't hard-code .so.Eelco Dolstra2-2/+7
2012-01-07 * Don't create thunks for simple constants (integers, strings, paths)Eelco Dolstra5-133/+193
and allocate them only once. * Move Value and related functions into value.hh.