Browse Source

Merge branch 'nix'.

* config-daemon.ac: Add check for sys/syscall.h, remove check
  tr1/unordered_set.

The nix/ part is a squashed commit of the following:

commit e531520ddc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jun 2 02:21:54 2015 +0200

    Don't let unprivileged users repair paths

commit 715478fe09
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon Jun 1 23:20:11 2015 +0200

    Add a ‘verifyStore’ RPC

    Hello!

    The patch below adds a ‘verifyStore’ RPC with the same signature as the
    current LocalStore::verifyStore method.

    Thanks,
    Ludo’.

    >From aef46c03ca Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
    Date: Mon, 1 Jun 2015 23:17:10 +0200
    Subject: [PATCH] Add a 'verifyStore' remote procedure call.

commit 64a998ebcb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 7 13:21:26 2015 +0200

    Revert /nix/store permission back to 01775

    This broke NixOS VM tests.

    Mostly reverts 27b7b94923,
    5ce50cd99e,
    afa433e58c.

commit 44f1b1851c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 2 16:59:40 2015 +0200

    Chroot builds: Provide world-readable /nix/store

    This was causing NixOS VM tests to fail mysteriously since
    5ce50cd99e. Nscd could (sometimes) no
    longer read /etc/hosts:

    open("/etc/hosts", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)

    Probably there was some wacky interaction between the guest kernel and
    the 9pfs implementation in QEMU.

commit b6ecbd266f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 25 17:06:12 2015 +0100

    addToStore(): Take explicit name argument

commit 1f595ba474
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 24 11:35:53 2015 +0100

    Tighten permissions on chroot directories

commit ba5888bccd
Author: Daniel Hahler <git@thequod.de>
Date:   Fri Mar 6 16:39:48 2015 +0100

    Fix typos: s/the the/the/

commit 67af480244
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 23 15:41:41 2015 +0100

    Use chroots for all derivations

    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.

    Note for Guix: unlike Nix commit 99897f6, we keep 'settings.useChroot'.

commit 638f3675e1
Author: Harald van Dijk <harald@gigawatt.nl>
Date:   Fri Feb 13 16:05:49 2015 +0000

    Use pivot_root in addition to chroot when possible

    chroot only changes the process root directory, not the mount namespace root
    directory, and it is well-known that any process with chroot capability can
    break out of a chroot "jail". By using pivot_root as well, and unmounting the
    original mount namespace root directory, breaking out becomes impossible.

    Non-root processes typically have no ability to use chroot() anyway, but they
    can gain that capability through the use of clone() or unshare(). For security
    reasons, these syscalls are limited in functionality when used inside a normal
    chroot environment. Using pivot_root() this way does allow those syscalls to be
    put to their full use.

commit 8ab23f2924
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 3 18:56:47 2015 +0100

    Simplify parseHash32

commit 70c3d2f176
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 3 18:35:11 2015 +0100

    Simplify printHash32

commit 7a7a15877f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 8 16:59:22 2015 +0100

    Doh^2

commit 8c94a864d8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 8 16:49:31 2015 +0100

    Doh

commit 35605c4407
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 8 16:39:07 2015 +0100

    Set /nix/store permission to 1737

    I.e., not readable to the nixbld group. This improves purity a bit for
    non-chroot builds, because it prevents a builder from enumerating
    store paths (i.e. it can only access paths it knows about).

commit 0b9c4a8b80
Author: aszlig <aszlig@redmoonstudios.org>
Date:   Fri Jan 2 03:45:47 2015 +0100

    libutil: Limit readLink() error to only overflows.

    Let's not just improve the error message itself, but also the behaviour
    to actually work around the ntfs-3g symlink bug. If the readlink() call
    returns a smaller size than the stat() call, this really isn't a problem
    even if the symlink target really has changed between the calls.

    So if stat() reports the size for the absolute path, it's most likely
    that the relative path is smaller and thus it should also work for file
    system bugs as mentioned in 93002d69fc.

    Signed-off-by: aszlig <aszlig@redmoonstudios.org>
    Tested-by: John Ericson <Ericson2314@Yahoo.com>

commit 0fed5fde65
Author: aszlig <aszlig@redmoonstudios.org>
Date:   Fri Jan 2 03:27:39 2015 +0100

    libutil: Improve errmsg on readLink size mismatch.

    A message like "error: reading symbolic link `...' : Success" really is
    quite confusing, so let's not indicate "success" but rather point out
    the real issue.

    We could also limit the check of this to just check for non-negative
    values, but this would introduce a race condition between stat() and
    readlink() if the link target changes between those two calls, thus
    leading to a buffer overflow vulnerability.

    Reported by @Ericson2314 on IRC. Happened due to a possible ntfs-3g bug
    where a relative symlink returned the absolute path (st_)size in stat()
    while readlink() returned the relative size.

    Signed-off-by: aszlig <aszlig@redmoonstudios.org>
    Tested-by: John Ericson <Ericson2314@Yahoo.com>

commit 7dfd3f5c8f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Dec 14 01:51:14 2014 +0100

    Pedantry

commit 45a145c8b2
Author: Marko Durkovic <marko@miding.de>
Date:   Tue Dec 9 12:16:27 2014 +0100

    Explicitly include required C headers

commit 66d086cc26
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Dec 13 16:54:40 2014 +0100

    Better error message

commit b499d2efbf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 17:14:28 2014 +0100

    Silence some warnings on GCC 4.9

commit 159b7103a7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 15:10:02 2014 +0100

    Shut up a Valgrind warning

commit 7930b2cb76
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 15:01:16 2014 +0100

    Fix some memory leaks

commit 5c84e4950d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 14:35:44 2014 +0100

    Ensure we're writing to stderr in the builder

    http://hydra.nixos.org/build/17862041

commit ccade8c120
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 14:01:14 2014 +0100

    Get rid of unnecessary "interrupted by the user" message with -vvv

commit 8d9a0be278
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 12 12:39:50 2014 +0100

    Remove tabs

commit 1f8456ff13
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Aug 21 15:31:43 2014 +0200

    Use PR_SET_PDEATHSIG to ensure child cleanup

commit 909f1260e2
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Jun 3 17:45:32 2015 +0200

    Rename 'initChild' to 'runChild'.

    This is similar to commit b5ed5b6 in upstream Nix.

commit 3bfa70b796
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 10 13:53:04 2014 +0100

    Don't wait for PID -1

    The pid field can be -1 if forking the substituter process failed.

commit 5241aec531
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 24 16:48:04 2014 +0100

    Build derivations in a more predictable order

    Derivations are now built in order of derivation name, so a package
    named "aardvark" is built before "baboon".

    Fixes #399.

commit 9f355738e1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 24 16:44:35 2014 +0100

    Don't create unnecessary substitution goals for derivations

commit 554eaf5e8c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Nov 19 18:02:39 2014 +0100

    Disable vacuuming the DB after garbage collection

    Especially in WAL mode on a highly loaded machine, this is not a good
    idea because it results in a WAL file of approximately the same size
    ad the database, which apparently cannot be deleted while anybody is
    accessing it.

commit 4eb62b5230
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Nov 19 17:09:27 2014 +0100

    nix-daemon: Call exit(), not _exit()

    This was preventing destructors from running. In particular, it was
    preventing the deletion of the temproot file for each worker
    process. It may also have been responsible for the excessive WAL
    growth on Hydra (due to the SQLite database not being closed
    properly).

    Apparently broken by accident in
    8e9140cfde.

commit f160a30d56
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Nov 19 17:07:29 2014 +0100

    Clean up temp roots in a more C++ way

commit a64744477d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 17 01:00:39 2014 +0100

    Fix message

commit b73de6e49b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 14 14:16:20 2014 +0100

    Don't use ADDR_LIMIT_3GB

    This gives 32-bit builds on x86_64-linux more memory.

commit e0825bd36b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Nov 12 11:35:53 2014 +0100

    Make ~DerivationGoal more reliable

commit 86b9e6d457
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 4 10:41:29 2014 +0100

    nix-store --gc: Don't warn about missing manifests directory

commit 1129a982c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 31 09:36:09 2014 +0100

    Improve error message if the daemon worker fails to start

commit bed17f40fc
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Oct 20 12:15:50 2014 -0400

    Fix build on gcc < 4.7

commit ee8601cac4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 14 10:51:19 2014 +0200

    Improved error message when encountering unsupported file types

    Fixes #269.

commit c2b65dd197
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 3 22:37:51 2014 +0200

    Remove some duplicate code

commit c957422835
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 3 16:53:28 2014 +0200

    createDirs(): Handle ‘path’ being a symlink

    In particular, this fixes "nix-build -o /tmp/result" on Mac OS X
    (where /tmp is a symlink).

commit 6092a48603
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 25 18:45:43 2014 +0200

    nix-daemon: Close unnecessary fd

commit e74390a16f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 19 15:07:22 2014 +0200

    Remove bogus comment

commit e63c8aaa05
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 17 17:21:13 2014 +0200

    On Linux, disable address space randomization

commit 55939b1a4b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 17 15:18:13 2014 +0200

    Settings: Add bool get()

commit 6621195e48
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon Sep 1 22:21:42 2014 +0200

    Add an 'optimiseStore' remote procedure call.

commit 3bb89c3a31
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Aug 28 18:57:13 2014 +0200

    Add disallowedReferences / disallowedRequisites

    For the "stdenv accidentally referring to bootstrap-tools", it seems
    easier to specify the path that we don't want to depend on, e.g.

      disallowedRequisites = [ bootstrapTools ];

commit abd9d61e62
Author: Gergely Risko <errge@nilcons.com>
Date:   Wed Aug 27 16:46:02 2014 +0200

    Introduce allowedRequisites feature

commit 8c766e48d5
Author: Joel Taylor <me@joelt.io>
Date:   Thu Aug 21 14:06:49 2014 -0700

    fix disappearing bash arguments

commit d4e7c195fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 19 17:44:59 2014 +0200

    Make hook shutdown more reliable

commit ea837e470f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 18 11:35:50 2014 +0200

    Doh

commit 790271559c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 17 19:11:50 2014 +0200

    Reduce verbosity

commit 3f6d4f63ec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 17 19:09:03 2014 +0200

    Propagate remote timeouts properly

commit aa98ba5067
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 13 17:44:41 2014 +0200

    Use regular file GC roots if possible

    This makes hydra-eval-jobs create roots as regular files. See
    1c208f2b7e.

commit 5fe5ff7780
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 5 16:41:42 2014 +0200

    Remove unnecessary call to addTempRoot()

commit 1820845c44
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 5 10:19:57 2014 +0200

    Doh

commit e9070bf422
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 4 18:13:14 2014 +0200

    Move some options out of globals

commit 3190951563
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 4 18:02:29 2014 +0200

    Refactor

commit f530ee6f35
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 4 18:00:00 2014 +0200

    Add option ‘build-extra-chroot-dirs’

    This is useful for extending (rather than overriding) the default set
    of chroot paths.

commit 75f746f018
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 4 17:27:45 2014 +0200

    Get rid of "killing <pid>" message for unused build hooks

commit 42c6246f67
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 19:38:21 2014 +0200

    Remove ugly hack for detecting build environment setup errors

commit b732ffd28d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 19:29:03 2014 +0200

    Call commonChildInit() before doing chroot init

    This ensures that daemon clients see error messages from the chroot
    setup.

commit c51374c128
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 17:30:51 2014 +0200

    Eliminate redundant copy

commit 666c9b7108
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 17:20:25 2014 +0200

    findRoots(): Prevent a call to lstat()

    This means that getting the roots from /nix/var/nix/.../hydra-roots
    doesn't need any I/O other than reading the directory.

commit 82d463d9ca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 16:37:47 2014 +0200

    Make readDirectory() return inode / file type

commit a98fa2d9e2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 1 16:46:01 2014 +0200

    Allow regular files as GC roots

    If a root is a regular file, then its name must denote a store
    path. For instance, the existence of the file

      /nix/var/nix/gcroots/per-user/eelco/hydra-roots/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7

    would cause

      /nix/store/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7

    to be a root.

    This is useful because it involves less I/O (no need for a readlink()
    call) and takes up less disk space (the symlink target typically takes
    up a full disk block, while directory entries are packed more
    efficiently). This is particularly important for hydra.nixos.org,
    which has hundreds of thousands of roots, and where reading the roots
    can take 25 minutes.

commit 4ab4b0c109
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 24 00:00:53 2014 +0200

    Remove some dead code

commit 1cffdf5847
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 23 19:43:46 2014 +0200

    nix-daemon: Less verbosity

commit bb07dfe96f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 23 19:37:40 2014 +0200

    nix-daemon: Simplify stderr handling

commit 766481d606
Merge: c69944c fdee1ce
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon May 11 17:04:26 2015 +0200

    Merge commit 'fdee1ced43fb495d612a29e955141cdf6b9a95ba' into nix

commit c69944c511
Merge: a1dd396 8e9140c
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed May 6 23:22:04 2015 +0200

    Merge commit '8e9140cfdef9dbd1eb61e4c75c91d452ab5e4a74' into nix

    Conflicts:
    	Makefile.config.in
    	configure.ac
    	dev-shell
    	doc/manual/builtins.xml
    	doc/manual/conf-file.xml
    	doc/manual/local.mk
    	doc/manual/nix-instantiate.xml
    	doc/manual/nix-store.xml
    	doc/manual/writing-nix-expressions.xml
    	misc/emacs/nix-mode.el
    	perl/lib/Nix/CopyClosure.pm
    	release.nix
    	scripts/nix-build.in
    	scripts/nix-copy-closure.in
    	src/download-via-ssh/download-via-ssh.cc
    	src/libexpr/common-opts.cc
    	src/libexpr/common-opts.hh
    	src/libexpr/eval.cc
    	src/libexpr/eval.hh
    	src/libexpr/local.mk
    	src/libexpr/nixexpr.cc
    	src/libexpr/nixexpr.hh
    	src/libexpr/parser.y
    	src/libexpr/primops.cc
    	src/libexpr/symbol-table.hh
    	src/libmain/shared.cc
    	src/libstore/local.mk
    	src/nix-env/nix-env.cc
    	src/nix-instantiate/nix-instantiate.cc
    	src/nix-store/local.mk
    	src/nix-store/nix-store.cc
    	src/nix-store/serve-protocol.hh
    	tests/lang.sh
    	tests/lang/eval-okay-context.nix
    	tests/lang/eval-okay-search-path.exp
    	tests/lang/eval-okay-search-path.nix
    	tests/local.mk
    	tests/nix-copy-closure.nix

commit a1dd396cc0
Merge: 0a75126 8d5f472
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Sun Jan 4 23:01:14 2015 +0100

    Merge commit '8d5f472f2c49c79a0d3ae2e506f4d4d76224b328' into nix

    Conflicts:
    	.gitignore
    	Makefile
    	doc/manual/installation.xml
    	doc/manual/introduction.xml
    	doc/manual/local.mk
    	doc/manual/manual.xml
    	doc/manual/nix-collect-garbage.xml
    	doc/manual/nix-env.xml
    	doc/manual/nix-install-package.xml
    	doc/manual/nix-store.xml
    	doc/manual/quick-start.xml
    	doc/manual/release-notes.xml
    	local.mk
    	misc/emacs/nix-mode.el
    	mk/functions.mk
    	mk/install.mk
    	mk/lib.mk
    	mk/libraries.mk
    	mk/patterns.mk
    	mk/programs.mk
    	nix.spec.in
    	release.nix
    	scripts/install-nix-from-closure.sh
    	scripts/nix-build.in
    	src/libexpr/eval-inline.hh
    	src/libexpr/eval.cc
    	src/libexpr/eval.hh
    	src/libexpr/get-drvs.cc
    	src/libexpr/nixexpr.cc
    	src/libexpr/nixexpr.hh
    	src/libexpr/parser.y
    	src/libexpr/primops.cc
    	src/libstore/local.mk
    	src/nix-daemon/local.mk
    	src/nix-env/nix-env.cc
    	src/nix-env/user-env.cc
    	src/nix-instantiate/nix-instantiate.cc
    	src/nix-store/nix-store.cc
    	tests/init.sh
    	tests/nix-copy-closure.nix
    	tests/remote-builds.nix
    	version

commit 0a751260ae
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Dec 17 11:10:25 2014 +0100

    nix: Adjust code for Guix.

    * nix/libstore/gc.cc (addAdditionalRoots): Refer to 'list-runtime-roots'
      instead of 'find-runtime-roots.pl'.
    * nix/libutil/hash.cc, nix/libutil/hash.hh: Change 'union Ctx' to
      'struct Ctx', like 'nix/sync-with-upstream' did.
    * nix/AUTHORS: New file.
    * nix/COPYING: New file, from upstream Nix.
    * nix/libutil/md32_common.h, nix/libutil/md5.c, nix/libutil/md5.h,
      nix/libutil/sha1.c, nix/libutil/sha1.h, nix/libutil/sha256.c,
      nix/libutil/sha256.h: Remove.

commit d4e18b05e0
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Dec 17 10:44:19 2014 +0100

    Keep only libstore, nix-daemon, and related stuff.

commit fdee1ced43
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 23 19:11:26 2014 +0200

    startProcess: Make writing error messages from the child more robust

commit 5989966ed3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 23 14:46:28 2014 +0200

    Remove dead code

commit ee3c5d7916
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jul 19 02:25:47 2014 +0200

    Revert old useBuildHook behaviour

commit 2e77bd70fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 18 12:54:30 2014 +0200

    Better fix for strcasecmp on Darwin

commit f609eec71a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 18 00:01:06 2014 +0200

    Bump

commit 8ddffe7aac
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 17 23:57:17 2014 +0200

    Ugly hack to fix building on old Darwin

    http://hydra.nixos.org/build/12580878

commit 049c0eb49c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 17 16:57:07 2014 +0200

    nix-daemon: Add trusted-users and allowed-users options

    ‘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.

commit 0c730887c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 17 15:49:33 2014 +0200

    nix-daemon: Show name of connecting user

commit 77c972c898
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 17 15:41:11 2014 +0200

    nix-daemon: Only print connection info if we have SO_PEERCRED

commit 8f72e702a1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 17 15:23:31 2014 +0200

    nix-daemon: Fix compat with older clients

commit 2304a7dd21
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 16:32:26 2014 +0200

    Get rid of a compiler warning

commit 985f1595fe
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 16:30:50 2014 +0200

    Be more strict about file names in NARs

commit 276a40b31f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 16:02:05 2014 +0200

    Handle case collisions on case-insensitive systems

    When running NixOps under Mac OS X, we need to be able to import store
    paths built on Linux into the local Nix store. However, HFS+ is
    usually case-insensitive, so if there are directories with file names
    that differ only in case, then importing will fail.

    The solution is to add a suffix ("~nix~case~hack~<integer>") to
    colliding files. For instance, if we have a directory containing
    xt_CONNMARK.h and xt_connmark.h, then the latter will be renamed to
    "xt_connmark.h~nix~case~hack~1". If a store path is dumped as a NAR,
    the suffixes are removed. Thus, importing and exporting via a
    case-insensitive Nix store is round-tripping. So when NixOps calls
    nix-copy-closure to copy the path to a Linux machine, you get the
    original file names back.

    Closes #119.

commit bb65460feb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 11:19:12 2014 +0200

    Make dev-shell script work on Darwin

commit de8be7c3e0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 11:16:54 2014 +0200

    Install systemd and Upstart stuff only on Linux

commit 048be62484
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Jul 16 01:11:24 2014 -0400

    Pass *_proxy vars to bootstrap fetchurl

commit a2c85b2ef8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 16 11:09:01 2014 +0200

    Manual: Typo

commit 5bcb982711
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 14 12:39:33 2014 +0200

    Remove cruft

commit fa13d3f4f3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 14 12:19:27 2014 +0200

    build-remote.pl: Fix building multiple output derivations

    We were importing paths without sorting them topologically, leading to
    "path is not valid" errors.

    See e.g. http://hydra.nixos.org/build/12451761

commit b2e0293f02
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jul 12 00:43:28 2014 +0200

    build-remote.pl: Don't keep a shell process around

commit a00a98548e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jul 12 00:09:43 2014 +0200

    build-remote.pl: Fix build log

commit 838138c5c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 11 16:20:12 2014 +0200

    Fix test

commit a5c6347ff0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 11 16:02:19 2014 +0200

    build-remote.pl: Use ‘nix-store --serve’ on the remote side

    This makes things more efficient (we don't need to use an SSH master
    connection, and we only start a single remote process) and gets rid of
    locking issues (the remote nix-store process will keep inputs and
    outputs locked as long as they're needed).

    It also makes it more or less secure to connect directly to the root
    account on the build machine, using a forced command
    (e.g. ‘command="nix-store --serve --write"’). This bypasses the Nix
    daemon and is therefore more efficient.

    Also, don't call nix-store to import the output paths.

commit b8f24f2535
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 11 14:27:17 2014 +0200

    Fix closure size display

commit e196eecbe6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 11 13:55:06 2014 +0200

    Allow $NIX_BUILD_HOOK to be relative to Nix libexec directory

commit d0eb970fb4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 21:48:21 2014 +0200

    Fix broken Pid constructor

commit edbfe2232e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 21:30:22 2014 +0200

    Replace message "importing path <...>" with "exporting path <...>"

    This causes nix-copy-closure to show what it's doing before rather
    than after.

commit 42d91b079c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 21:14:34 2014 +0200

    Fix use of sysread

commit 7bb632b024
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 20:43:04 2014 +0200

    nix-copy-closure -s: Do substitutions via ‘nix-store --serve’

    This means we no longer need an SSH master connection, since we only
    execute a single command on the remote host.

commit 7c3a5090bf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 17:44:18 2014 +0200

    nix-copy-closure: Fix --dry-run

commit 43b64f5038
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 17:32:21 2014 +0200

    Remove tabs

commit 8e9140cfde
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 16:50:51 2014 +0200

    Refactoring: Move all fork handling into a higher-order function

    C++11 lambdas ftw.

commit 1114c7bd57
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 14:15:12 2014 +0200

    nix-copy-closure: Restore compression and the progress viewer

commit 7911e4c27a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 23 09:15:35 2014 -0400

    Remove maybeVfork

commit 04170d06bf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 11:51:22 2014 +0200

    nix-copy-closure: Fix race condition

    There is a long-standing race condition when copying a closure to a
    remote machine, particularly affecting build-remote.pl: the client
    first asks the remote machine which paths it already has, then copies
    over the missing paths. If the garbage collector kicks in on the
    remote machine between the first and second step, the already-present
    paths may be deleted. The missing paths may then refer to deleted
    paths, causing nix-copy-closure to fail. The client now performs both
    steps using a single remote Nix call (using ‘nix-store --serve’),
    locking all paths in the closure while querying.

    I changed the --serve protocol a bit (getting rid of QueryCommand), so
    this breaks the SSH substituter from older versions. But it was marked
    experimental anyway.

    Fixes #141.

commit 2c3a8f787b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 11:46:01 2014 +0200

    Fix security hole in ‘nix-store --serve’

    Since it didn't check that the path received from the client is a
    store path, the client could dump any path in the file system.

commit 66dbc0fdee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 10 01:50:29 2014 +0200

    Add a test for the SSH substituter

commit 0e5d0c1543
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 9 12:14:40 2014 +0200

    Fix compilation error on some versions of GCC

    src/libexpr/primops.cc:42:8: error: looser throw specifier for 'virtual nix::InvalidPathError::~InvalidPathError()'
    src/libexpr/nixexpr.hh:12:1: error:   overriding 'virtual nix::EvalError::~EvalError() noexcept (true)'

    http://hydra.nixos.org/build/12385750

commit beac05c206
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 8 20:41:25 2014 +0200

    Don't build on Ubuntu 10.10

    Its C++ compiler is too old.

    http://hydra.nixos.org/build/12385722

commit beaf3e90af
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 4 13:34:15 2014 +0200

    Add builtin function ‘fromJSON’

    Fixes #294.

commit e82951fe23
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 3 12:36:58 2014 +0200

    Manual: html -> xhtml

commit e477f0e938
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 27 11:36:23 2014 +0200

    Style fix

commit 858b8f9760
Author: Paul Colomiets <paul@colomiets.name>
Date:   Tue Jun 24 00:30:22 2014 +0300

    Add `--json` argument to `nix-instantiate`

commit 8504e7d604
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 27 11:20:16 2014 +0200

    allow-arbitrary-code-during-evaluation -> allow-unsafe-native-code-during-evaluation

commit d7be6d45d9
Merge: 9d0709e d62f46e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 27 11:18:54 2014 +0200

    Merge branch 'shlevy-import-native'

commit d62f46e500
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Jun 24 10:50:03 2014 -0400

    Only add the importNative primop if the allow-arbitrary-code-during-evaluation option is true (default false)

commit 5cd022d6c0
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jun 1 10:42:56 2014 -0400

    Add importNative primop

    This can be used to import a dynamic shared object and return an
    arbitrary value, including new primops. This can be used both to test
    new primops without having to recompile nix every time, and to build
    specialized primops that probably don't belong upstream (e.g. a function
    that calls out to gpg to decrypt a nixops secret as-needed).

    The imported function should initialize the Value & as needed. A single
    import can define multiple values by creating an attrset or list, of
    course.

    An example initialization function might look like:

    extern "C" void initialize(nix::EvalState & state, nix::Value & v)
    {
        v.type = nix::tPrimOp;
        v.primOp = NEW nix::PrimOp(myFun, 1, state.symbols.create("myFun"));
    }

    Then `builtins.importNative ./example.so "initialize"` will evaluate to
    the primop defined in the myFun function.

commit 9d0709e8c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 12 17:30:37 2014 +0200

    Don't use member initialisers

    They're a little bit too recent (only supported since GCC 4.7).

    http://hydra.nixos.org/build/11851475

commit 48495f67ed
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 12 13:15:35 2014 +0200

    Fix bogus warnings about dumping large paths

    Also, yay for C++11 non-static initialisers.

commit 0960d674d4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 12 13:00:54 2014 +0200

    Drop ImportError and FindError

    We're not catching these anywhere.

commit 718f20da6d
Author: Shea Levy <shea@shealevy.com>
Date:   Fri May 30 15:43:31 2014 -0400

    findFile: Realise the context of the path attributes

commit a8fb575c98
Author: Shea Levy <shea@shealevy.com>
Date:   Fri May 30 15:04:17 2014 -0400

    Share code between scopedImport and import

    In addition to reducing duplication, this fixes both import from
    derivation and import of derivation for scopedImport

commit 61c464f252
Author: Steve Purcell <steve@sanityinc.com>
Date:   Thu Jun 5 11:04:48 2014 +0100

    Add autoloads, make code more concise & idiomatic

    - Use define-derived-mode to declare nix-mode
    - Use autoloads to ensure nix-mode is usable (and enabled) without needing `require`
    - Use set + make-local-variable instead of longer 2-step equivalent

commit ee7fe64c0a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jun 10 14:02:56 2014 +0200

    == operator: Ignore string context

    There really is no case I can think of where taking the context into
    account is useful. Mostly it's just very inconvenient.

commit b1beed97a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jun 10 13:45:50 2014 +0200

    Report daemon OOM better

    When copying a large path causes the daemon to run out of memory, you
    now get:

      error: Nix daemon out of memory

    instead of:

      error: writing to file: Broken pipe

commit 829af22759
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jun 10 13:30:09 2014 +0200

    Print a warning when loading a large path into memory

    I.e. if you have a derivation with

      src = ./huge-directory;

    you'll get a warning that this is not a good idea.

commit 3c6b8a5215
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 2 17:58:43 2014 +0200

    nix-env -qa --json: Generate valid JSON even if there are invalid meta attrs

commit ceed819284
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 29 19:04:27 2014 +0200

    Fix test

commit becc2b0167
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 29 19:02:14 2014 +0200

    Sort nixPath attributes

commit 54a34119f3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 17:53:17 2014 +0200

    Use std::unordered_set

commit a457d5ad4d
Author: Aristid Breitkreuz <aristidb@gmail.com>
Date:   Sun May 4 14:26:41 2014 +0200

    nix-build: --add-root also takes 1 parameter

commit b1d39d4765
Author: Sönke Hahn <soenkehahn@gmail.com>
Date:   Fri May 23 11:41:09 2014 +0800

    dev-shell is a bash script, not sh

    'type -p' does not work in e.g. dash

commit 8ea9fd7aa6
Author: Adam Szkoda <adaszko@gmail.com>
Date:   Sun May 25 10:54:54 2014 +0200

    Rephrase @ operator description

commit d8c061e044
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 17:14:28 2014 +0200

    Remove ExprBuiltin

    It's slower than ExprVar since it doesn't compute a static
    displacement. Since we're not using the throw primop in the
    implementation of <...> anymore, it's also not really needed.

commit 62a6eeb1f3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 17:02:22 2014 +0200

    Make the Nix search path declarative

    Nix search path lookups like <nixpkgs> are now desugared to ‘findFile
    nixPath <nixpkgs>’, where ‘findFile’ is a new primop. Thus you can
    override the search path simply by saying

      let
        nixPath = [ { prefix = "nixpkgs"; path = "/my-nixpkgs"; } ];
      in ... <nixpkgs> ...

    In conjunction with ‘scopedImport’ (commit
    c273c15cb1), the Nix search path can be
    propagated across imports, e.g.

      let

        overrides = {
          nixPath = [ ... ] ++ builtins.nixPath;
          import = fn: scopedImport overrides fn;
          scopedImport = attrs: fn: scopedImport (overrides // attrs) fn;
          builtins = builtins // overrides;
        };

      in scopedImport overrides ./nixos

commit 39d72640c2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 16:50:36 2014 +0200

    Ensure that -I flags get included in nixPath

    Also fixes #261.

commit a8edf185a9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 14:55:47 2014 +0200

    Add constant ‘nixPath’

    It contains the Nix expression search path as a list of { prefix, path
    } sets, e.g.

      [ { path = "/nix/var/nix/profiles/per-user/root/channels/nixos"; prefix = ""; }
        { path = "/etc/nixos/configuration.nix"; prefix = "nixos-config"; }
        { path = "/home/eelco/Dev/nix/inst/share/nix/corepkgs"; prefix = "nix"; }
      ]

commit c273c15cb1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 13:46:11 2014 +0200

    Add primop ‘scopedImport’

    ‘scopedImport’ works like ‘import’, except that it takes a set of
    attributes to be added to the lexical scope of the expression,
    essentially extending or overriding the builtin variables.  For
    instance, the expression

      scopedImport { x = 1; } ./foo.nix

    where foo.nix contains ‘x’, will evaluate to 1.

    This has a few applications:

    * It allows getting rid of function argument specifications in package
      expressions. For instance, a package expression like:

        { stdenv, fetchurl, libfoo }:

        stdenv.mkDerivation { ... buildInputs = [ libfoo ]; }

      can now we written as just

        stdenv.mkDerivation { ... buildInputs = [ libfoo ]; }

      and imported in all-packages.nix as:

        bar = scopedImport pkgs ./bar.nix;

      So whereas we once had dependencies listed in three places
      (buildInputs, the function, and the call site), they now only need
      to appear in one place.

    * It allows overriding builtin functions. For instance, to trace all
      calls to ‘map’:

      let
        overrides = {
          map = f: xs: builtins.trace "map called!" (map f xs);

          # Ensure that our override gets propagated by calls to
          # import/scopedImport.
          import = fn: scopedImport overrides fn;

          scopedImport = attrs: fn: scopedImport (overrides // attrs) fn;

          # Also update ‘builtins’.
          builtins = builtins // overrides;
        };
      in scopedImport overrides ./bla.nix

    * Similarly, it allows extending the set of builtin functions. For
      instance, during Nixpkgs/NixOS evaluation, the Nixpkgs library
      functions could be added to the default scope.

    There is a downside: calls to scopedImport are not memoized, unlike
    import. So importing a file multiple times leads to multiple parsings
    / evaluations. It would be possible to construct the AST only once,
    but that would require careful handling of variables/environments.

commit f0fdbd0897
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 26 12:34:15 2014 +0200

    Shut up some signedness warnings

commit 0321ef9bb2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 23 14:43:55 2014 +0200

    Ugly hack to allow --argstr values starting with a dash

    Fixes #265.

commit 3064a82156
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 22 11:38:50 2014 +0200

    Disable parallel.sh test

    It breaks randomly: http://hydra.nixos.org/build/11152871

commit 9f9080e2c0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 21 17:19:36 2014 +0200

    nix-store -l: Fetch build logs from the Internet

    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.

commit eac5841970
Author: Shea Levy <shea@shealevy.com>
Date:   Thu May 15 11:30:46 2014 -0400

    Provide a more useful error message when a dynamic attr lookup fails

commit 8d5f472f2c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 15 11:37:44 2014 +0200

    lvlInfo -> lvlTalkative

commit 84813af5b9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 15 11:33:46 2014 +0200

    nix-store --optimise: Remove bogus statistics

commit 690adeb03d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 15 11:19:16 2014 +0200

    Remove tab

commit a1b66f316e
Merge: e384e7b 3b9ea84
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 15 11:18:29 2014 +0200

    Merge branch 'master' of github.com:wmertens/nix

commit 3b9ea8452f
Author: Wout Mertens <Wout.Mertens@gmail.com>
Date:   Thu May 15 09:02:22 2014 +0200

    Shortcut store files before lstat

    readdir() already returns the inode numbers, so we don't need to call
    lstat to know if a file was already linked or not.

commit d73ffc552f
Author: Wout Mertens <Wout.Mertens@gmail.com>
Date:   Wed May 14 22:52:10 2014 +0200

    Use the inodes given by readdir directly

commit e384e7b387
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 14 22:25:25 2014 +0200

    Remove redundant code

commit e974f20c98
Author: Wout Mertens <Wout.Mertens@gmail.com>
Date:   Tue May 13 23:10:06 2014 +0200

    Preload linked hashes to speed up lookups

    By preloading all inodes in the /nix/store/.links directory, we can
    quickly determine of a hardlinked file was already linked to the hashed
    links.
    This is tolerant of removing the .links directory, it will simply
    recalculate all hashes in the store.

commit 36662eb562
Author: Ricky Elrod <ricky@elrod.me>
Date:   Sun May 11 18:57:53 2014 -0400

    Prepare nix-mode to be uploaded to marmalade

    Signed-off-by: Ricky Elrod <ricky@elrod.me>

commit 95501c4dee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 13 12:54:28 2014 +0200

    nix-instantiate --eval: Apply auto-arguments if the result is a function

    Fixes #254.

commit a55e77ae10
Author: Charles Strahan <charles.c.strahan@gmail.com>
Date:   Mon May 12 14:31:16 2014 -0400

    fix typo

commit a84f503d86
Author: wmertens <Wout.Mertens@gmail.com>
Date:   Sat May 10 15:53:01 2014 +0200

    Shortcut already-hardlinked files

    If an inode in the Nix store has more than 1 link, it probably means that it was linked into .links/ by us. If so, skip.

    There's a possibility that something else hardlinked the file, so it would be nice to be able to override this.

    Also, by looking at the number of hardlinks for each of the files in .links/, you can get deduplication numbers and space savings.

commit aa9b1cf48e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 6 10:51:16 2014 +0200

    Really fix the RPM builds

    http://hydra.nixos.org/build/10840199

commit 2c4affbaa8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 5 20:22:35 2014 +0200

    Fix RPM build

    We don't install a nix.conf anymore.

    http://hydra.nixos.org/build/10826143

commit 93506e60d2
Author: Rob Vermaas <rob.vermaas@gmail.com>
Date:   Sat May 3 17:54:48 2014 +0200

    Add ubuntu 14.04

commit 40250f23a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 19:04:10 2014 +0200

    Don't install Upstart job on Fedora

    Also, don't install a nix.conf anymore, it's not needed.

    http://hydra.nixos.org/build/10775854

commit 6dd1087396
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 19:02:10 2014 +0200

    Fix Debian tests

    These actually run as root in a VM, so they get confused.

    http://hydra.nixos.org/build/10775854

commit a8c31d5011
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 14:44:44 2014 +0200

    Simplify multi-user installation instructions

commit 696f960dee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 14:31:15 2014 +0200

    Set up directories and permissions for multi-user install automatically

    This automatically creates /nix/var/nix/profiles/per-user and sets the
    permissions/ownership on /nix/store to 1775 and root:nixbld.

commit 20668b1363
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 13:14:10 2014 +0200

    Install an Upstart service

commit de4cdd0d47
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 12:51:43 2014 +0200

    Set build-max-jobs to the number of available cores by default

    More zero configuration.

commit ada3e3fa15
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 2 12:46:03 2014 +0200

    When running as root, use build users by default

    This removes the need to have a nix.conf, and prevents people from
    accidentally running Nix builds as root.

commit eeffdb74dc
Author: Charles Strahan <charles.c.strahan@gmail.com>
Date:   Sun Apr 27 14:07:50 2014 -0400

    doc fix: swap 'import' and 'export'

commit 31fe55bb8e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 25 14:55:13 2014 +0200

    trunk -> master

commit 700c678c2e
Author: Ricardo M. Correia <rcorreia@wizy.org>
Date:   Fri Apr 11 17:10:20 2014 +0200

    nix-env: Minor change to '--delete-generations Nd' semantics

    The option '--delete-generations Nd' deletes all generations older than N
    days. However, most likely the user does not want to delete the
    generation that was active N days ago.

    For example, say that you have these 3 generations:

    1: <30 days ago>
    2: <15 days ago>
    3: <1 hour ago>

    If you do --delete-generations 7d (say, as part of a cron job), most
    likely you still want to keep generation 2, i.e. the generation that was
    active 7 days ago (and for most of the past 7 days, in fact).

    This patch fixes this issue. Note that this also affects
    'nix-collect-garbage --delete-older-than Nd'.

    Thanks to @roconnor for noticing the issue!

commit fb5d76b89e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 15 15:32:27 2014 +0200

    Fix test evaluation

commit a1917208c0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 11 15:11:28 2014 +0200

    Bump date

commit 742933116f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 11 11:15:24 2014 +0200

    Bump version to 1.8

commit 924e19341a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 10 23:42:48 2014 +0200

    Don't barf when installing as root

commit b0a09a6f32
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Apr 9 14:52:43 2014 +0200

    Add docbook icons to the distribution

    Grmbl...

commit dfa2f77d2e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 19:24:29 2014 +0200

    If a .drv cannot be parsed, show its path

    Otherwise you just get ‘expected string `Derive(['’ which isn't very helpful.

commit e0a947cde6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 16:28:39 2014 +0200

    Simplify quick start section

commit d23931f3a4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 16:10:25 2014 +0200

    Remove redundant stuff

commit 4846005741
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 16:09:56 2014 +0200

    Update installation instructions

commit 2b6c8ef401
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 14:08:57 2014 +0200

    nix-shell --pure: Keep the user's $PAGER

commit 76cbf55a6d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 8 13:51:34 2014 +0200

    Ensure that systemd units to into lib, not lib64

    http://hydra.nixos.org/build/10170940

commit 89f9232813
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 7 12:00:23 2014 +0200

    Update release notes

commit 84d6936371
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 7 11:18:54 2014 +0200

    Install systemd units

commit 8e5fbf4d73
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 22:52:14 2014 +0200

    Show position info in attribute selection errors

commit 4c5faad994
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 22:43:52 2014 +0200

    Show position info in Boolean operations

commit bd9b1d97b4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 22:19:33 2014 +0200

    Show position info in string concatenation / addition errors

commit 8160f794e7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 21:53:47 2014 +0200

    derivation: Don't require certain function arguments

    Turns out that in Nixpkgs, derivation is actually called without a
    ‘name’ argument in some places :-(

commit a5fe730940
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 21:14:11 2014 +0200

    forceString: Show position info

commit 27b44b8cf7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 19:11:40 2014 +0200

    forceAttrs: Show position info

commit 96b695ccab
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 19:05:36 2014 +0200

    forceList: Show position info

commit b62d36963c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 18:58:15 2014 +0200

    forceInt: Show position info

commit c28de6d96e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 18:51:01 2014 +0200

    Pass position information to primop calls

    For example:

      error: `tail' called on an empty list, at
        /home/eelco/Dev/nixpkgs/pkgs/applications/misc/hello/ex-2/default.nix:13:7

commit 8b31ffd10d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 17:58:23 2014 +0200

    Remove unnecessary quotes around file names

commit b72c8d2e5b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 17:53:52 2014 +0200

    Include position info in function application

    This allows error messages like:

      error: the anonymous function at `/etc/nixos/configuration.nix:1:1'
        called without required argument `foo', at
        `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/lib/modules.nix:77:59'

commit 3f8e1f5682
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 14:51:07 2014 +0200

    Update release notes

commit 1f19fdbd45
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 4 13:49:53 2014 +0200

    Document that we require a C++11 compiler

commit ae6b631dc4
Author: Danny Wilson <danny@decube.net>
Date:   Thu Apr 3 16:59:25 2014 +0200

    Fix compile errors on Illumos

commit daa16cca11
Merge: f0de863 7191a73
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 3 17:37:14 2014 +0200

    Sync with make-rules repo

commit 7191a7394a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 3 17:35:16 2014 +0200

    Support Illumos

    From https://github.com/NixOS/nix/pull/236

commit f0de86357c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 3 15:24:02 2014 +0200

    Tweak error message

commit e7720aa10a
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Apr 2 23:41:11 2014 +0200

    Make sure /dev/pts/ptmx is world-writable

    While running Python 3’s test suite, we noticed that on some systems
    /dev/pts/ptmx is created with permissions 0 (that’s the case with my
    Nixpkgs-originating 3.0.43 kernel, but someone with a Debian-originating
    3.10-3 reported not having this problem.)

    There’s still the problem that people without
    CONFIG_DEVPTS_MULTIPLE_INSTANCES=y are screwed (as noted in build.cc),
    but I don’t see how we could work around it.

commit ac6ceea764
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 1 17:04:38 2014 +0200

    Fix potential segfault

    The newEnv variable was accessed (via the dynamicEnv) pointer after it
    had gone out of scope.

    Fixes #234.

commit 034b6f6062
Author: Ricardo M. Correia <rcorreia@wizy.org>
Date:   Tue Mar 11 22:16:00 2014 +0100

    nix-collect-garbage: Add --delete-older-than option

commit 7ef7597f71
Author: Ricardo M. Correia <rcorreia@wizy.org>
Date:   Tue Mar 11 21:47:21 2014 +0100

    nix-env: Add support for --delete-generations 15d

    It will delete all generations older than the specified number of days.

commit 59c9019685
Author: Maxim Ivanov <ivanov.maxim@gmail.com>
Date:   Sat Mar 29 11:43:11 2014 +0000

    Fix nix-shell for derivation with multiple outputs

    If derivation declares multiple outputs and first (default) output
    if not "out", then "nix-instantiate" calls return path with output
    names appended after "!". Than suffix must be stripped before
    ant path checks are done.

commit 1c2550a2ae
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Mar 30 00:49:23 2014 +0100

    boost::shared_ptr -> std::shared_ptr

commit 9becaa041f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Mar 29 22:20:33 2014 +0100

    Drop pointless #include

commit acb8facbbc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Mar 29 22:14:11 2014 +0100

    Fix potential segfault in waitForInput()

    Since the addition of build-max-log-size, a call to
    handleChildOutput() can result in cancellation of a goal.  This
    invalidated the "j" iterator in the waitForInput() loop, even though
    it was still used afterwards.  Likewise for the maxSilentTime
    handling.

    Probably fixes #231.  At least it gets rid of the valgrind warnings.

commit 90dc50b07c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Mar 29 20:20:14 2014 +0100

    restoreSIGPIPE(): Fill in sa_mask

    Issue #231.

commit 49009573bc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 28 16:59:26 2014 +0100

    Don't interpret strings as format strings

    Ludo reported this error:

      unexpected Nix daemon error: boost::too_few_args: format-string refered to more arguments than were passed

    coming from this line:

      printMsg(lvlError, run.program + ": " + string(err, 0, p));

    The problem here is that the string ends up implicitly converted to a
    Boost format() object, so % characters are treated specially.  I
    always assumed (wrongly) that strings are converted to a format object
    that outputs the string as-is.

    Since this assumption appears in several places that may be hard to
    grep for, I've added some C++ type hackery to ensures that the right
    thing happens.  So you don't have to worry about % in statements like

      printMsg(lvlError, "foo: " + s);

    or

      throw Error("foo: " + s);

commit 24cb65efc3
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Fri Mar 21 13:54:53 2014 +0100

    Make /dev/kvm optional

    The daemon now creates /dev deterministically (thanks!).  However, it
    expects /dev/kvm to be present.

    The patch below restricts that requirement (1) to Linux-based systems,
    and (2) to systems where /dev/kvm already exists.

    I’m not sure about the way to handle (2).  We could special-case
    /dev/kvm and create it (instead of bind-mounting it) in the chroot, so
    it’s always available; however, it wouldn’t help much since most likely,
    if /dev/kvm missing, then KVM support is missing.

commit 3fc056927c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 18 23:23:55 2014 +0100

    Fix tabs

commit 51800e06de
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Tue Mar 18 23:17:14 2014 +0100

    Allow recovery from isValidPath RPCs with an invalid path

    Currently, clients cannot recover from an isValidPath RPC with an
    invalid path parameter because the daemon closes the connection when
    that happens.

    More precisely:

      1. in performOp, wopIsValidPath case, ‘readStorePath’ raises an
         ‘Error’ exception;

      2. that exception is caught by the handler in ‘processConnection’;

      3. the handler determines errorAllowed == false, and thus exits after
         sending the message.

    This last part is fixed by calling ‘startWork’ early on, as in the patch
    below.

    The same reasoning could be applied to all the RPCs that take one or
    more store paths as inputs, but isValidPath is, by definition, likely to
    be passed invalid paths in the first place, so it’s important for this
    one to allow recovery.

commit f93e97517e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 17 17:35:11 2014 +0100

    Fix -j and other flags when using the daemon

commit 77e2cc6c8e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 17 17:33:13 2014 +0100

    nix-build: Fix --cores flag

commit fb8d8f5428
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 12 14:42:25 2014 +0100

    Remove unnecessary null pointer checks

    Fixes #225.

commit 006f24c7fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 12 14:25:48 2014 +0100

    Document nix-env -q --json

commit d435e46daa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 12 14:15:37 2014 +0100

    Generate release notes again

commit e9934bb5ad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 12 13:58:06 2014 +0100

    Update release notes for 1.7

commit 25386e5edc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 11 17:31:13 2014 +0100

    Fix passing meta attribute to buildenv.nix

    Since the meta attributes were not sorted, attribute lookup could
    fail, leading to package priorities and active flags not working
    correctly.

    Broken since 0f24400d90.

commit 92a848f674
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 11 13:16:21 2014 +0100

    Fix typos

commit 2f2a20ed18
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Mar 10 07:09:07 2014 -0400

    Document null dynamic attrs

commit 049a379ec6
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Mar 9 14:41:02 2014 -0400

    The expr of AttrNames/DynamicAttrDefs is always an ExprConcatStrings

commit 908e9ce259
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Mar 9 14:24:47 2014 -0400

    If a dynamic attribute name evaluates to null, remove it from the set

commit 2caab81660
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 5 16:18:13 2014 +0100

    Revert "Make ifs and asserts tail-recursive"

    This reverts commit 273322c773.

commit f7e077ad27
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Mar 5 11:11:24 2014 +0100

    Install missing Boost headers

    http://hydra.nixos.org/build/9328376

commit d6a45f6bdb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 3 15:29:58 2014 +0100

    Don't set an absolute soname

commit a376762848
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 3 15:19:04 2014 +0100

    Add support for making relocatable packages using $ORIGIN

commit 3a86888fd7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 28 14:01:26 2014 +0100

    Typo

commit 4eac3b2471
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 28 12:13:20 2014 +0100

    Add a variable GLOBAL_CXXFLAGS_PCH for use by precompiled headers

    You don't want to use GLOBAL_CXXFLAGS for passing flags like
    "-include-pch" (clang), because that means you cannot use
    GLOBAL_CXXFLAGS when generating the PCH.

commit 4e7e498ff9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 28 12:01:42 2014 +0100

    Add variable GLOBAL_COMMON_DEPS

    This is a list of dependencies on which all C/C++ object files depend.
    Primarily useful for global precompiled headers.

commit 1017bd68ea
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 27 23:25:03 2014 +0100

    Set up a private /dev/pts in the chroot

commit 3fd01b171a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 27 23:17:53 2014 +0100

    Set up a minimal /dev in chroots

    Not bind-mounting the /dev from the host also solves the problem with
    /dev/shm being a symlink to something not in the chroot.

commit c9f6232304
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 27 21:47:59 2014 +0100

    Correctly detect infinite recursion in function application

    If we're evaluating some application ‘v = f x’, we can't store ‘f’
    temporarily in ‘v’, because if ‘f x’ refers to ‘v’, it will get ‘f’
    rather than an infinite recursion error.

    Unfortunately, this breaks the tail call optimisation introduced in
    c897bac549.

    Fixes #217.

commit 29cde917fe
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 27 13:31:33 2014 +0100

    Fix deadlock in SubstitutionGoal

    We were relying on SubstitutionGoal's destructor releasing the lock,
    but if a goal is a top-level goal, the destructor won't run in a
    timely manner since its reference count won't drop to zero.  So
    release it explicitly.

    Fixes #178.

commit 7c7707638a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 22:41:29 2014 +0100

    Doh

commit 7880973827
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 19:12:31 2014 +0100

    Test trace and addErrorContext

commit 5ad263c26b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 19:08:44 2014 +0100

    Test some more primops

commit 3d0a9ec825
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:59:01 2014 +0100

    Test executables in NARs

commit 91f25f0510
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:55:18 2014 +0100

    And another one

commit 432328cc55
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:49:36 2014 +0100

    Remove another unused function

commit 509993e598
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:48:32 2014 +0100

    Remove unused function

commit d58ceae022
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:45:26 2014 +0100

    Test nix-env --switch-generation

commit 7bbc68fdff
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:42:19 2014 +0100

    Test nix-env --set

commit a0806389e9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:40:08 2014 +0100

    Test the -b and -s flags of nix-store -q

commit a9c4a98770
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:33:13 2014 +0100

    Test ~/.nix-defexpr

commit 045d3b2ed7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:28:55 2014 +0100

    Test nix-store --switch-profile and more daemon actions

commit fac6f8aac0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 18:00:46 2014 +0100

    Test nix-store -q --roots

commit 84143c4bd8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 17:58:53 2014 +0100

    Test nix-store -l

commit 19437785eb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 17:53:51 2014 +0100

    Test nix-store --optimise

commit fdff3a7eae
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 17:47:54 2014 +0100

    Add a test for nix-store --dump-db / --load-db

commit 506d86394d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 17:23:23 2014 +0100

    Installer: Handle Darwin

    "cp -r" doesn't copy symlinks properly on Darwin, but "cp -R" does.

    Fixes #215.

commit 6b9cd59a41
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 16:32:46 2014 +0100

    nix-store -r: Respect --add-root for non-derivations

    Fixes #68.
    Fixes #117.

commit 7f74513b4e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 16:07:43 2014 +0100

    Also provide an option for setting the curl connection timeout

commit 00d761016a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 15:58:37 2014 +0100

    Respect $NIX_CONNECT_TIMEOUT properly

    We were 1) using CURLOPT_TIMEOUT instead of CURLOPT_CONNECTTIMEOUT; 2)
    not passing it to the curl child process.

    Issue #93.

commit d761009e3c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 15:24:48 2014 +0100

    Add ~/.nix-profile/sbin to $PATH

    Fixes #112.

commit f14ef84a51
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 15:21:56 2014 +0100

    Warn about missing -I paths

    Fixes #121.  Note that we don't warn about missing $NIX_PATH entries
    because it's intended that some may be missing (cf. the default
    $NIX_PATH on NixOS, which includes paths like /etc/nixos/nixpkgs for
    backward compatibility).

commit 733214144a
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Jan 22 00:33:18 2014 +0000

    Document dynamic attributes

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 42eb4afd7a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 13:58:46 2014 +0100

    Simplify getting use-ssh-substituter from untrusted users

commit bf4a577a58
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 13:48:23 2014 +0100

    Fix broken patch

commit 8a02fdc38e
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date:   Fri Feb 14 14:44:01 2014 -0800

    use USER environmental variable if getting user id by getpwuid is failed in perl scripts: download-from-binary-cache.pl and nix-channel

commit dcaea042fc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 26 13:40:08 2014 +0100

    Only start download-via-ssh if it's enabled

commit df5de9dfd7
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Feb 19 07:05:15 2014 -0500

    Add use-ssh-substituter setting.

    It defaults to false and can be overridden by RemoteStore.

    Untested currently, just quickly put this together

commit 36b90e72d7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 17:08:01 2014 +0100

    nix-shell: Add --packages flag

    This allows you to easily set up a build environment containing the
    specified packages from Nixpkgs.  For example:

      $ nix-shell -p sqlite xorg.libX11 hello

    will start a shell in which the given packages are present.

commit a897b58373
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 16:46:33 2014 +0100

    nix-instantiate: Allow --dry-run as a synonym for --readonly-mode

    --dry-run is more consistent with nix-env and nix-store.

commit e1cf40fa95
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 16:34:24 2014 +0100

    nix-instantiate: Rename --eval-only to --eval, --parse-only to --parse

commit c31836008e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 16:30:19 2014 +0100

    nix-instantiate: Add a flag --expr / -E to read expressions from the command line

    This is basically a shortcut for ‘echo 'expr...' | nix-instantiate -’.
    Also supported by nix-build and nix-shell.

commit e707a8a526
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 15:32:19 2014 +0100

    Move manpages around

commit 73f74ebba0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 19 15:01:04 2014 +0100

    nix-shell: Don't leave a temporary directory in /tmp behind

commit a7e70518b8
Author: Shea Levy <shea@shealevy.com>
Date:   Sat Feb 15 11:02:47 2014 -0500

    lexer-tab.o and parser-tab.o require each other's headers

commit 70a558e202
Author: Shea Levy <shea@shealevy.com>
Date:   Sat Feb 15 10:56:11 2014 -0500

    Update ignores

commit 7bef965d6f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 18 13:35:35 2014 +0100

    Make it work on GNU Make > 3.81 again

commit 79f699edca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 18 12:57:32 2014 +0100

    More GNU Make 3.81 compatibility

commit 8129cf33d9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 18 10:46:30 2014 +0100

    Slight simplification

commit 1aa19b24b2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 18 01:01:14 2014 +0100

    Add a flag ‘--check’ to verify build determinism

    The flag ‘--check’ to ‘nix-store -r’ or ‘nix-build’ will cause Nix to
    redo the build of a derivation whose output paths are already valid.
    If the new output differs from the original output, an error is
    printed.  This makes it easier to test if a build is deterministic.
    (Obviously this cannot catch all sources of non-determinism, but it
    catches the most common one, namely the current time.)

    For example:

      $ nix-build '<nixpkgs>' -A patchelf
      ...
      $ nix-build '<nixpkgs>' -A patchelf --check
      error: derivation `/nix/store/1ipvxsdnbhl1rw6siz6x92s7sc8nwkkb-patchelf-0.6' may not be deterministic: hash mismatch in output `/nix/store/4pc1dmw5xkwmc6q3gdc9i5nbjl4dkjpp-patchelf-0.6.drv'

    The --check build fails if not all outputs are valid.  Thus the first
    call to nix-build is necessary to ensure that all outputs are valid.

    The current outputs are left untouched: the new outputs are either put
    in a chroot or diverted to a different location in the store using
    hash rewriting.

commit 4ec626a286
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 23:24:12 2014 +0100

    Test nix-store --verify-path and --repair-path

commit 99f14c2584
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 23:10:40 2014 +0100

    Don't build on Debian 6.0

    Its linker is too old to understand --no-copy-dt-needed-entries.

    http://hydra.nixos.org/build/9113883

commit b6def5b542
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 23:09:48 2014 +0100

    Make --repair work on Darwin

    Mac OS X doesn't allow renaming a read-only directory.

    http://hydra.nixos.org/build/9113895

commit dfbcb7c403
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 23:04:52 2014 +0100

    Refactoring

commit 71adb090f0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 22:58:21 2014 +0100

    When using a build hook, only copy missing paths

commit 69fe6c58fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 22:25:15 2014 +0100

    Move some code around

    In particular, do replacing of valid paths during repair later.  This
    prevents us from replacing a valid path after the build fails.

commit 1da6ae4f99
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 14:48:50 2014 +0100

    nix-store --gc --max-freed: Support a unit specifier

    E.g. "--max-freed 10G" means "free ten gigabytes".

commit 00d30496ca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 14:15:56 2014 +0100

    Heuristically detect if a build may have failed due to a full disk

    This will allow Hydra to detect that a build should not be marked as
    "permanently failed", allowing it to be retried later.

commit e81d38c02b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 13:34:24 2014 +0100

    nix-shell: Execute shellHook if it exists

    Since normal builds don't execute shellHook, this allows nix-shell
    specific customisation.  Suggested by Domen.

commit 832377bbd6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 17 12:22:50 2014 +0100

    Add a test for repairing paths

commit 581a160c11
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 14 20:12:04 2014 +0100

    Add a function for looking up programs in $PATH

commit a9d99ab55f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 14 12:31:10 2014 +0100

    download-via-ssh: Use readStorePath

commit 4db572062c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 14 12:20:12 2014 +0100

    download-via-ssh: Show where we're downloading from

commit dba33d4018
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 14 11:48:42 2014 +0100

    Minor style fixes

commit 61fd494d76
Merge: f9fc6ac f67f527
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 14 11:42:47 2014 +0100

    Merge remote-tracking branch 'shlevy/ssh-substituter'

commit f67f52751f
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Feb 12 07:33:07 2014 -0500

    Indendation fix

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 62eb9eb76d
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Feb 12 07:27:45 2014 -0500

    Remove relic of old code

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 7438f0bc2b
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Feb 12 07:26:35 2014 -0500

    error messages start in lowercase

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 2246aa77d2
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Feb 12 07:22:36 2014 -0500

    Remove using declarations from download-via-ssh

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit f9fc6acbf4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 12 10:53:22 2014 +0100

    Document current meaning of preferLocalBuild

    Closes #208.

commit a35c6eb4a2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 11 14:15:57 2014 +0100

    Support setting CFLAGS and CXXFLAGS for libraries/programs

commit 1f841c9d50
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 10 17:42:36 2014 +0100

    Force use of Bash

    "echo -n" doesn't work with /bin/sh on Darwin.

commit 57386c9bae
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 10 16:35:59 2014 +0100

    Binary tarball: Automatically create /nix

    The tarball can now be unpacked anywhere.  The installation script
    uses "sudo" to create /nix if it doesn't exist.  It also fetches the
    nixpkgs-unstable channel.

commit c89d6b9b63
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Feb 10 07:43:13 2014 -0500

    nix-store --serve: Use a versioned protocol

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 38c3beac1a
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Feb 10 06:52:48 2014 -0500

    Move StoreApi::serve into opServe

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 1614603165
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Feb 10 06:49:37 2014 -0500

    Pass in params by const ref

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 78d979567f
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Feb 10 06:43:29 2014 -0500

    Clarify comment

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit c5839752b9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 10 10:50:29 2014 +0100

    Binary tarball: Automatically fetch the Nixpkgs channel

commit b632153ebd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 10 10:25:13 2014 +0100

    nix-shell: Use shell.nix as the default expression if it exists

commit 64e23d0a38
Author: Shea Levy <shea@shealevy.com>
Date:   Sat Feb 8 00:05:46 2014 -0500

    Add download-via-ssh substituter

    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>

commit 5671188eb2
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Feb 7 16:56:00 2014 -0500

    nix-store --serve: Flush out after every loop

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 73874629ef
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Feb 7 16:17:52 2014 -0500

    nix-store --serve: Use dump instead of export

    Also remove signing support

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 188f96500b
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Feb 7 15:29:32 2014 -0500

    nix-store --serve: Don't fail if asked for info about non-valid path

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 9488447594
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Feb 7 14:07:31 2014 -0500

    nix-store --serve: Don't loop forever

    nix-store --export takes a tmproot, which can only release by exiting.
    Substituters don't currently work in a way that could take advantage of
    the looping, anyway.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 3a38d0f356
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Feb 6 11:52:03 2014 -0500

    Add the nix-store --serve command

    This is essentially the substituter API operating on the local store,
    which will be used by the ssh substituter. It runs in a loop rather than
    just taking one command so that in the future nix will be able to keep
    one connection open for multiple instances of the substituter.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 84a8b5e9af
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Feb 4 10:37:10 2014 -0500

    nix-instantiate --eval-only --read-write-mode: Don't depend on ordering

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit e4058fab64
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Feb 4 10:35:30 2014 -0500

    Rename --no-readonly-mode --read-write-mode

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 0c3e8a616e
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Feb 4 09:17:59 2014 -0500

    nix-instantiate: Add a --no-readonly-mode flag

    This allows running nix-instantiate --eval-only without performing the
    evaluation in readonly mode, letting features like import from
    derivation and automatic substitution of builtins.storePath paths work.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 0432bc52ea
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 7 17:34:39 2014 +0100

    Fix the RPM build

commit 7fab23e237
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 7 17:15:00 2014 +0100

    Install header files

commit 764d90597a
Merge: 2a469ad a210c99
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 7 16:27:34 2014 +0100

    Merge commit 'a210c995cdd9279ed4137ec5d2e4cc928cb36097'

commit a210c995cd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 7 15:06:21 2014 +0100

    Support DESTDIR

commit 97f8e9bc76
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 6 19:06:08 2014 +0100

    Remove dead code

commit 2a469ad31d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 6 14:21:14 2014 +0100

    Set a maintainer address

    Issue #202.

commit 1f94ec3924
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 6 13:54:44 2014 +0100

    Clean up a test warning

commit 20d0598928
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 6 13:51:57 2014 +0100

    Drop dependency on ‘expr’

    http://hydra.nixos.org/build/8715639

    Not sure why this causes a failure now.

commit 4161fce472
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 6 10:59:58 2014 +0100

    Create the target directory of libraries and programs

commit 80b691316c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 4 11:08:41 2014 +0100

    Fix version in nix.spec

    http://hydra.nixos.org/build/8715502

commit 4ee6001f95
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 4 11:02:49 2014 +0100

    GNU Make 3.81 compatibility

    3.81 doesn't understand the ‘define foo =’ syntax, which was added in
    3.82.  So use ‘define foo’ instead.

commit 0da82efa5d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 4 11:02:49 2014 +0100

    GNU Make 3.81 compatibility

    3.81 doesn't understand the ‘define foo =’ syntax, which was added in
    3.82.  So use ‘define foo’ instead.

commit 143224f7cd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 4 10:09:45 2014 +0100

    Add nix.spec to the distribution

commit d210cdc435
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 3 22:36:07 2014 +0100

    Fix assertion failure in ‘nix-store --load-db’

    Namely:

      nix-store: derivations.cc:242: nix::Hash nix::hashDerivationModulo(nix::StoreAPI&, nix::Derivation): Assertion `store.isValidPath(i->first)' failed.

    This happened because of the derivation output correctness check being
    applied before the references of a derivation are valid.

commit 73a775f3b7
Merge: d6582c0 8468806
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 3 19:57:02 2014 +0100

    Merge commit '8468806552d6730abec6431c42b5b0e897c0222c'

commit 8468806552
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Feb 3 17:05:55 2014 +0100

    Add a basic README

commit d6582c04c1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 16:57:38 2014 +0100

    Give a friendly error message if the DB directory is not writable

    Previously we would say "error: setting synchronous mode: unable to
    open database file" which isn't very helpful.

commit 2f9bb5c7e7
Merge: c5ba081 6dca720
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 16:41:52 2014 +0100

    Merge branch 'make'

commit 6dca72006a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 16:30:24 2014 +0100

    Only run "git ls-files" when doing "make check"

commit 2a97f7b039
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 16:08:59 2014 +0100

    Fix logging test

commit 965218a62a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 16:08:51 2014 +0100

    Remove obsolete file

commit b6465ae5d3
Merge: 762ef46 28dc488
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 15:37:59 2014 +0100

    Merge commit '28dc4883356a50f2805a3e3c819a541c44a4ff0a' into make

commit 762ef464f8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 15:37:50 2014 +0100

    Fix the nix-profile test

commit 28dc488335
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 15:33:27 2014 +0100

    installcheck: Don't depend on install

    This is a hack to prevent "installcheck" from clobbering files fixed
    up by Nixpkgs' fixupPhase.

commit 844d83352c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 15:18:48 2014 +0100

    More "make dist" fixes

commit 74ca70da3a
Merge: 6ef32bd 1eff3ad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 14:38:28 2014 +0100

    Add 'mk/' from commit '1eff3ad37fdb9dcf9f8528fdacea0ebf0e79d545'

    git-subtree-dir: mk
    git-subtree-mainline: 6ef32bddc1
    git-subtree-split: 1eff3ad37f

commit 6ef32bddc1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 14:28:31 2014 +0100

    Fix "make dist"

commit 1eff3ad37f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 14:36:44 2014 +0100

    Add missing file

commit 6f8aa145d4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 14:22:08 2014 +0100

    Improve "make dist"

commit 0c6d62cf27
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 12:26:38 2014 +0100

    Remove Automakefiles

commit 16e7d69209
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 12:23:14 2014 +0100

    Update Makefile variable names

commit ec1738589a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 12:20:06 2014 +0100

    Make variable names more regular

commit 35107038f7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 11:47:34 2014 +0100

    Support adding "make help" text

commit f324b49ea1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 11:31:25 2014 +0100

    Change dependency file names from foo.dep to .foo.o.dep

commit ac8c2ef1aa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Feb 1 11:30:21 2014 +0100

    Build/install manual

commit 4271927c5b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jan 31 15:33:12 2014 +0100

    Add support for installing man-pages

commit e0234dfddc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 30 12:11:06 2014 +0100

    Rename Makefile -> local.mk

commit 4a2ec9c659
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 30 12:08:26 2014 +0100

    Install nix-worker symlink

commit c5ba081333
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 23 13:33:00 2014 +0100

    nix-shell: Add --impure flag

    This is currently the default, but I might change that to --pure in
    the future.

commit 79dee4283d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 23 13:31:29 2014 +0100

    nix-shell: Preserve the TZ variable of the user

commit 7fdee6e136
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 23 13:27:22 2014 +0100

    nix-build: Refactor

commit 5311b2b250
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 23 10:49:53 2014 +0100

    Clang doesn't know the "-z defs" flag

commit 94f9c14d52
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 18:29:55 2014 +0100

    Fix some clang warnings

commit a26307b281
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 17:39:19 2014 +0100

    Fix build

commit 625ffd441d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 16:38:03 2014 +0100

    Ugly hack to fix building with clang

commit 68cde53c47
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 15:34:04 2014 +0100

    Fix building against Bison 3.0.2

commit 81628a6ccc
Merge: b1db599 5ef8508
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 15:30:01 2014 +0100

    Merge branch 'master' into make

    Conflicts:
    	src/libexpr/eval.cc

commit 5ef8508a92
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 15:11:57 2014 +0100

    Remove unused type

commit c8fff6a77f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 21 15:09:59 2014 +0100

    Fix evaluation

commit 0e2ca26818
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 20 14:23:07 2014 +0100

    nix.spec: Remove "make check" since it's a no-op

commit 0f2f44bb0f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 20 14:22:59 2014 +0100

    Build Fedora 20 RPMs

commit bf0ad8aabc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 15 14:34:49 2014 +0100

    nix-profile.sh: Add the Nixpkgs channel to $NIX_PATH

commit f5e5793cd2
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jan 6 13:53:57 2014 -0500

    Bare dynamic attrs: Match interpolation semantics

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit f9913f4422
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jan 6 10:27:26 2014 -0500

    Allow "bare" dynamic attrs

    Now, in addition to a."${b}".c, you can write a.${b}.c (applicable
    wherever dynamic attributes are valid).

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit e640d67144
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 13 13:50:12 2014 +0100

    Document nulls

commit f1357059a4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 13 13:46:44 2014 +0100

    nix-shell: Don't set NIX_INDENT_MAKE

    It generally is not useful in interactive environments (and messes up
    some non-ANSI-compliant terminals).

commit ea59f39326
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 13 13:42:29 2014 +0100

    nix-shell: Set $IN_NIX_SHELL before evaluating

commit ca73c0102f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jan 10 22:31:38 2014 +0100

    Nicer Make output

    E.g.

      CXX    src/nix-log2xml/log2xml.o
      CC     src/bsdiff-4.3/bsdiff.o
      GEN    scripts/nix-channel
      LD     src/libmain/libnixmain.so

commit e991ab942b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 22:14:34 2014 +0100

    Add support for building shared libraries on Mac OS X

commit b1db599dd0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 22:10:35 2014 +0100

    Generate schema.sql.hh

commit cf918b889b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 17:33:55 2014 +0100

    Handle systems where "echo -n" doesn't work

commit 70d8e8fdde
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 16:57:38 2014 +0100

    Declare template_files as a simply expanded variable

commit 814a73227f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 16:54:01 2014 +0100

    Remove duplicate elements from *_SOURCES

    This is useful when you do:

      foo_SOURCES := $(wildcard *.cc) foo.cc

    where foo.cc is a generated file.  In this case, if foo.cc already
    exists, you get foo.cc twice in foo_SOURCES, leading to a link error.

commit b4c684e0f9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 16:53:47 2014 +0100

    Update Makefiles

commit 568b1b0a8a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 16:15:16 2014 +0100

    Remove mk subdirectory in preparation for "git subtree"

commit 55c9a40613
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 9 16:12:02 2014 +0100

    Move stuff to top-level

    This makes it easier to use with "git subtree".

commit f4013b6189
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 8 17:56:58 2014 +0100

    Fix signed-binary-caches test

commit ea38e39a20
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 8 17:56:30 2014 +0100

    Test whether Nix correctly checks the hash of downloaded NARs

commit 11cb4bfb25
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 8 17:32:40 2014 +0100

    Fix checking of NAR hashes

    *headdesk*
    *headdesk*
    *headdesk*

    So since commit 22144afa8d, Nix hasn't
    actually checked whether the content of a downloaded NAR matches the
    hash specified in the manifest / NAR info file.  Urghhh...

commit 0fdf4da0e9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 8 15:23:41 2014 +0100

    Support cryptographically signed binary caches

    NAR info files in binary caches can now have a cryptographic signature
    that Nix will verify before using the corresponding NAR file.

    To create a private/public key pair for signing and verifying a binary
    cache, do:

      $ openssl genrsa -out ./cache-key.sec 2048
      $ openssl rsa -in ./cache-key.sec -pubout > ./cache-key.pub

    You should also come up with a symbolic name for the key, such as
    "cache.example.org-1".  This will be used by clients to look up the
    public key.  (It's a good idea to number keys, in case you ever need
    to revoke/replace one.)

    To create a binary cache signed with the private key:

      $ nix-push --dest /path/to/binary-cache --key ./cache-key.sec --key-name cache.example.org-1

    The public key (cache-key.pub) should be distributed to the clients.
    They should have a nix.conf should contain something like:

      signed-binary-caches = *
      binary-cache-public-key-cache.example.org-1 = /path/to/cache-key.pub

    If all works well, then if Nix fetches something from the signed
    binary cache, you will see a message like:

      *** Downloading ‘http://cache.example.org/nar/7dppcj5sc1nda7l54rjc0g5l1hamj09j-subversion-1.7.11’ (signed by ‘cache.example.org-1’) to ‘/nix/store/7dppcj5sc1nda7l54rjc0g5l1hamj09j-subversion-1.7.11’...

    On the other hand, if the signature is wrong, you get a message like

      NAR info file `http://cache.example.org/7dppcj5sc1nda7l54rjc0g5l1hamj09j.narinfo' has an invalid signature; ignoring

    Signatures are implemented as a single line appended to the NAR info
    file, which looks like this:

      Signature: 1;cache.example.org-1;HQ9Xzyanq9iV...muQ==

    Thus the signature has 3 fields: a version (currently "1"), the ID of
    key, and the base64-encoded signature of the SHA-256 hash of the
    contents of the NAR info file up to but not including the Signature
    line.

    Issue #75.

commit 405434e084
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 6 17:38:04 2014 +0100

    Revert "nix-shell: Set $IN_NIX_SHELL before evaluation"

    This reverts commit 0c1198cf08.

commit 7a61c88dbb
Merge: 485f474 cd49fe4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 6 15:46:18 2014 +0100

    Merge branch 'dynamic-attrs-no-sugar' of github.com:shlevy/nix

commit 485f4740ee
Author: Domen Kožar <domen@dev.si>
Date:   Wed Jan 1 18:10:48 2014 +0100

    wording

commit fe23e28f12
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 6 11:34:05 2014 +0100

    Disable FreeBSD tests for now

    The FreeBSD machines in the build farm are currently unreachable.

commit 4252b5a645
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 6 11:32:22 2014 +0100

    Disable the tail call test

    On i686-linux, GCC stubbornly refuses to do tail-call optimisation.
    Don't know why.

    http://hydra.nixos.org/build/7300170

commit cd49fe4f9b
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Dec 31 23:56:26 2013 +0000

    Don't use any syntactic sugar for dynamic attrs

    This doesn't change any functionality but moves some behavior out of the
    parser and into the evaluator in order to simplify the code.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 6f3a51809a
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Dec 31 17:57:10 2013 -0500

    Fold dynamic binds handling into addAttr

    Since addAttr has to iterate through the AttrPath we pass it, it makes
    more sense to just iterate through the AttrNames in addAttr instead. As
    an added bonus, this allows attrsets where two dynamic attribute paths
    have the same static leading part (see added test case for an example
    that failed previously).

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 18fefacf7d
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 20 23:25:30 2013 -0400

    Dynamic attrs

    This adds new syntax for attribute names:

    * attrs."${name}" => getAttr name attrs
    * attrs ? "${name}" => isAttrs attrs && hasAttr attrs name
    * attrs."${name}" or def => if attrs ? "${name}" then attrs."${name}" else def
    * { "${name}" = value; } => listToAttrs [{ inherit name value; }]

    Of course, it's a bit more complicated than that. The attribute chains
    can be arbitrarily long and contain combinations of static and dynamic
    parts (e.g. attrs."${foo}".bar."${baz}" or qux), which is relatively
    straightforward for the getAttrs/hasAttrs cases but is more complex for
    the listToAttrs case due to rules about duplicate attribute definitions.

    For attribute sets with dynamic attribute names, duplicate static
    attributes are detected at parse time while duplicate dynamic attributes
    are detected when the attribute set is forced. So, for example, { a =
    null; a.b = null; "${"c"}" = true; } will be a parse-time error, while
    { a = {}; "${"a"}".b = null; c = true; } will be an eval-time error
    (technically that case could theoretically be detected at parse time,
    but the general case would require full evaluation). Moreover, duplicate
    dynamic attributes are not allowed even in cases where they would be
    with static attributes ({ a.b.d = true; a.b.c = false; } is legal, but {
    a."${"b"}".d = true; a."${"b"}".c = false; } is not). This restriction
    might be relaxed in the future in cases where the static variant would
    not be an error, but it is not obvious that that is desirable.

    Finally, recursive attribute sets with dynamic attributes have the
    static attributes in scope but not the dynamic ones. So rec { a = true;
    "${"b"}" = a; } is equivalent to { a = true; b = true; } but rec {
    "${"a"}" = true; b = a; } would be an error or use a from the
    surrounding scope if it exists.

    Note that the getAttr, getAttr or default, and hasAttr are all
    implemented purely in the parser as syntactic sugar, while attribute
    sets with dynamic attribute names required changes to the AST to be
    implemented cleanly.

    This is an alternative solution to and closes #167

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 136f2f7046
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 13 16:55:33 2013 -0400

    Add the ExprBuiltin Expr type to the AST

    Certain desugaring schemes may require the parser to use some builtin
    function to do some of the work (e.g. currently `throw` is used to
    lazily cause an error if a `<>`-style path is not in the search path)
    Unfortunately, these names are not reserved keywords, so an expression
    that uses such a syntactic sugar will not see the expected behavior
    (see tests/lang/eval-okay-redefine-builtin.nix for an example).

    This adds the ExprBuiltin AST type, which when evaluated uses the value
    from the rootmost variable scope (which of course is initialized
    internally and can't shadow any of the builtins).

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 5ba5993470
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Dec 30 07:58:14 2013 -0500

    nix-shell --pure: Don't clear IN_NIX_SHELL

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit b352fe2775
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 14:18:24 2013 +0100

    Revert "Scan /proc/<pid>/cmdline for GC roots"

    This reverts commit 194e3374b8.
    Checking the command line for GC roots means that

      $ nix-store --delete $path

    will fail because $path is now a root because it's mentioned on the
    command line.

commit 8931bf7168
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 13:09:12 2013 +0000

    Doh

commit f1e5dedb61
Author: Petr Rockai <me@mornfall.net>
Date:   Sun Nov 24 21:22:23 2013 +0100

    perl: Call loadConfFile() in doInit to avoid screwing sqlite journal mode.

    If the database is opened through perl bindings (and even though nix.conf has
    use-sqlite-wal set to false), the database is automatically converted into WAL
    mode. This makes the next nix process to access the database convert it back to
    "truncate". If the database is still open at the time in wal mode by the perl
    program, this fails and crashes the nix doing the wal -> truncate conversion.

commit 7d203faff6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 13:56:42 2013 +0100

    nix-env --set-flag: Barf if a selector doesn't match any installed package

    Fixes #184.

commit 194e3374b8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 13:31:31 2013 +0100

    Scan /proc/<pid>/cmdline for GC roots

commit 769f662165
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 12:19:10 2013 +0000

    nix-shell: Don't warn about the lack of a GC root

commit 0c1198cf08
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 13:11:41 2013 +0100

    nix-shell: Set $IN_NIX_SHELL before evaluation

    This has some hacky applications.

commit 65a6452240
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 20 13:10:14 2013 +0100

    nix-shell: Handle --option correctly

    Fixes #181.

commit 259086de84
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 18 16:40:48 2013 +0100

    Add support for building JARs from Java sources

commit 99ed25accf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 18 15:01:14 2013 +0100

    Add a function for doing recursive wildcard searches

    Source: http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html

commit 7b0d8fb23d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 17 18:16:04 2013 +0100

    nix-shell --pure: Keep $TERM

commit 088552b319
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 17 12:13:48 2013 +0100

    Set default installation paths

commit e81b82a2cf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 16 16:51:05 2013 +0100

    make dryclean: Sort names

commit a630635d7f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 16 16:49:41 2013 +0100

    No longer interpret $(..._SOURCES) relative to $(..._DIR)

commit 4da8046513
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:39:58 2013 +0100

    Don't include all *.dep files

commit 034bbcafaf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:27:47 2013 +0100

    Add 'make help'

commit 45131da736
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:24:03 2013 +0100

    Get rid of whitespace in $(d)

commit c34f3c5ba4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:22:57 2013 +0100

    Handle *.cpp extension

commit dfcc64f556
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:22:25 2013 +0100

    Only provide 'make dist' if PACKAGE_NAME is set

commit 3560f52cc4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 12 11:22:08 2013 +0100

    dryclean: Show what actual files would be deleted

commit 49a385096e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 10 15:54:34 2013 +0100

    Initial commit (imported from the Nix repo)

commit e36229d27f
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Dec 5 12:07:05 2013 -0500

    Bump language version for new storePath feature

    This will allow e.g. channel expressions to use builtins.storePath IFF
    it is safe to do so without knowing if the path is valid yet.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 22d665019a
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Dec 5 11:51:54 2013 -0500

    builtins.storePath: Try to substitute the path if it is not yet valid

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit a6add93d73
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 10 13:13:59 2013 +0100

    Garbage collector: Release locks on temporary root files

    This allows processes waiting for such locks to proceed during the
    trash deletion phase of the garbage collector.

commit c5b8fe3151
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 5 14:31:57 2013 -0500

    Print a trace message if a build fails due to the platform being unknown

commit bf8b66adcf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 4 13:41:32 2013 -0500

    Add missing file

commit f3cf0436b5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 2 20:21:31 2013 +0000

    Install bsdiff and bspatch in $(libexecdir)/nix

commit 0202ce6b94
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 18:47:03 2013 +0100

    Add support for ‘make installcheck’

commit 9285f0aa2b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 16:38:33 2013 +0000

    Add a Makefile for the Perl stuff

commit 8f08046606
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 15:51:22 2013 +0000

    Expand configure variables before writing config.status

    This way, we can use config.status for generating scripts/* (without
    ending up with lines like "#! /usr/bin/perl -I${libexecdir}/...").

commit 7ce0e05ad8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 15:25:13 2013 +0000

    Rename Makefile.new -> Makefile

commit 962551a071
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 15:05:56 2013 +0000

    Add a Makefile for the scripts directory

commit 1a1d8b073a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 11:39:21 2013 +0000

    Add a Makefile for bsdiff

commit 784feb6839
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 11:29:13 2013 +0000

    Let ‘make clean’ delete instantiated template files

commit cac06ed0a4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 11:26:51 2013 +0000

    Remove obsolete setting of $CC_FOR_BUILD

commit b225ccb654
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 11:26:02 2013 +0000

    Add config.guess, config.sub and install-sh

    Autoreconf doesn't install these if you're not using Automake.

commit 0c504a756c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 11:18:41 2013 +0000

    Don't install Libtool

commit 2cc591c7b5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 10:56:14 2013 +0000

    Don't instantiate Automake makefiles

commit 79b7c596a9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 10:17:37 2013 +0000

    Use create-dir for installing dynamic libraries

commit ed0a8dd71a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 10:16:07 2013 +0000

    Add a function for instantiating Autoconf *.in files

commit f980755766
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 09:50:35 2013 +0000

    Split Makefile.lib into several *.mk files

commit e9b6397d2f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 09:17:02 2013 +0000

    Add a rule for creating directories

    The tricky thing here is that if you have a directory as a
    prerequisite, you need to declare it as a "order-only prerequisite"
    ("dir/prog: stuff | dir"), otherwise the target will be rebuilt every
    time because the timestamp on the directory keeps changing.

commit 4315acb8c0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 25 08:55:19 2013 +0000

    Add a generic rule for installing files

commit c7547cff19
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 23:56:23 2013 +0000

    Install into $(libdir) instead of $(pkglibdir)

    We don't need $(pkglibdir) anymore, since the libraries themselves
    have a "nix" prefix now.

commit 2bd0fcc966
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 23:53:41 2013 +0000

    Use libnix as a prefix for all Nix libraries

    In particular "libutil" was always a problem because it collides with
    Glibc's libutil.  Even if we install into $(libdir)/nix, the linker
    sometimes got confused (e.g. if a program links against libstore but
    not libutil, then ld would report undefined symbols in libstore
    because it was looking at Glibc's libutil).

commit f267ff16b4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 23:49:34 2013 +0000

    Allow libraries to set an actual name different from the symbolic name

commit abb5bd66de
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 23:42:50 2013 +0000

    Add Makefile for nix-log2xml

commit 07c87a8e9e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Nov 24 00:15:25 2013 +0100

    Consistent naming

commit c1f3a1a89b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Nov 24 00:10:00 2013 +0100

    Disallow undefined symbols in dynamic libraries by default

    This encourages that each library declares its own dependencies
    properly.

commit 5a1114ecdb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 20:19:36 2013 +0000

    Drop the dependency on libgc in libmain

    Instead, libexpr now depends on libgc.  This means commands like
    nix-store that don't do any evaluation no longer require libgc.

commit 06a8ac96e7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 20:15:57 2013 +0000

    Initialise Boehm GC only once

commit 90dfb37f14
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 20:11:02 2013 +0000

    Allow (dynamic) libraries to depend on other libraries

commit 14772783e6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 20:32:20 2013 +0100

    Support installation of dynamically linked programs

    Here we need to re-link programs so that their RPATH refers to the
    installed libraries.

commit 611868a909
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 17:04:27 2013 +0000

    Implement basic ‘make install’

commit d1b3ca0b4a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Nov 23 17:20:15 2013 +0100

    Improve building dynamic libraries

    They now get a correct RPATH.

commit 6dd74b48f8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 20:56:58 2013 +0000

    Support building dynamic libraries

commit 9b11a8bfbc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 20:05:00 2013 +0000

    Fix building without Boehm GC

commit 812b5a30ec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 19:51:18 2013 +0000

    Add a Makefile variable for enabling debug info

commit ea2f7df5fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 20:38:30 2013 +0100

    Introduce variables GLOBAL_CFLAGS and GLOBAL_CXXFLAGS

    There are flags that must be set, so they shouldn't be overriden by
    the user's CFLAGS or CXXFLAGS.

commit 6b5f89f2cf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 19:30:24 2013 +0000

    Drop the dependency on Automake

commit 754c05ed6c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 16:45:52 2013 +0000

    Rename $(here) to $(d) for brevity, and remove trailing slash

commit 9a14d5e2f3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 16:59:09 2013 +0100

    Automatically regenerate Makefile.config

    And move some stuff around.

commit ffdc85fc8a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 15:47:47 2013 +0000

    Respect configure flags

commit 62e35cc3a8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 16:42:25 2013 +0100

    Add ‘make dist’ support

commit eff6c4b791
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 15:41:48 2013 +0000

    Add missing #include

commit e0a108b203
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 15:25:10 2013 +0000

    Remove unnecessary line

commit eaf903f993
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 16:24:41 2013 +0100

    Clean more aggressively

commit 1474ecfe42
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 16:22:31 2013 +0100

    Generate the parser and the lexer

commit bc96c4518e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 15:10:33 2013 +0000

    Automatically emit make rules for header files

commit b8e9efc476
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 15:54:18 2013 +0100

    New non-recursive, plain Make-based build system

commit 709cbe4e76
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 22 10:00:43 2013 +0000

    Include <cstring> for memset

    This should fix building on Illumos.

commit d4a76ff0e4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 14:45:19 2013 +0100

    Bump version number

commit 30b986908e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 14:29:39 2013 +0100

    Check meta values and warn about bad ones

commit 0f24400d90
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 14:09:03 2013 +0100

    Generalise meta attributes

commit 990126cde0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 12:08:03 2013 +0000

    Shorter error message

commit af94a70ba6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 11:18:13 2013 +0100

    Drop support for user environment manifests in ATerm format

commit 245e26408f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 00:41:45 2013 +0100

    nix-env -q: Add a --json flag

commit 5fea98111b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 00:33:06 2013 +0100

    Refactor JSON output

commit 77c13cdf56
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 19 00:03:11 2013 +0100

    Add a toJSON primop

commit 285df765b9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 18 22:22:35 2013 +0100

    Add a primop unsafeGetAttrPos to return the position of an attribute

commit fc33fd86b7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 18 20:14:54 2013 +0100

    Add a symbol __curPos that expands to the current source location

    I.e. an attribute set { file = <string>; line = <int>; column = <int>; }.

commit 90b5e69284
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 18 10:21:12 2013 +0000

    Support quoted attribute names in -A

    This is requires if you have attribute names with dots in them.  So
    you can now say:

      $ nix-instantiate '<nixos>' -A 'config.systemd.units."postgresql.service".text' --eval-only

    Fixes #151.

commit a478e8a7bb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 14 11:57:37 2013 +0100

    Remove nix-setuid-helper

    AFAIK, nobody uses it, it's not maintained, and it has no tests.

commit 89e6781cc5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 12 12:51:59 2013 +0100

    Make function calls show up in stack traces again

    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.

commit 2bcb384e95
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 12 11:31:50 2013 +0000

    Add a test to check that tail calls run in bounded stack space

commit c897bac549
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 7 17:04:36 2013 +0000

    Make function calls tail-recursive

commit 273322c773
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 7 14:33:35 2013 +0100

    Make ifs and asserts tail-recursive

    The local Value object prevented g++ from making a tail call.  Not
    clear why.  In any case, not using a temporary makes g++ do the tail
    call.

commit 4badd7ed17
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 7 12:44:14 2013 +0000

    Get rid of an intermediary on the stack

commit 8d6418d46e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 28 22:51:12 2013 +0100

    Fix building without a garbage collector

    http://hydra.nixos.org/build/6695350

commit dec2f19502
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 28 18:50:58 2013 +0100

    Fix a segfault in genericClosure

    It kept temporary data in STL containers that were not scanned by
    Boehm GC, so Nix programs using genericClosure could randomly crash if
    the garbage collector kicked in at a bad time.

    Also make it a bit more efficient by copying points to values rather
    than values.

commit 6123144933
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 28 11:56:37 2013 +0000

    Drop Cygwin and Solaris builds

commit 1dacd427cd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 28 11:56:21 2013 +0000

    Update release notes, set version for 1.6.1 release

commit ea6bf0c21f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 28 07:34:44 2013 +0100

    Slightly optimize listToAttrs

commit 36e67ff16b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 22:06:39 2013 +0200

    Undocument obsolete form of "let"

commit fba17a9043
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 22:05:58 2013 +0200

    Doc fix

commit 2d9bb56e55
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 19:10:38 2013 +0200

    Fix segfault on Darwin

    Ever since SQLite in Nixpkgs was updated to 3.8.0.2, Nix has randomly
    segfaulted on Darwin:

      http://hydra.nixos.org/build/6175515
      http://hydra.nixos.org/build/6611038

    It turns out that this is because the binary cache substituter somehow
    ends up loading two versions of SQLite: the one in Nixpkgs and the
    other from /usr/lib/libsqlite3.dylib.  It's not exactly clear why the
    latter is loaded, but it appears to be because WWW::Curl indirectly loads
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation,
    which in turn seems to load /usr/lib/libsqlite3.dylib.  This leads to
    a segfault when Perl exits:

      #0  0x00000001010375f4 in sqlite3_finalize ()
      #1  0x000000010125806e in sqlite_st_destroy ()
      #2  0x000000010124bc30 in XS_DBD__SQLite__st_DESTROY ()
      #3  0x00000001001c8155 in XS_DBI_dispatch ()
      ...
      #14 0x0000000100023224 in perl_destruct ()
      #15 0x0000000100000d6a in main ()
      ...

    The workaround is to explicitly load DBD::SQLite before WWW::Curl.

commit 5bc41d78ff
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 16:41:04 2013 +0200

    Rename "attribute sets" to "sets"

    We don't have any other kind of sets so calling them attribute sets is
    unnecessarily verbose.

commit 9e4bb20455
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 16:02:08 2013 +0200

    Manual: Fix broken URLs

    Fixes #172.

commit dc341811d6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 15:54:23 2013 +0200

    Add rpm_fedora19i386 to the release-critical builds

commit 69befd33a9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 03:08:34 2013 +0200

    Remove unnecessary call to forceStringNoCtx

commit a5684e09d3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 02:56:00 2013 +0200

    Document typeOf

commit 411a3461dc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 02:51:28 2013 +0200

    Add a test of the type primops

commit 05d02f798f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 02:49:13 2013 +0200

    Add a typeOf primop

    We already have some primops for determining the type of a value, such
    as isString, but they're incomplete: for instance, there is no isPath.
    Rather than adding more isBla functions, the generic typeOf function
    returns a string representing the type of the argument (e.g. "int").

commit 6da92d96ae
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 02:22:24 2013 +0200

    Document NIX_SHOW_STATS and NIX_COUNT_CALLS

commit 543d8a5942
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 24 02:20:54 2013 +0200

    Don't require NIX_SHOW_STATS for NIX_COUNT_CALLS

commit fe95650487
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 23 11:16:46 2013 +0000

    Memoize evalFile() lookups under both the original and resolved name

    Previously we only used the resolved name, causing repeated resolution
    (e.g. /dir to /dir/default.nix).

commit 3139481822
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 23 11:52:25 2013 +0200

    Add an aggregate job

    Also, build for Ubuntu 13.10 and Fedora 19.

commit c086183843
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 22 11:39:10 2013 +0200

    For auto roots, show the intermediate link

    I.e. "nix-store -q --roots" will now show (for example)

      /home/eelco/Dev/nixpkgs/result

    rather than

      /nix/var/nix/gcroots/auto/53222qsppi12s2hkap8dm2lg8xhhyk6v

commit 4f4a14453a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 18 14:51:25 2013 +0200

    Don't set $PS1 in non-interactive shells

    Shouldn't really matter, but you never know.

commit 4ea034a5c5
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Oct 17 11:07:34 2013 -0400

    nix-shell: Play nicely with non-interactive shells

    nix-shell with the --command flag might be used non-interactively, but
    if bash starts non-interactively (i.e. with stdin or stderr not a
    terminal), it won't source the script given in --rcfile. However, in
    that case it *will* source the script found in $BASH_ENV, so we can use
    that instead.

    Also, don't source ~/.bashrc in a non-interactive shell (detectable by
    checking the PS1 env var)

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 792fd51f41
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 11:53:40 2013 +0200

    Fold two stack trace messages in derivations

    Combined with the previous changes, stack traces involving derivations
    are now much less verbose, since something like

      while evaluating the builtin function `getAttr':
      while evaluating the builtin function `derivationStrict':
      while instantiating the derivation named `gtk+-2.24.20' at `/home/eelco/Dev/nixpkgs/pkgs/development/libraries/gtk+/2.x.nix:11:3':
      while evaluating the derivation attribute `propagatedNativeBuildInputs' at `/home/eelco/Dev/nixpkgs/pkgs/stdenv/generic/default.nix:78:17':
      while evaluating the attribute `outPath' at `/nix/store/212ngf4ph63mp6p1np2bapkfikpakfv7-nix-1.6/share/nix/corepkgs/derivation.nix:18:9':
      ...

    now reads

      while evaluating the attribute `propagatedNativeBuildInputs' of the derivation `gtk+-2.24.20' at `/home/eelco/Dev/nixpkgs/pkgs/development/libraries/gtk+/2.x.nix:11:3':
      ...

commit f440558acc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 11:47:38 2013 +0200

    Don't show <nix/derivation.nix> in stack traces

    Messages like

      while evaluating the attribute `outPath' at `/nix/store/212ngf4ph63mp6p1np2bapkfikpakfv7-nix-1.6/share/nix/corepkgs/derivation.nix:18:9':

    are redundant, because Nix already shows that it's evaluating a derivation:

      while instantiating the derivation named `firefox-24.0' at `/home/eelco/Dev/nixpkgs/pkgs/applications/networking/browsers/firefox/default.nix:131:5':
      while evaluating the derivation attribute `nativeBuildInputs' at `/home/eelco/Dev/nixpkgs/pkgs/stdenv/generic/default.nix:76:17':

commit bb659bad81
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 11:40:20 2013 +0200

    Nix 1.6.1 release notes

commit f6a8e7f4c2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 11:18:37 2013 +0200

    Fix test

commit b08f4b0da9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 01:12:43 2013 +0200

    Test string semantics a bit more

commit d7625b5c2d
Author: goblin <github@uukgoblin.net>
Date:   Sun Sep 22 13:36:23 2013 +0100

    two typos

commit b8034e5581
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 00:57:24 2013 +0200

    Ensure proper type checking/coercion of "${expr}"

    Now we only rewrite "${expr}" to expr if expr is a string literal.

commit 9d8a80375d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 00:45:16 2013 +0200

    Add a test for type correctness of antiquotes

    Antiquotes should evaluate to strings or paths.  This is usually
    checked, except in the case where the antiquote makes up the entire
    string, as in "${expr}".  This is optimised to expr, which discards
    the runtime type checks / coercions.

commit d6a7aa8f48
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 17 00:39:59 2013 +0200

    Revert the behaviour of antiquoted paths to pre-Nix 1.6

    Commit 159e621d1a accidentally changed
    the behaviour of antiquoted paths, e.g.

      "${/foo}/bar"

    used to evaluate to "/nix/store/<hash>-foo/bar" (where /foo gets
    copied to the store), but in Nix 1.6 it evaluates to "/foo/bar".  This
    is inconsistent, since

      " ${/foo}/bar"

    evaluates to " /nix/store/<hash>-foo/bar".  So revert to the old
    behaviour.

commit b8571d68c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 23:28:10 2013 +0200

    Add a regression test for correct path antiquotation behavior

    This broke in Nix 1.6.

commit a737f51fd9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 15:58:20 2013 +0200

    Retry all SQLite operations

    To deal with SQLITE_PROTOCOL, we also need to retry read-only
    operations.

commit ff02f5336c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 14:51:20 2013 +0200

    Fix a race in registerFailedPath()

    Registering the path as failed can fail if another process does the
    same thing after the call to hasPathFailed().  This is extremely
    unlikely though.

commit 4bd5282573
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 14:46:35 2013 +0200

    Convenience macros for retrying a SQLite transaction

commit bce14d0f61
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 14:36:53 2013 +0200

    Don't wrap read-only queries in a transaction

    There is no risk of getting an inconsistent result here: if the ID
    returned by queryValidPathId() is deleted from the database
    concurrently, subsequent queries involving that ID will simply fail
    (since IDs are never reused).

commit 7cdefdbe73
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 14:27:36 2013 +0200

    Print a distinct warning for SQLITE_PROTOCOL

commit d05bf04444
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 16 14:03:22 2013 +0200

    Treat SQLITE_PROTOCOL as SQLITE_BUSY

    In the Hydra build farm we fairly regularly get SQLITE_PROTOCOL errors
    (e.g., "querying path in database: locking protocol").  The docs for
    this error code say that it "is returned if some other process is
    messing with file locks and has violated the file locking protocol
    that SQLite uses on its rollback journal files."  However, the SQLite
    source code reveals that this error can also occur under high load:

      if( cnt>5 ){
        int nDelay = 1;                      /* Pause time in microseconds */
        if( cnt>100 ){
          VVA_ONLY( pWal->lockError = 1; )
          return SQLITE_PROTOCOL;
        }
        if( cnt>=10 ) nDelay = (cnt-9)*238;  /* Max delay 21ms. Total delay 996ms */
        sqlite3OsSleep(pWal->pVfs, nDelay);
      }

    i.e. if certain locks cannot be not acquired, SQLite will retry a
    number of times before giving up and returing SQLITE_PROTOCOL.  The
    comments say:

      Circumstances that cause a RETRY should only last for the briefest
      instances of time.  No I/O or other system calls are done while the
      locks are held, so the locks should not be held for very long. But
      if we are unlucky, another process that is holding a lock might get
      paged out or take a page-fault that is time-consuming to resolve,
      during the few nanoseconds that it is holding the lock.  In that case,
      it might take longer than normal for the lock to free.
      ...
      The total delay time before giving up is less than 1 second.

    On a heavily loaded machine like lucifer (the main Hydra server),
    which often has dozens of processes waiting for I/O, it seems to me
    that a page fault could easily take more than a second to resolve.
    So, let's treat SQLITE_PROTOCOL as SQLITE_BUSY and retry the
    transaction.

    Issue NixOS/hydra#14.

commit c1994fecf9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Oct 14 15:20:45 2013 +0200

    nix-shell: Fix bash completion

    Nixpkgs's stdenv setup script sets the "nullglob" option, but doing so
    breaks Bash completion on NixOS (when ‘programs.bash.enableCompletion’
    is set) and on Ubuntu.  So clear that flag afterwards.  Of course,
    this may break stdenv functions in subtle ways...

commit 672c3acc71
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 11 10:57:23 2013 +0200

    Adjust to the NixOS/Nixpkgs merge

commit 7bdb85453d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 15:34:57 2013 +0200

    printStats(): Print the size of the symbol table in bytes

commit 9deb822180
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 15:19:59 2013 +0200

    Deduplicate filenames in Pos

    This saves ~4 MiB of RAM for NixOS system instantiation, and ~18 MiB
    for "nix-env -qa".

commit b1e3b1a4ac
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 14:45:36 2013 +0200

    Treat undefined variable errors consistently

    Previously, a undefined variable inside a "with" caused an EvalError
    (which can be caught), while outside, it caused a ParseError (which
    cannot be caught).  Now both cause an UndefinedVarError (which cannot
    be caught).

commit 6b47de580f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 14:40:51 2013 +0200

    Show the exact position of undefined variables

    In particular, undefined variable errors in a "with" previously didn't
    show *any* position information, so this should help a lot in those
    cases.

commit a5e0f64db3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 12:30:23 2013 +0000

    Remove some unused functions

commit 221a2daf34
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 8 14:24:53 2013 +0200

    Merge VarRef into ExprVar

commit 176c666f36
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Oct 5 21:29:48 2013 +0000

    Don't show calls to primops in stack traces

    Since they don't have location information, they just give you crap
    like:

      while evaluating the builtin function `getAttr':
      while evaluating the builtin function `derivationStrict':
      ...

commit c945f015de
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 2 15:24:45 2013 +0200

    Fix segfault in nix-repl / hydra-eval-jobs

    If a "with" attribute set fails to evaluate, we have to make sure its
    Env record remains unchanged.  Otherwise, repeated evaluation gives a
    segfault:

      nix-repl> :a with 0; { a = x; b = x; }
      Added 2 variables.

      nix-repl> a
      error: value is an integer while an attribute set was expected

      nix-repl> b
      Segmentation fault

commit 28e0742966
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 2 14:34:36 2013 +0200

    Report OOM errors better

commit a5fb4b5b7c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 2 14:22:49 2013 +0200

    Fix typo

commit faaae44f2e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 18 14:04:03 2013 +0200

    build-remote.pl: Don't use substituters on the remote

    It's kinda pointless to check substituters on the remote side, since
    we just checked them locally.

commit f53574ebd6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 17 12:06:59 2013 +0000

    RestoreSink: Slightly reduce the number of concurrent FDs

commit d5529f5b85
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 10 17:47:39 2013 +0200

    Version was called 1.6, not 1.6.0

commit b072fc04a7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 10 17:41:49 2013 +0200

    Bump version number

commit fecad91b67
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 10 11:21:30 2013 +0200

    Update release notes

commit 0220da3e10
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 6 17:20:19 2013 +0200

    Remove stray debug line

commit 936f9d45ba
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 6 16:36:56 2013 +0200

    Don't apply the CPU affinity hack to nix-shell (and other Perl programs)

    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.

commit 4b83830d0c
Author: Domen Kožar <domen@dev.si>
Date:   Tue Sep 3 11:42:55 2013 +0200

    typo

commit 5904262640
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 6 14:58:05 2013 +0200

    nix-shell: Support a .drv as argument

    Fixes #161.

commit 2c1ecf8e81
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 21:15:47 2013 +0200

    nix-env -i: Add a flag ‘--remove-all’ / ‘-r’

    This is equivalent to running ‘nix-env -e '*'’ first, except that it
    happens in a single transaction.  Thus, ‘nix-env -i pkgs...’ replaces
    the profile with the specified set of packages.

    The main motivation is to support declarative package management
    (similar to environment.systemPackages in NixOS).  That is, if you
    have a specification ‘profile.nix’ like this:

      with import <nixpkgs> {};
      [ thunderbird
        geeqie
        ...
      ]

    then after any change to ‘profile.nix’, you can run:

      $ nix-env -f profile.nix -ir

    to update the profile to match the specification.  (Without the ‘-r’
    flag, if you remove a package from ‘profile.nix’, it won't be removed
    from the actual profile.)

    Suggested by @zefhemel.

commit 88c07341a6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 15:56:33 2013 +0200

    nix-env: Use wildcard match by default

    That is, you don't need to pass '*' anymore, so

      nix-env -qa

    is equivalent to

      nix-env -qa '*'

commit 07a08bddf0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 15:45:32 2013 +0200

    nix-env: Load files in ~/.nix-defexpr on demand

    So if you do "nix-env -qa -A nixos", then other channels won't be
    parsed/evaluated at all.

commit c57ed84e28
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 15:25:51 2013 +0200

    Check for name collisions in the input Nix expressions

commit ef4f5ba85e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 13:17:51 2013 +0000

    Work on Values instead of Exprs

    This prevents some duplicate evaluation in nix-env and
    nix-instantiate.

    Also, when traversing ~/.nix-defexpr, only read regular files with the
    extension .nix.  Previously it was reading files like
    .../channels/binary-caches/<name>.  The only reason this didn't cause
    problems is pure luck (namely, <name> shadows an actual Nix
    expression, the binary-caches files happen to be syntactically valid
    Nix expressions, and we iterate over the directory contents in just
    the right order).

commit 06bb2d95b4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 11:04:21 2013 +0000

    Reformat

commit 6f809194d7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 3 12:56:33 2013 +0200

    Get rid of the parse tree cache

    Since we already cache files in normal form (fileEvalCache), caching
    parse trees is redundant.

    Note that getting rid of this cache doesn't actually save much memory
    at the moment, because parse trees are currently not freed / GC'ed.

commit 57d18df7d0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 18:34:04 2013 +0200

    Add some support code for nix-repl

commit 92077b4547
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 16:39:17 2013 +0200

    Get rid of a signedness warning

commit 33972629d7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 16:29:15 2013 +0200

    Fix whitespace

commit ac1b754138
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 13:32:51 2013 +0200

    Lower xz compression level

    Fixes #84.

commit c28dfc0305
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 13:23:07 2013 +0200

    Manual: Make '' a bit clearer

    Issue #162.

commit e9b92169a5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 13:19:34 2013 +0200

    Fix manual error

    Reported by Matija Šuklje.

    Fixes #163.

commit ecd830b3b9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 13:11:36 2013 +0200

    Update the release notes

commit 6ec8dab06a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 12:44:30 2013 +0200

    Adda test for build-max-log-size

commit b29d3f4aee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 12:01:04 2013 +0200

    Only show trace messages when tracing is enabled

commit efe4289464
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Sep 2 11:58:18 2013 +0200

    Add an option to limit the log output of builders

    This is mostly useful for Hydra to deal with builders that get stuck
    in an infinite loop writing data to stdout/stderr.

commit afc6c1bad6
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jul 15 17:10:18 2013 -0400

    Simplify inherited attribute handling

    This reduces the difference between inherited and non-inherited
    attribute handling to the choice of which env to use (in recs and lets)
    by setting the AttrDef::e to a new ExprVar in the parser rather than
    carrying a separate AttrDef::v VarRef member.

    As an added bonus, this allows inherited attributes that inherit from a
    with to delay forcing evaluation of the with's attributes.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 6cd6ce5608
Author: Ivan Kozik <ivan@ludios.org>
Date:   Fri Aug 16 20:18:38 2013 +0000

    Fix nix-shell command

commit 34bb806f74
Author: Ivan Kozik <ivan@ludios.org>
Date:   Sat Aug 10 21:36:16 2013 +0000

    Fix typos, especially those that end up in the Nix manual

commit c6c024ca6f
Author: Gergely Risko <gergely@risko.hu>
Date:   Thu Aug 22 17:57:39 2013 +0200

    Fix personality switching from x86_64 to i686

    On Linux, Nix can build i686 packages even on x86_64 systems.  It's not
    enough to recognize this situation by settings.thisSystem, we also have
    to consult uname().  E.g. we can be running on a i686 Debian with an
    amd64 kernel.  In that situation settings.thisSystem is i686-linux, but
    we still need to change personality to i686 to make builds consistent.

commit 03eaef3d7a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 23 10:12:20 2013 +0200

    Manual: Don't use actual hashes of Nix dependencies

    These cause an unnecessary runtime dependency :-)

commit b3110a15e9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 21 12:52:44 2013 +0200

    Fix corrupt PNG

    Libpng used to accept this, but no longer does.

commit 25a108bb9c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 19 13:22:56 2013 +0200

    Hack to clean up tests/test-tmp

commit d308aeaf53
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 19 12:35:03 2013 +0200

    Store Nix integers as longs

    So on 64-bit systems, integers are now 64-bit.

    Fixes #158.

commit 297b762513
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 19 11:41:15 2013 +0200

    Turn on -Wall

commit 46222bbc43
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 14 22:32:49 2013 +0200

    Typo

commit 58204a3c39
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Aug 14 15:35:13 2013 -0400

    corepkgs/nar.nix: Prefer local builds

    nar.nix's builder depends on coreutils and nix itself being in $PATH.
    Unfortunately, there's no good way to ensure that these packages exist
    in the same place on the remote machine: The local machine may have nix
    installed in /usr, and the remote machine in /usr/local, but the
    generated nar.sh builder will refer to /usr and thus fail on the remote
    machine. This ensures that nar.sh is run on the same machine that
    instantiates it.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 3fb7ae0586
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 7 15:44:19 2013 +0000

    Respect MINSIGSTKSZ when allocating an alternative stack

    http://hydra.nixos.org/build/5663577

commit 161a2ccf7a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 7 17:26:41 2013 +0200

    Fix build on non-Linux

    http://hydra.nixos.org/build/5662914

commit a583a2bc59
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 7 11:51:55 2013 +0000

    Run the daemon worker on the same CPU as the client

    On a system with multiple CPUs, running Nix operations through the
    daemon is significantly slower than "direct" mode:

    $ NIX_REMOTE= nix-instantiate '<nixos>' -A system
    real    0m0.974s
    user    0m0.875s
    sys     0m0.088s

    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m2.118s
    user    0m1.463s
    sys     0m0.218s

    The main reason seems to be that the client and the worker get moved
    to a different CPU after every call to the worker.  This patch adds a
    hack to lock them to the same CPU.  With this, the overhead of going
    through the daemon is very small:

    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m1.074s
    user    0m0.809s
    sys     0m0.098s

commit 263d668222
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 6 14:21:46 2013 +0200

    Set the default GCC optimisation level to -O3

commit fd7d979c79
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 6 14:15:11 2013 +0200

    Remove obsolete reference to ATerms

commit 46ffcce0c3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 18:29:23 2013 +0000

    In the profiler output, show function names (if available)

commit 8e74c0bfd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 18:53:02 2013 +0200

    Let the ordering operators also work on strings

    E.g. ‘"foo" < "bar"’ now works.

commit 3d77b28eac
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 18:39:40 2013 +0200

    Add comparison operators ‘<’, ‘<=’, ‘>’ and ‘>=’

commit 47701677e8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 16:03:02 2013 +0000

    Add integer ‘-’, ‘*’ and ‘/’ operators

commit 5d147e125c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 17:35:59 2013 +0200

    Add a unary integer negation operator

    This allows saying "-1" instead of "builtins.sub 0 1".

commit 159e621d1a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 2 15:21:17 2013 +0000

    Overload the ‘+’ operator to support integer addition

commit 511455965e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 31 13:17:50 2013 +0200

    nix-shell: Don't disable Automake dependency tracking

    Nixpkgs' stdenv disables dependency tracking by default.  That makes
    sense for one-time builds, but in an interactive environment we expect
    repeated "make" invocations to do the right thing.

commit 7df4ef983e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 31 13:12:35 2013 +0200

    Test the delayed with a bit more

commit 0a470fc345
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 31 12:44:21 2013 +0200

    Make Env smaller

    Commit 20866a7031 added a ‘withAttrs’
    field to Env, which is annoying because it makes every Env structure
    bigger and we allocate millions of them.  E.g. NixOS evaluation took
    18 MiB more.  So this commit squeezes ‘withAttrs’ into values[0].
    Probably should use a union...

commit 8ae6d55db1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 31 12:11:14 2013 +0200

    Don't use NULL

commit e068f49f7d
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Jul 16 08:43:54 2013 -0400

    Avoid thunks when a fromWith var can be looked up without evaluation

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 20866a7031
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jul 15 15:53:14 2013 -0400

    Delay evaulation of `with` attrs until a variable lookup needs them

    Evaluation of attribute sets is strict in the attribute names, which
    means immediate evaluation of `with` attribute sets rules out some
    potentially interesting use cases (e.g. where the attribute names of one
    set depend in some way on another but we want to bring those names into
    scope for some values in the second set).

    The major example of this is overridable self-referential package sets
    (e.g. all-packages.nix). With immediate `with` evaluation, the only
    options for such sets are to either make them non-recursive and
    explicitly use the name of the overridden set in non-overridden one
    every time you want to reference another package, or make the set
    recursive and use the `__overrides` hack. As shown in the test case that
    comes with this commit, though, delayed `with` evaluation allows a nicer
    third alternative.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 70e68e0ec6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 30 23:25:37 2013 +0200

    Detect stack overflows

    Previously, if the Nix evaluator gets a stack overflow due to a deep
    or infinite recursion in the Nix expression, the user gets an
    unhelpful message ("Segmentation fault") that doesn't indicate that
    the problem is in the user's code rather than Nix itself.  Now it
    prints:

      error: stack overflow (possible infinite recursion)

    This only works on x86_64-linux and i686-linux.

    Fixes #35.

commit e87d1a63bd
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Mar 18 11:13:53 2013 -0400

    killUser: Don't let the child kill itself on Apple

    The kill(2) in Apple's libc follows POSIX semantics, which means that
    kill(-1, SIGKILL) will kill the calling process too. Since nix has no
    way to distinguish between the process successfully killing everything
    and the process being killed by a rogue builder in that case, it can't
    safely conclude that killUser was successful.

    Luckily, the actual kill syscall takes a parameter that determines
    whether POSIX semantics are followed, so we can call that syscall
    directly and avoid the issue on Apple.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit 7cf539c728
Author: Florian Friesdorf <flo@chaoflow.net>
Date:   Mon Feb 20 04:09:46 2012 +0100

    buildenv: remove special treatment of python files

    buildPythonPackage does not leave easy_install.pth and site.py
    anymore. A python package that leaves these files is broken. An
    exception to this is setuptoolsSite which packages setuptools'
    site.py. To include it into a buildenv, this patch is even needed, not
    just cosmetic.

commit 7b09e9f2c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 19 16:51:31 2013 +0200

    Add hacking notes plus a script for running nix-shell

commit 15e5ac8039
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 19 14:32:05 2013 +0200

    nix-shell: Set $IN_NIX_SHELL

    This allows scripts to distinguish between a real build and a Nix
    shell.

commit 48858ad5ca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 19 14:06:58 2013 +0200

    nix-shell: Set some environment variables also set by build.cc

    Setting $NIX_STORE causes the purity checks in gcc/ld-wrapper to kick
    in, so that's why we unset $NIX_ENFORCE_PURITY.

commit 2bc5de8635
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 19 12:02:44 2013 +0200

    Rename ‘nix-build --run-env’ to ‘nix-shell’

commit dc5f2e7da6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 19 11:23:32 2013 +0200

    nix-build --run-env: Add a ‘--pure’ flag

    This causes the environment to be (almost) cleared, thus giving a
    shell that more closely resembled the actual Nix derivation.

commit a4921b8ceb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 18 12:52:16 2013 +0200

    Revert "build-remote.pl: Enforce timeouts locally"

    This reverts commit 69b8f9980f.

    The timeout should be enforced remotely.  Otherwise, if the garbage
    collector is running either locally or remotely, if will block the
    build or closure copying for some time.  If the garbage collector
    takes too long, the build may time out, which is not what we want.
    Also, on heavily loaded systems, copying large paths to and from the
    remote machine can take a long time, also potentially resulting in a
    timeout.

commit 16591eb3cc
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Jul 12 09:35:33 2013 -0400

    Allow bind-mounting regular files into the chroot

    mount(2) with MS_BIND allows mounting a regular file on top of a regular
    file, so there's no reason to only bind directories. This allows finer
    control over just which files are and aren't included in the chroot
    without having to build symlink trees or the like.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit c3f5413e80
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 12 14:06:05 2013 +0200

    Fix syntax error in unpack-channel

commit aeb810b01e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 12 14:01:25 2013 +0200

    Garbage collector: Don't follow symlinks arbitrarily

    Only indirect roots (symlinks to symlinks to the Nix store) are now
    supported.

commit 25a00cae5b
Author: Gergely Risko <gergely@risko.hu>
Date:   Tue May 14 15:10:14 2013 +0200

    Add gzip support for channel unpacking

commit 620d57f036
Author: Domen Kožar <domen@dev.si>
Date:   Sat Jun 29 15:18:05 2013 +0200

    doc: typo

commit 6fcc290619
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 11 17:16:45 2013 +0200

    build-remote.pl: Move "building ..." message to a better place

commit ed09d0c0a4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 11 14:40:29 2013 +0200

    nix-build --run-env: Always use Bash

    Fixes #113.
    Fixes #131.

commit 656390062a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 11 14:32:22 2013 +0200

    nix-build --run-env: Source $stdenv/setup in the interactive shell

    This ensures that not just environment variables are set, but also
    shell functions such as unpackPhase, configurePhase and so on.

commit 212e96f39c
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Fri Jul 5 22:21:04 2013 +0200

    Leave `HAVE_HUP_NOTIFICATION' undefined on GNU/Hurd.

commit b584a42e3d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 3 18:35:59 2013 +0200

    Manual: auto-optimise-store is disabled by default

commit 5116214343
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 1 21:02:36 2013 +0200

    Add support for uncompressed NARs in binary caches

    Issue NixOS/hydra#102.

commit 7986711632
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 1 13:30:28 2013 +0200

    copy-from-other-stores.pl: Respect $NIX_BIN_DIR

commit 1917d750a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 1 13:29:59 2013 +0200

    copy-from-other-stores.pl: Report downloaded size as 0

commit 7ccd946407
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 20 20:05:03 2013 +0200

    Don't set $preferLocalBuild and $requiredSystemFeatures in builders

    With C++ std::map, doing a comparison like ‘map["foo"] == ...’ has the
    side-effect of adding a mapping from "foo" to the empty string if
    "foo" doesn't exist in the map.  So we ended up setting some
    environment variables by accident.

commit 5558652709
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 20 19:26:31 2013 +0200

    Don't substitute derivations that have preferLocalBuild set

    In particular this means that "trivial" derivations such as writeText
    are not substituted, reducing the number of GET requests to the binary
    cache by about 200 on a typical NixOS configuration.

commit 1906cce6fc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 20 14:01:33 2013 +0000

    Increase SQLite's auto-checkpoint interval

    Common operations like instantiating a NixOS system config no longer
    fitted in 8192 pages, leading to more fsyncs.  So increase this limit.

commit 9b11165aec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 20 12:01:33 2013 +0200

    Disable the copy-from-other-stores substituter

    This substituter basically cannot work reliably since we switched to
    SQLite, since SQLite databases may need write access to open them even
    just for reading (and in WAL mode they always do).

commit 22144afa8d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 20 11:55:15 2013 +0200

    Don't keep "disabled" substituters running

    For instance, it's pointless to keep copy-from-other-stores running if
    there are no other stores, or download-using-manifests if there are no
    manifests.  This also speeds things up because we don't send queries
    to those substituters.

commit 2b29e4b852
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 17 15:39:45 2013 +0200

    Bump version

commit 6016bcd30e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 17 11:47:38 2013 +0200

    Update release notes for Nix 1.5.3

commit 1b6ee8f4c7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 17:29:56 2013 +0200

    Allow hard links between the outputs of a derivation

commit cd49ee0897
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 17:12:24 2013 +0200

    Fix a security bug in hash rewriting

    Before calling dumpPath(), we have to make sure the files are owned by
    the build user.  Otherwise, the build could contain a hard link to
    (say) /etc/shadow, which would then be read by the daemon and
    rewritten as a world-readable file.

    This only affects systems that don't have hard link restrictions
    enabled.

commit 1e2c7c04b1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 17:12:06 2013 +0200

    Fix assertion failure in canonicalisePathMetaData() after hash rewriting

    The assertion in canonicalisePathMetaData() failed because the
    ownership of the path already changed due to the hash rewriting.  The
    solution is not to check the ownership of rewritten paths.

    Issue #122.

commit 6cc2a8f8ed
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 16:43:20 2013 +0200

    computeFSClosure: Only process the missing/corrupt paths

    Issue #122.

commit bfee9a2581
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 14:51:11 2013 +0200

    Typo

commit f9ff67e948
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 13 14:46:07 2013 +0200

    In repair mode, update the hash of rebuilt paths

    Otherwise subsequent invocations of "--repair" will keep rebuilding
    the path.  This only happens if the path content differs between
    builds (e.g. due to timestamps).

commit 6b05f688ee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 12 12:10:26 2013 +0200

    nix-daemon: Trust options like binary-caches when the client is root

    Fixes #127.

commit 5c06e5297d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 16:21:48 2013 +0200

    download-from-binary-cache.pl: Respect $NIX_CONNECT_TIMEOUT

commit 24a356bf71
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 15:35:54 2013 +0200

    Replace $NIX_DEBUG_SUBST with an option ‘debug-subst’

    Thus passing ‘--option debug-subst 1’ allows daemon users to turn on
    debug info and see what the substituter is doing.

commit 24e063efdc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 15:33:44 2013 +0200

    download-from-binary-cache.pl: Show if we're waiting for a URL

    Previously, if a binary cache is hanging/unreachable/slow,
    download-from-binary-cache.pl would also hang without any indication
    to the user.  Now, if fetching a URL takes more than 5 seconds, it
    will print a message to that effect.

commit ca70fba0bf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 15:10:23 2013 +0200

    Remove obsolete EOF checks

commit 5959c591a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 15:02:14 2013 +0200

    Process stderr from substituters while doing have/info queries

commit c5f9d0d080
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 7 14:00:23 2013 +0200

    Buffer reads from the substituter

    This greatly reduces the number of system calls.

commit 75e12b8e66
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 5 16:17:06 2013 +0200

    download-from-binary-cache.pl: Fix race condition

    Fixes the error "DBD::SQLite::db do failed: column url is not unique".

commit f0576d6775
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 5 13:36:43 2013 +0200

    Update the default binary cache URL to cache.nixos.org

commit ff08306746
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jun 4 15:20:37 2013 +0200

    download-from-binary-cache.pl: Treat a 403 error as a 404

    Amazon S3 returns HTTP status code 403 if a file doesn't exist and the
    user has no permission to list the contents of the bucket.  So treat
    it as 404 (meaning it's cached in the NARExistence table).

commit bc2e43f3c8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 29 18:18:59 2013 +0200

    build-remote.pl: Remove meaningless signing when importing the output paths

    The "$UID != 0" makes no sense: if the local side has write access to
    the Nix store (which is always the case) then it doesn't matter if
    we're root - we can import unsigned paths either way.

commit 039d5a023f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 29 12:36:56 2013 +0200

    .bashrc -> .profile

commit b09b87321c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 23 14:55:36 2013 -0400

    nix-store --export: Export paths in topologically sorted order

    Fixes #118.

commit 107505e13a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 23 14:39:58 2013 -0400

    build-remote.pl: Copy all outputs in one operation

commit 72d8209548
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 23 14:04:46 2013 -0400

    build-remote.pl: Indicate if remote machine is refusing builds

    Fixes #120.

commit 18a48d80a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 16 19:08:02 2013 +0200

    Show function names in error messages

    Functions in Nix are anonymous, but if they're assigned to a
    variable/attribute, we can use the variable/attribute name in error
    messages, e.g.

    while evaluating `concatMapStrings' at `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/strings.nix:18:25':
    ...

commit 1b3a03f161
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 16 17:56:14 2013 +0200

    Show which function argument was unexpected

    Fixes #116.

commit 229567293c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 16 17:48:19 2013 +0200

    Shut up a compiler warning

commit a4cb62ac25
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 15 15:47:05 2013 +0200

    download-from-binary-cache.pl: Get rid of an uninitialized value warning

    Reported by Pablo Costa.

commit 31a551a60f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 13 23:50:31 2013 +0200

    Bump version

commit 6e85d1b5ba
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 13 16:52:08 2013 +0200

    Bump release date

commit 3a0cc43ac8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 10 02:38:05 2013 +0200

    build-remote.pl: Properly close the SSH connection between attempts

commit be0b9dda31
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 10 02:32:13 2013 +0200

    build-remote.pl: Pass /dev/null as SSH's stdin

    Otherwise it will set the parent's stdin to non-blocking mode, causing
    the subsequent read of the set of inputs/outputs to fail randomly.
    That's insane.

commit 78206f06ec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 10 01:09:46 2013 +0200

    build-remote.pl: Allow a machine to refuse a build

    Before selecting a machine, build-remote.pl will try to run the
    command "nix-builds-inhibited" on the machine.  If this command exists
    and returns a 0 exit code, then the machine won't be used.  It's up to
    the user to provide this command, but it would typically be a script
    that checks whether there is enough disk space and whether the load is
    not too high.

commit 2ee9da9e22
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 10 00:24:33 2013 +0200

    In trace messages, don't print the output path

    This doesn't work if there is no output named "out".  Hydra didn't use
    it anyway.

commit 6eba05613a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 9 18:39:04 2013 +0200

    Communicate build timeouts to Hydra

commit 7a03cbf09d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 9 17:30:07 2013 +0200

    build-remote.pl: Create one process fewer on the remote side

commit 69b8f9980f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 9 17:17:17 2013 +0200

    build-remote.pl: Enforce timeouts locally

    Don't pass --timeout / --max-silent-time to the remote builder.
    Instead, let the local Nix process terminate the build if it exceeds a
    timeout.  The remote builder will be killed as a side-effect.  This
    gives better error reporting (since the timeout message from the
    remote side wasn't properly propagated) and handles non-Nix problems
    like SSH hangs.

commit e93acab852
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 8 14:41:35 2013 +0200

    Build Fedora 18 RPMs

commit 806970349b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 7 15:46:25 2013 +0200

    Update release date

commit ea019e9a26
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 7 15:37:28 2013 +0200

    Add option ‘extra-binary-caches’

    This allows providing additional binary caches, useful in scripts like
    Hydra's build reproduction scripts, in particular because untrusted
    caches are ignored.

commit cc837e2458
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 7 11:21:30 2013 +0200

    Build Debian 7.0 debs

commit 28034bfa49
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 3 14:14:46 2013 +0200

    Build Ubuntu 13.04 debs

commit 93f4fa8a15
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 3 11:28:32 2013 +0200

    Update release notes

commit c51b6a893c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 3 11:12:11 2013 +0200

    nix-copy-closure: Show a proper error message if no host name is given

commit e6c44d166a
Author: Lluís Batlle i Rossell <viric@viric.name>
Date:   Wed May 1 22:44:37 2013 +0400

    Fixing the pv position regarding compression

    Problem noticed by niksnut.

commit 7391533ea5
Author: Lluís Batlle i Rossell <viric@viric.name>
Date:   Thu Apr 11 19:54:38 2013 +0200

    Fixing the pv reference; I didn't mean to change it

commit 5cc2fc46ec
Author: Lluís Batlle i Rossell <viric@viric.name>
Date:   Thu Apr 11 19:52:21 2013 +0200

    Adding ETA support to the --show-progress in nix-copy-closure

    Based on https://github.com/NixOS/nix/pull/6 from shlevy

commit 3628b61ce0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 1 13:31:33 2013 +0200

    Nix 1.5.2 release notes

commit 470553bd05
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 1 13:21:39 2013 +0200

    Don't let stderr writes in substituters cause a deadlock

commit 4ddd077bfa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 26 12:15:54 2013 +0200

    find-runtime-roots.pl: Don't hardcode /nix/store

commit 0374d94437
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 26 12:07:25 2013 +0200

    addAdditionalRoots(): Check each path only once

commit 00f698eb8b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 26 12:06:39 2013 +0200

    find-runtime-roots.pl: Search process environments for roots

    For instance, this prevents paths from being deleted that are in use
    by a "nix-build --run-env" session.

commit 938092a213
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 26 11:44:19 2013 +0200

    find-runtime-roots.pl: Use Nix::Utils::readFile

commit 772b70952f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 18:04:59 2013 +0200

    Fix --timeout

    I'm not sure if it has ever worked correctly.  The line "lastWait =
    after;" seems to mean that the timer was reset every time a build
    produced log output.

    Note that the timeout is now per build, as documented ("the maximum
    number of seconds that a builder can run").

commit f9974f856e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 17:16:29 2013 +0200

    Show that --timeout doesn't work if the build produces log output

commit 6955d41f2b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 17:16:01 2013 +0200

    nix-build: Respect --timeout

commit 934cf2d1f4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 16:59:06 2013 +0200

    Nix daemon: respect build timeout from the client

commit 08d96ffad0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 12:45:01 2013 +0200

    Fix --fallback with the binary cache substituter

    Reported by Peter Simons.

commit a9b4e26b5c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 12:44:01 2013 +0200

    Test whether --fallback works if NARS have disappeared from the binary cache

commit c642441beb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 23 12:43:28 2013 +0200

    Test NAR info caching

commit 05420e7883
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 9 17:57:48 2013 +0200

    Manual: Add a missing step to the build instructions

    Reported by Johan Grande.

commit 258897c265
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 4 11:16:26 2013 +0200

    Complain if /homeless-shelter exists

commit 239841787b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 25 21:59:11 2013 +0100

    Fix evaluation of the VM tests

commit cc63db1dd5
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Mar 7 22:53:49 2013 -0500

    makeStoreWritable: Ask forgiveness, not permission

    It is surprisingly impossible to check if a mountpoint is a bind mount
    on Linux, and in my previous commit I forgot to check if /nix/store was
    even a mountpoint at all. statvfs.f_flag is not populated with MS_BIND
    (and even if it were, my check was wrong in the previous commit).

    Luckily, the semantics of mount with MS_REMOUNT | MS_BIND make both
    checks unnecessary: if /nix/store is not a mountpoint, then mount will
    fail with EINVAL, and if /nix/store is not a bind-mount, then it will
    not be made writable. Thus, if /nix/store is not a mountpoint, we fail
    immediately (since we don't know how to make it writable), and if
    /nix/store IS a mountpoint but not a bind-mount, we fail at first write
    (see below for why we can't check and fail immediately).

    Note that, due to what is IMO buggy behavior in Linux, calling mount
    with MS_REMOUNT | MS_BIND on a non-bind readonly mount makes the
    mountpoint appear writable in two places: In the sixth (but not the
    10th!) column of mountinfo, and in the f_flags member of struct statfs.
    All other syscalls behave as if the mount point were still readonly (at
    least for Linux 3.9-rc1, but I don't think this has changed recently or
    is expected to soon). My preferred semantics would be for MS_REMOUNT |
    MS_BIND to fail on a non-bind mount, as it doesn't make sense to remount
    a non bind-mount as a bind mount.

commit 2c9cf50746
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Mar 7 19:39:55 2013 -0500

    makeStoreWritable: Use statvfs instead of /proc/self/mountinfo to find out if /nix/store is a read-only bind mount

    /nix/store could be a read-only bind mount even if it is / in its own filesystem, so checking the 4th field in mountinfo is insufficient.

    Signed-off-by: Shea Levy <shea@shealevy.com>

commit c3fc60d936
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 18 21:49:42 2013 +0100

    Fix evaluation

commit f72ed36025
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 15 14:21:05 2013 +0100

    Bump version number

commit 78d777ca15
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 15 13:18:49 2013 +0100

    Remove the "system" jobset input

commit a68ebf8e37
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Mar 14 18:33:15 2013 +0100

    Require Bison 2.6

commit 804709706c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Mar 14 18:31:08 2013 +0100

    Fix building against Bison 2.6

commit c56bc3d81c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Mar 14 17:21:13 2013 +0100

    Make sure that thunks are restored properly if an exception occurs

    Fixes Hydra bug #67.

commit 4b07476848
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 8 01:27:04 2013 +0100

    Prevent config.h from being clobbered

commit bdd4646338
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 8 01:24:59 2013 +0100

    Revert "Prevent config.h from being clobbered"

    This reverts commit 28bba8c44f.

commit e73d9e9488
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Mar 8 00:27:32 2013 +0100

    Fix annoying Perl 5.16 warnings

    I.e.

    Subroutine Nix::Store::isValidPath redefined at /nix/store/clfzsf6gi7qh5i9c0vks1ifjam47rijn-perl-5.16.2/lib/perl5/5.16.2/XSLoader.pm line 92.

    and so on.

commit 28bba8c44f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Mar 7 23:55:55 2013 +0100

    Prevent config.h from being clobbered

commit 8057a192e3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 28 19:55:09 2013 +0100

    Handle systems without lutimes() or lchown()

commit 9fa1bee575
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 28 19:36:02 2013 +0100

    Update release notes

    Also use a point release version number as suggested by several
    people.

commit f45c731cd7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 28 14:51:08 2013 +0100

    Handle symlinks properly

    Now it's really brown paper bag time...

commit 88936411bc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Feb 28 13:03:53 2013 +0100

    Bump version number

commit 0111ba98ea
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 27 17:18:41 2013 +0100

    Handle hard links to other files in the output

commit b008674e46
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Feb 27 16:35:46 2013 +0100

    Refactoring: Split off the non-recursive canonicalisePathMetaData()

    Also, change the file mode before changing the owner.  This prevents a
    slight time window in which a setuid binary would be setuid root.

commit 826dc0d07d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 26 14:32:48 2013 +0100

    Remove outdated file

commit 97c6009c47
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 26 14:32:14 2013 +0100

    Bump version number

commit ca9c02dff1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 26 13:23:09 2013 +0100

    Update release notes

commit 5526a282b5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 26 02:30:19 2013 +0100

    Security: Don't allow builders to change permissions on files they don't own

    It turns out that in multi-user Nix, a builder may be able to do

      ln /etc/shadow $out/foo

    Afterwards, canonicalisePathMetaData() will be applied to $out/foo,
    causing /etc/shadow's mode to be set to 444 (readable by everybody but
    writable by nobody).  That's obviously Very Bad.

    Fortunately, this fails in NixOS's default configuration because
    /nix/store is a bind mount, so "ln" will fail with "Invalid
    cross-device link".  It also fails if hard-link restrictions are
    enabled, so a workaround is:

      echo 1 > /proc/sys/fs/protected_hardlinks

    The solution is to check that all files in $out are owned by the build
    user.  This means that innocuous operations like "ln
    ${pkgs.foo}/some-file $out/" are now rejected, but that already failed
    in chroot builds anyway.

commit dadf7a5b46
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 19 16:56:31 2013 +0100

    build-remote: Use the --quiet flag

    ‘--option verbosity 0’ doesn't actually do anything.

commit 3e067ac11c
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon Feb 18 23:05:40 2013 +0100

    Add `Settings::nixDaemonSocketFile'.

commit 5ea138dc4b
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon Feb 18 23:05:39 2013 +0100

    Enable chroot support on old glibc versions.

commit 79a3ba7fa3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 8 20:02:58 2013 +0100

    Document ‘hashString’

commit 5f18cd2e84
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 8 19:49:24 2013 +0100

    Make "${./path} ..." evaluate to a string, not a path

    Wacky string coercion semantics caused expressions like

      exec = "${./my-script} params...";

    to evaluate to a path (‘/path/my-script params’), because
    anti-quotations are desuged to string concatenation:

      exec = ./my-script + " params...";

    By constrast, adding a space at the start would yield a string as
    expected:

      exec = " ${./my-script} params...";

    Now the first example also evaluates to a string.

commit 52172607cf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Feb 8 19:36:23 2013 +0100

    Rename "hash" to "hashString" and handle SHA-1

commit 01a5ea9914
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Thu Feb 7 00:03:46 2013 +0100

    experimental/hash

    adding primop function calculating hash of a string

    Signed-off-by: Marc Weber <marco-oweber@gmx.de>

commit 8add116acd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Feb 5 16:02:57 2013 +0100

    Nix::Store::derivationFromPath: Return derivation outputs

commit d6143801fd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 30 18:49:19 2013 +0100

    Support the colonies

commit 9842077cb2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 24 13:00:44 2013 +0100

    Improve -I description

    Issue #88.

commit 5e9c3da412
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 23 16:45:10 2013 +0100

    Only warn about SQLite being busy once

    No need to get annoying.

commit 99ed558a93
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jan 22 22:07:25 2013 +0100

    Correctly handle missing logs

commit 1943b60ad8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 21 22:36:23 2013 +0100

    Fix the VM tests

commit 96fbbbde55
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 21 22:26:25 2013 +0100

    build-remote.pl: Don't keep build logs on the build slave

commit d6fd6d8aff
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Jan 18 19:59:23 2013 -0500

    corepkgs/fetchurl: Enable making the downloaded file executable

commit 536c85ea49
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 17 15:37:52 2013 +0100

    Store build logs in /nix/var/log/nix/drvs/<XX>

    ...where <XX> is the first two characters of the derivation.
    Otherwise /nix/var/log/nix/drvs may become so large that we run into
    all sorts of weird filesystem limits/inefficiences.  For instance,
    ext3/ext4 filesystems will barf with "ext4_dx_add_entry:1551:
    Directory index full!" once you hit a few million files.

commit 66fa9e6a4d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jan 7 14:48:44 2013 +0100

    Bump version number to 1.4

commit e42df686f3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jan 5 00:13:29 2013 +0100

    Delete a left-over trash directory before doing a GC

commit 92926be2fe
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jan 4 15:17:19 2013 +0100

    Fix "0 store paths deleted" message

commit b424d29d1b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 3 13:29:17 2013 +0100

    Open the database after removing immutable bits

commit 3007f57377
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 3 13:00:46 2013 +0100

    Remove tabs

commit def5160b61
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jan 3 12:59:23 2013 +0100

    Clear any immutable bits in the Nix store

    Doing this once makes subsequent operations like garbage collecting
    more efficient since we don't have to call makeMutable() first.

commit 0a4e90395c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 23:52:15 2013 +0100

    Urgggh

    http://hydra.nixos.org/build/3661100

commit f12492c66d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 22:36:08 2013 +0100

    Manual: Fix "nix-store --export" example

commit aebea2e489
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 22:16:37 2013 +0100

    Reinstate the http://nixos.org/binary-cache default for the binary-caches setting

commit 649bb60617
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 22:12:19 2013 +0100

    Use sysconfdir=/etc

commit 42d6f640c1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 12:59:49 2013 +0100

    Update release notes

commit 299141ecbd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 12:38:28 2013 +0100

    If a substitute closure is incomplete, build dependencies, then retry the substituter

    Issue #77.

commit 1b3a78a459
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 12:00:26 2013 +0100

    Automatically fall back if the references of a substitute are not substitutable

    Fixes #77.

commit 82248abd8f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jan 2 11:45:23 2013 +0100

    Add a test for incomplete closures in the binary cache

    Issue #77.

commit 12f9129f60
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Dec 29 23:21:46 2012 +0100

    nix-build: Support talking to old daemons

    Fixes #76.

commit b7629778ef
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Dec 29 23:04:02 2012 +0100

    Allow mounting a path in a different location in the chroot

    Fixes #24.

commit 68dcbb187e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 21 15:00:07 2012 +0100

    download-from-binary-cache: Use the channels of the calling user rather than root

    This should make live easier for single-user (non-daemon)
    installations.  Note that when the daemon is used, the "calling user"
    is root so we're not using any untrusted caches.

commit 5ee7d8fbab
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 21 00:18:59 2012 +0100

    Typo fix

commit 2754a07ead
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 20 18:41:44 2012 +0100

    nix-store -q --roots: Respect the gc-keep-outputs/gc-keep-derivations settings

    So if a path is not garbage solely because it's reachable from a root
    due to the gc-keep-outputs or gc-keep-derivations settings, ‘nix-store
    -q --roots’ now shows that root.

commit 06f62defe6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 20 17:32:15 2012 +0100

    Yet another rewrite of the garbage collector

    But this time it's *obviously* correct!  No more segfaults due to
    infinite recursions for sure, etc.

    Also, move directories to /nix/store/trash instead of renaming them to
    /nix/store/bla-gc-<pid>.  Then we can just delete /nix/store/trash at
    the end.

commit 9c29a2ed35
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 20 12:22:13 2012 +0100

    Give a better error message if writeFile fails due to permission issues

commit e775d4d84f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 19 15:33:09 2012 +0100

    If gc-keep-derivations is set, only keep the actual deriver

    This prevents zillions of derivations from being kept, and fixes an
    infinite recursion in the garbage collector (due to an obscure cycle
    that can occur with fixed-output derivations).

commit fbf0b2fa45
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 19 11:47:42 2012 +0100

    Kill the build hook rather than shutting it down cleanly

    Waiting for the hook to shut down cleanly sometimes seems to lead to
    hangs.

commit 228ea7c2f9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 18 20:43:47 2012 +0100

    Revert brain fart

    This reverts commit cc511fd65b.

commit cc511fd65b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 18 18:50:05 2012 +0100

    Check for potential infinite select() loops when building

commit a9045c727f
Author: Stuart Pernsteiner <stuart@pernsteiner.org>
Date:   Wed Dec 12 21:13:26 2012 -0800

    fix use-after-free bug in mkString(Value&, Symbol&)

commit 9fa12fc201
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 12 16:01:46 2012 +0100

    Allow setting the profile location using $NIX_PROFILE

    Fixes #69.

commit 3ad53e43c8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 11 16:50:21 2012 +0100

    Debian package: Add dependency on libwww-curl-perl

    Fixes issue #70.

commit 772778c0ec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 11 11:49:42 2012 +0100

    On SQLITE_BUSY, wait a random amount of time

    If all contending processes wait a fixed amount of time (100 ms),
    there is a good probability that they'll just collide again.

commit e087bfef5f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Dec 7 13:14:04 2012 +0100

    Bump version number

commit a6ce6d9e7c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 6 16:55:57 2012 +0100

    Fix manual generation

    Grmbl.

commit 8cc19ed089
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Dec 6 11:43:34 2012 +0100

    Set a long SQLite timeout in the binary cache substituter

commit 52edef3495
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 23:25:40 2012 +0100

    Fix RPM build

    http://hydra.nixos.org/build/3436627

commit 8d100dbef1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 12:18:07 2012 +0100

    Add a dependency on xz-utils

commit 5c487761c4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 12:17:12 2012 +0100

    Add a dependency on xz

commit 3631dc6b2f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 12:15:06 2012 +0100

    Typo

commit aa61bc7472
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 12:05:43 2012 +0100

    Fix RPM build

    http://hydra.nixos.org/build/3436511

commit 0f96966a44
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 11:03:06 2012 +0100

    Add release date

commit 566afa1e9c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 11:02:44 2012 +0100

    Support xz compression of nixexprs.tar in channels

commit 444b03a36f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 10:23:53 2012 +0100

    Produce an xz-compressed tarball

    Footnote: doing "make dist-gzip dist-xz" doesn't work with Automake;
    you have to do "make dist-gzip; dist-xz".  That's because the dist-*
    targets delete the temporary distdir at the end.

commit d5a01d0f9d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Dec 5 09:54:41 2012 +0100

    Build Debs for Ubuntu 12.10

commit a7b4aaa2c3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 17:41:51 2012 +0100

    Updated release notes

commit 3100b29fc5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 17:22:20 2012 +0100

    Tiny optimisation in the filter primop

commit 094a08f839
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 17:15:32 2012 +0100

    Document new primops

commit 4387d19359
Author: Florian Friesdorf <flo@chaoflow.net>
Date:   Tue Dec 4 16:32:38 2012 +0100

    nix-channel --update needs bzip2

commit 24d5875514
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 16:03:56 2012 +0100

    Document multiple output support

commit b215b23e9e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 14:47:50 2012 +0100

    Test priorities

commit 56d29dcd62
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 14:45:32 2012 +0100

    buildenv.pl: Create symlinks in priority order

    This reduces unnecessary symlink/unlink steps.

commit 2d5e8e267b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 14:30:34 2012 +0100

    Add a test for ‘nix-env --set-flag active ...’

commit 5ad89398d1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Dec 4 14:20:36 2012 +0100

    nix-env: Install all outputs of a derivation

    If you explicitly install a package, presumably you want all of it.
    So symlink all outputs in the user environment.

commit 21c2d8d102
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 3 21:02:06 2012 +0100

    Test the ‘--prebuilt-only’ flag

commit d62fc71b85
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 3 21:01:41 2012 +0100

    Fix the ‘--prebuilt-only’ flag

commit 4bb4d5479a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Dec 3 18:19:49 2012 +0100

    Whitespace

commit 8eed07cda4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Nov 28 13:49:44 2012 +0100

    nix-env -q --out-path: Support multiple outputs

    We now print all output paths of a package, e.g.

      openssl-1.0.0i  bin=/nix/store/gq2mvh0wb9l90djvsagln3aqywqmr6vl-openssl-1.0.0i-bin;man=/nix/store/7zwf5r5hsdarl3n86dasvb4chm2xzw9n-openssl-1.0.0i-man;/nix/store/cj7xvk7fjp9q887359j75pw3pzjfmqf1-openssl-1.0.0i

    or (in XML mode)

      <item attrPath="openssl" name="openssl-1.0.0i" system="x86_64-linux">
        <output name="bin" path="/nix/store/gq2mvh0wb9l90djvsagln3aqywqmr6vl-openssl-1.0.0i-bin" />
        <output name="man" path="/nix/store/7zwf5r5hsdarl3n86dasvb4chm2xzw9n-openssl-1.0.0i-man" />
        <output name="out" path="/nix/store/cj7xvk7fjp9q887359j75pw3pzjfmqf1-openssl-1.0.0i" />
      </item>

commit 6c98e6a5de
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 27 15:01:32 2012 +0100

    Optionally ignore null-valued derivation attributes

    This allows adding attributes like

      attr = if stdenv.system == "bla" then something else null;

    without changing the resulting derivation on non-<bla> platforms.

    We once considered adding a special "ignore" value for this purpose,
    but using null seems more elegant.

commit 8b8ee53bc7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 27 13:29:55 2012 +0100

    Add builtin constants ‘langVersion’ and ‘nixVersion’

    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".

commit 5943f41b8b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 18:25:12 2012 +0100

    queryMissing(): Handle partially valid derivations

commit 08964d7328
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 17:57:14 2012 +0100

    Undo accidental debug change

commit 69c88f5028
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 17:46:45 2012 +0100

    Fix the multiple-outputs test

commit 408a7bfac1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 17:39:09 2012 +0100

    nix-instantiate: Fix read-only evaluation

commit 8d8d47abd2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 17:15:09 2012 +0100

    Only substitute wanted outputs of a derivation

    If a derivation has multiple outputs, then we only want to download
    those outputs that are actuallty needed.  So if we do "nix-build -A
    openssl.man", then only the "man" output should be downloaded.
    Likewise if another package depends on ${openssl.man}.

    The tricky part is that different derivations can depend on different
    outputs of a given derivation, so we may need to restart the
    corresponding derivation goal if that happens.

commit 46a369ad95
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 26 15:39:10 2012 +0100

    Make "nix-build -A <derivation>.<output>" do the right thing

    For example, given a derivation with outputs "out", "man" and "bin":

      $ nix-build -A pkg

    produces ./result pointing to the "out" output;

      $ nix-build -A pkg.man

    produces ./result-man pointing to the "man" output;

      $ nix-build -A pkg.all

    produces ./result, ./result-man and ./result-bin;

      $ nix-build -A pkg.all -A pkg2

    produces ./result, ./result-man, ./result-bin and ./result-2.

commit a3d6585c5a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 23 16:20:16 2012 +0100

    nix-copy-closure: Add flag ‘--use-substitutes’

commit 9de6bc5d05
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 20 00:27:25 2012 +0100

    nix-store -r: Add ‘--ignore-unknown’ flag

    This flag causes paths that do not have a known substitute to be
    quietly ignored.  This is mostly useful for Charon, allowing it to
    speed up deployment by letting a machine use substitutes for all
    substitutable paths, instead of uploading them.  The latter is
    frequently faster, e.g. if the target machine has a fast Internet
    connection while the source machine is on a slow ADSL line.

commit bf3725da2a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Nov 19 23:51:56 2012 +0100

    nix-store -r: Don't quietly ignore missing paths

commit 17dc306aa3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 15 23:04:34 2012 +0100

    Revert "prim_toPath: Actually make the string a path"

    This reverts commit 2980d1fba9.  It
    causes a regression in NixOS evaluation:

    string `/nix/store/ya3s5gmj3b28170fpbjhgsk8wzymkpa1-pommed-1.39/etc/pommed.conf' cannot refer to other paths

commit f794465ca8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 15 19:35:18 2012 +0100

    Disable use of vfork()

    vfork() is just too weird.  For instance, in this build:

      http://hydra.nixos.org/build/3330487

    the value fromHook.writeSide becomes corrupted in the parent, even
    though the child only reads from it.  At -O0 the problem goes away.
    Probably the child is overriding some spilled temporary variable.

    If I get bored I may implement using posix_spawn() instead.

commit 8541d27fce
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 15 15:01:02 2012 +0100

    Don't use std::cerr in a few places

    Slightly scared of using std::cerr in a vforked process...

commit 3acc8adcad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Nov 15 13:55:02 2012 +0100

    Add some debug code

commit ea89df2b76
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 18:00:33 2012 +0100

    Use vfork() instead of fork() if available

    Hopefully this reduces the chance of hitting ‘unable to fork: Cannot
    allocate memory’ errors.  vfork() is used for everything except
    starting builders.

commit 48c19c4633
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 17:59:41 2012 +0100

    Remove definition of non-existant function

commit 198dbe7fa1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 16:58:51 2012 +0100

    Remove some redundant close() calls

    They are unnecessary because we set the close-on-exec flag.

commit 10dcee99ed
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 16:42:10 2012 +0100

    Remove the quickExit function

commit 4c9e3fa641
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 16:35:42 2012 +0100

    Remove a Darwin hack that should no longer be needed

commit 182e15b661
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 16:30:15 2012 +0100

    Manual: Don't use a store path in our closure

    http://hydra.nixos.org/build/3313227

commit 88164325fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 15:09:31 2012 +0100

    Fix a segfault when auto-calling a "a@{...}" function

    Since the called function can return its argument attribute set
    (e.g. "a"), the latter should not be allocated on the stack.

    Reported by Shea.

commit f581ce0b0c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 14:58:10 2012 +0100

    Don't start copy-from-other-stores if $NIX_OTHER_STORES is unset

    Slight optimisation.

commit 91ef4d9a81
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 14:43:47 2012 +0100

    Remove unnecessary call to closeMostFDs()

    We have close-on-exec on all FDs now, and there is no security risk in
    passing open FDs to substituters anyway.

commit a9a8baaccb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 13:33:35 2012 +0100

    Use a shorter Nixpkgs channel URL

commit c31ebc50aa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Nov 9 13:33:24 2012 +0100

    Update release notes

commit e28b683324
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 17:55:53 2012 +0100

    download-from-binary-cache: Try next cache if downloading a NAR fails

commit bbc107ef1e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 17:45:20 2012 +0100

    Process binary caches in order of priority

    Binary caches can now specify a priority in their nix-cache-info file.
    The binary cache substituter checks caches in order of priority.  This
    is to ensure that fast, static caches like nixos.org/binary-cache are
    processed before slow, dynamic caches like hydra.nixos.org.

commit 3a95e1a17c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 15:49:53 2012 +0100

    Update nix-push manpage and document the binary cache format

commit 82951e5582
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 13:53:53 2012 +0100

    nix-push: Handle pushing a symlink

commit 620e92e880
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 13:44:59 2012 +0100

    Add an option ‘use-binary-caches’

    This allows disabling the use of binary caches, e.g.

      $ nix-build ... --option use-binary-caches false

    Note that

      $ nix-build ... --option binary-caches ''

    does not disable all binary caches, since the caches defined by
    channels will still be used.

commit df27db712d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Nov 6 13:43:46 2012 +0100

    Fix "Not an ARRAY reference" error

    It's a mystery why this error is not triggered in the build farm
    (e.g. http://hydra.nixos.org/build/3265602).  Ah well.

commit d0fc615af6
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Nov 5 23:00:21 2012 -0500

    canonicalizePathMetaData: Fall-back to utimes if lutimes fails due to ENOSYS

commit 4c34d384e6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 23 18:05:50 2012 +0200

    If hashes do not match, print them in base-32 for SHA-1/SHA-256

    Fixes #57.

commit a28b4445a4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 23 18:04:00 2012 +0200

    nix-prefetch-url: Improve option handling

commit 2980d1fba9
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Aug 28 22:12:05 2012 -0400

    prim_toPath: Actually make the string a path

commit dde6486eab
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 18 10:36:16 2012 -0400

    nix-push: Add a flag ‘--manifest-path’ to write the manifest to another directory

commit c8daeba303
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 17 17:01:23 2012 -0400

    nix-push: Add ‘--link’ flag

    If ‘--link’ is given, nix-push will create hard links to the NAR files
    in the store, rather than copying them.  This is faster and requires
    less disk space.  However, it doesn't work if the store is on a
    different file system.

commit 167e36a5c3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 17 16:45:04 2012 -0400

    nix-push: Only generate and copy a NAR if it doesn't already exist

    This prevents unnecessary and slow rebuilds of NARs that already exist
    in the binary cache.

commit ac238d619c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Oct 12 10:21:04 2012 -0400

    Typo

    Reported by Shea.

commit 600daf972f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 11 14:21:22 2012 -0400

    download-from-binary-cache: Remove duplicate entries in trustedURLs

commit e345182055
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 11 14:03:06 2012 -0400

    Shorten the names of temporary build directories

commit ecedd9c50c
Author: Mats Erik Andersson <gnu@gisladisker.se>
Date:   Wed Oct 10 11:10:28 2012 +0200

    Out-of-tree building of perl modules.

commit 70f75be199
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 4 15:22:25 2012 -0400

    getDerivation(): Don't always quietly ignore assertion failure

    Ignoring assertion failures makes some sense for nix-env -qa, but not
    for nix-instantiate/nix-build or hydra-eval-jobs.

commit ad328bea15
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 4 14:07:36 2012 -0400

    XML writer: flush after newlines

    This is useful for hydra-eval-jobs.

commit bfaa5635de
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 4 13:37:30 2012 -0400

    Manual: Don't use a store path that actually exists

    http://hydra.nixos.org/build/3124130

commit 904f50412c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 4 10:20:23 2012 -0400

    nix-store --verify: Continue on errors

commit 90b8a34f82
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Oct 4 09:46:10 2012 -0400

    Fix regular expression

    http://hydra.nixos.org/build/3123177

commit d1de836938
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 21:01:03 2012 -0400

    Fix the tarball build

commit f766e146f4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 18:01:35 2012 -0400

    Fix the test

commit e35d6f78dc
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 17:57:20 2012 -0400

    Rename nix-worker to nix-daemon

commit 522ecab9b8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 17:30:45 2012 -0400

    Drop support for running nix-worker in "slave" mode

    AFAIK nobody uses this, setuid binaries are evil, and there is no good
    reason why people can't just run the daemon.

commit 7586095504
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 16:54:40 2012 -0400

    Remove bin2c

commit a562d544d8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 16:37:06 2012 -0400

    When ‘--help’ is given, just run ‘man’ to show the manual page

    I.e. do what git does.  I'm too lazy to keep the builtin help text up
    to date :-)

    Also add ‘--help’ to various commands that lacked it
    (e.g. nix-collect-garbage).

commit 9c41c66c5b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 15:53:25 2012 -0400

    Document ‘--repair’

commit 2bbc4a214e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 15:35:42 2012 -0400

    nix-env: Support ‘--repair’ flag

commit 2e90a5a2a7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 15:14:02 2012 -0400

    nix-build: Support ‘--repair’ flag

commit 0a7084567f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 15:09:18 2012 -0400

    Add a ‘--repair’ flag to nix-instantiate

    This allows repairing corrupted derivations and other source files.

commit a807edfae8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 11:20:16 2012 -0400

    Handle repairing paths that are in build-chroot-dirs

commit a3f205b249
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Oct 3 10:38:09 2012 -0400

    When repairing a derivation, check and repair the entire output closure

    If we find a corrupted path in the output closure, we rebuild the
    derivation that produced that particular path.

commit 2001895f3d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 2 17:13:46 2012 -0400

    Add a --repair flag to ‘nix-store -r’ to repair derivation outputs

    With this flag, if any valid derivation output is missing or corrupt,
    it will be recreated by using a substitute if available, or by
    rebuilding the derivation.  The latter may use hash rewriting if
    chroots are not available.

commit cf46f19444
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 2 16:00:09 2012 -0400

    nix-store -r: Get rid of an unnecessary call to buildPaths/ensurePaths

commit 8e3a7bd712
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 2 15:04:59 2012 -0400

    nix-store --verify: Add an option ‘--repair’ to repair all missing/corrupt paths

    Also, return a non-zero exit code if errors remain after
    verifying/repairing.

commit 9958bd6992
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Oct 2 14:08:59 2012 -0400

    Add operation ‘nix-store --repair-path’

    This operation allows fixing corrupted or accidentally deleted store
    paths by redownloading them using substituters, if available.

    Since the corrupted path cannot be replaced atomically, there is a
    very small time window (one system call) during which neither the old
    (corrupted) nor the new (repaired) contents are available.  So
    repairing should be used with some care on critical packages like
    Glibc.

commit e666e1156f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 28 21:39:30 2012 -0400

    Handle octal escapes in /proc/self/mountinfo

commit f406288cc7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 28 21:26:36 2012 -0400

    Print a more descriptive error message if setting up the build environment fails

commit 95c74eae26
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 27 15:43:08 2012 -0400

    Allow dashes in identifiers

    In Nixpkgs, the attribute in all-packages.nix corresponding to a
    package is usually equal to the package name.  However, this doesn't
    work if the package contains a dash, which is fairly common.  The
    convention is to replace the dash with an underscore (e.g. "dbus-lib"
    becomes "dbus_glib"), but that's annoying.  So now dashes are valid in
    variable / attribute names, allowing you to write:

      dbus-glib = callPackage ../development/libraries/dbus-glib { };

    and

      buildInputs = [ dbus-glib ];

    Since we don't have a negation or subtraction operation in Nix, this
    is unambiguous.

commit f46612be96
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 16:30:37 2012 -0400

    Add "on Linux" qualifier

commit d534f137f0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 16:30:08 2012 -0400

    Make the store writable before creating /nix/store/.links

commit 0f358ca5b6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 16:11:58 2012 -0400

    Document that Nix requires GNU Make

    Fixes #44.

commit cb6651e878
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 16:04:50 2012 -0400

    Update release notes

commit e464b0247d
Merge: 28bf183 b9c2b4d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 15:38:00 2012 -0400

    Merge branch 'readonly-store'

commit 28bf183d2d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 25 13:00:19 2012 -0400

    Include <sys/types.h> for off_t

    Reported by "gio" on IRC.

commit c1f91570b3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 21 15:02:33 2012 -0400

    Style fix

commit 20582e9ae3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 19 17:33:42 2012 -0400

    Support xz compression in the download-using-manifests substituter

commit b9c2b4d5b4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 19 16:17:54 2012 -0400

    Remove setting of the immutable bit

    Using the immutable bit is problematic, especially in conjunction with
    store optimisation.  For instance, if the garbage collector deletes a
    file, it has to clear its immutable bit, but if the file has
    additional hard links, we can't set the bit afterwards because we
    don't know the remaining paths.

    So now that we support having the entire Nix store as a read-only
    mount, we may as well drop the immutable bit.  Unfortunately, we have
    to keep the code to clear the immutable bit for backwards
    compatibility.

commit b9124a5c33
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 19 15:45:29 2012 -0400

    Support having /nix/store as a read-only bind mount

    It turns out that the immutable bit doesn't work all that well.  A
    better way is to make the entire Nix store a read-only bind mount,
    i.e. by doing

      $ mount --bind /nix/store /nix/store
      $ mount -o remount,ro,bind /nix/store

    (This would typically done in an early boot script, before anything
    from /nix/store is used.)

    Since Nix needs to be able to write to the Nix store, it now detects
    if /nix/store is a read-only bind mount and then makes it writable in
    a private mount namespace.

commit 76e88871b2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 19 15:43:23 2012 -0400

    Templatise tokenizeString()

commit 00092b2d35
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 18 10:11:42 2012 -0400

    Keep build directory if not all expected outputs were produced

    Fixes issue #123 in Nixpkgs.

commit b674665765
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 14 10:18:27 2012 -0400

    Test whether GNU tar understands --warning=no-timestamp

    http://hydra.nixos.org/build/3031618

commit 09eb230900
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Sep 14 09:39:48 2012 -0400

    Fix test

    http://hydra.nixos.org/build/3031382

commit 983220bcd4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 18:09:20 2012 -0400

    nix-collect-garbage: Support --dry-run

commit 9fd9dedf12
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 18:05:04 2012 -0400

    nix-env --delete-generations: Support --dry-run flag

    Fixes #43.

commit 1bda006b74
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 17:58:14 2012 -0400

    Add a test for nix-profile.sh

commit aac14222f5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 17:48:19 2012 -0400

    nix-profile.sh: Revert to single-user version

    Commit 6a214f3e06 copied most of the Nix
    shell initialisation code from NixOS to nix-profile.sh; however, that
    code assumes a multi-user install and is Linux-specific (e.g. it calls
    the "stat" command).  So go back to the simple single-user version.

    Fixes #49.

commit 54fe8e0773
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 17:23:12 2012 -0400

    Remove double Fedora release suffix

commit 47ae3ce2ca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 16:39:16 2012 -0400

    Put a time-to-live on negative binary cache lookups

    Negative lookups are purged from the DB after a day, at most once per
    day.  However, for non-"have" lookups (e.g. all except "nix-env
    -qas"), negative lookups are ignored after one hour.  This is to
    ensure that you don't have to wait a day for an operation like
    "nix-env -i" to start using new binaries in the cache.

    Should probably make this configurable.

commit e03a8a1c92
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 14:58:56 2012 -0400

    Doh

commit 8fbe96cb31
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 14:46:37 2012 -0400

    RemoteStore::connectToDaemon(): Set close-on-exec flag

    This ensures that "nix-build --run-env" doesn't keep a connection to
    the worker open, preventing it from exiting.

commit e6e495649c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 14:33:41 2012 -0400

    Vacuum the SQLite DB after running the garbage collector

commit 2923b55f9d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 13:08:27 2012 -0400

    Delete paths in a component in topologically sorted order

    The outputs of a derivation can refer to each other (even though they
    cannot have cycles), so they have to be deleted in the right order.

    http://hydra.nixos.org/build/3026118

commit 31114ec3a5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 12:54:23 2012 -0400

    Fix the store optimisation test

    http://hydra.nixos.org/build/3026118

commit c845c0ccad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 12:11:40 2012 -0400

    nix-channel: Add option to force fetching of manifests

commit b14717ab90
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 11:35:46 2012 -0400

    Delete manifests in "nix-channel --remove" or when a binary cache is available

commit 6c4ac29917
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 10:28:20 2012 -0400

    Disable auto store optimisation for now

    I've seen operations like "nix-store --import" take much longer on one
    system.  So default to off until I've investigated this a bit further.

commit e56f71edaf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Sep 13 10:06:24 2012 -0400

    In startBuilder(), only print the new paths we're building

commit 4fca02077c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 12 18:49:35 2012 -0400

    Handle gc-keep-outputs and gc-keep-derivations both enabled

    If the options gc-keep-outputs and gc-keep-derivations are both
    enabled, you can get a cycle in the liveness graph.  There was a hack
    to handle this, but it didn't work with multiple-output derivations,
    causing the garbage collector to fail with errors like ‘error: cannot
    delete path `...' because it is in use by `...'’.  The garbage
    collector now handles strongly connected components in the liveness
    graph as a unit and decides whether to delete all or none of the paths
    in an SCC.

commit 479e9172b3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 12 12:15:47 2012 -0400

    Build hook: Pass the timeout to the remote builder

    Note that this will only work if the client has a very recent Nix
    version (post 15e1b2c223), otherwise the
    --option flag will just be ignored.

    Fixes #50.

commit 4ba47205c6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 12 11:29:10 2012 -0400

    Fix test failure on Darwin

    Apparently our DBD::SQLite links against /usr/lib/libsqlite3.dylib,
    which is an old version that doesn't respect foreign key constraints.
    So manifests/cache.sqlite doesn't get updated properly when a manifest
    disappears.  We should fix our DBD::SQLite, but in the meantime this
    will fix the test.

    http://hydra.nixos.org/build/3017959

commit 6762424e24
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Sep 12 10:41:17 2012 -0400

    Compatibility fix for WWW::Curl < 4.14

    Older versions of WWW::Curl don't support scalar references for
    CURLOPT_WRITEDATA directly.

    http://hydra.nixos.org/build/3017188

commit d4c3b6327f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 19:14:15 2012 -0400

    Don't put results symlinks in the tests directory

commit 1f7901ec3b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 19:10:11 2012 -0400

    Test hash rewriting

commit 5e2ffd0b8a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 19:09:01 2012 -0400

    Fix "non-zero padding" error

    Probably it's not a good idea to pass a temporary object to
    StringSource.

commit 8cf672091e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 18:39:22 2012 -0400

    Support building a derivation if some outputs are already valid (non-chroot case)

    This uses scary hash rewriting.

    Fixes #21.

commit 9dbda2b3fe
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 17:05:35 2012 -0400

    Remove debug line

commit a2785b7391
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 16:59:59 2012 -0400

    Support building a derivation if some outputs are already valid

    This handles the chroot and build hook cases, which are easy.
    Supporting the non-chroot-build case will require more work (hash
    rewriting!).

    Issue #21.

commit 295027f533
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 14:45:42 2012 -0400

    Include config.h before any other header

    "config.h" must be included first, because otherwise the compiler
    might not see the right value of _FILE_OFFSET_BITS.  We've had this
    before; see 705868a8a9.  In this case,
    GCC would compute a different address for ‘settings.useSubstitutes’ in
    misc.cc because of the off_t in ‘settings’.

    Reverts 3854fc9b42.

    http://hydra.nixos.org/build/3016700

commit d3004c78d9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Sep 11 13:07:22 2012 -0400

    Don't use -warning=no-timestamp unless we have GNU tar

    http://hydra.nixos.org/build/2998485

commit 360056e174
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Aug 26 14:48:47 2012 -0400

    Document importing from a directory in the import documentation

commit f7b650d234
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 28 11:47:26 2012 -0400

    Make "nix-instantiate -" interruptible

commit 15e1b2c223
Merge: a9e6752 9e2fc69
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 14:34:51 2012 -0400

    Merge branch 'no-manifests'

commit 9e2fc6951c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 14:20:14 2012 -0400

    Disable the binary cache substituter by default for now

commit cfd968dd94
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 14:17:13 2012 -0400

    Fix stupid type error in calling std::max

commit f3077fd88d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 13:45:53 2012 -0400

    Add libwww-curl-perl to the Debian/Ubuntu images

commit cc8641815b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:47:49 2012 -0400

    Add WWW::Curl to the RPM dependencies

commit 2688fb73f1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:47:04 2012 -0400

    Add perl-WWW-Curl to the RPM image

commit 8207359227
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:28:48 2012 -0400

    Whitespace

commit 8b8fe6139e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:28:34 2012 -0400

    Drop dependency on List::MoreUtils

commit babe54bf97
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:11:30 2012 -0400

    Add missing file

commit e94806d030
Merge: 9c2deca a9e6752
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 27 11:09:07 2012 -0400

    Merge branch 'master' into no-manifests

commit a9e6752bbd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Aug 24 16:58:11 2012 -0400

    Include the output name in the GC root link

    Output names are now appended to resulting GC symlinks, e.g. by
    nix-build.  For backwards compatibility, if the output is named "out",
    nothing is appended.  E.g. doing "nix-build -A foo" on a derivation
    that produces outputs "out", "bin" and "dev" will produce symlinks
    "./result", "./result-bin" and "./result-dev", respectively.

commit 4aa1e5c554
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 22 10:58:24 2012 -0400

    Receive reserveSpace before calling startWork()

    Otherwise we can get a SIGPOLL.  Reported by Ludovic.

commit d950cfe70b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 20 15:55:49 2012 -0400

    Check if MS_PRIVATE is defined

    http://hydra.nixos.org/build/2955671

commit 56e30e161c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 20 15:27:30 2012 -0400

    In the chroot, make all mounted filesystems private

    This is required on systemd, which mounts filesystems as "shared"
    subtrees.  Changes to shared trees in a private mount namespace are
    propagated to the outside world, which is bad.

commit f0eab0636b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 20 15:27:00 2012 -0400

    Don't bind-mount /proc since we mount our own

commit 862c4c5ec5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 19 16:32:42 2012 -0400

    Fix 1755 permission on temporary directories left behind by ‘-K’

commit 767101824a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 15:10:29 2012 -0400

    Avoid concatenating lists of one string

commit e5c589d271
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 15:02:09 2012 -0400

    Don't allocate empty lists

    This saves about 4 MB when evaluating a NixOS system configuration.

commit 3e89ef597c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 14:58:54 2012 -0400

    Optimise concatenating a list to an empty list

    More precisely, in concatLists, if all lists except one are empty,
    then just return the non-empty list.  This reduces the number of list
    element allocations by 32% when evaluating a NixOS system
    configuration.

commit 9c2d63084b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 13:46:42 2012 -0400

    Add a primop ‘elemAt’ to get an element from a list

commit 198d0338be
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 01:53:10 2012 -0400

    Add a primop ‘concatLists’

    This can serve as a generic efficient list builder.  For instance, the
    function ‘catAttrs’ in Nixpkgs can be rewritten from

      attr: l: fold (s: l: if hasAttr attr s then [(getAttr attr s)] ++ l else l) [] l

    to

      attr: l: builtins.concatLists (map (s: if hasAttr attr s then [(getAttr attr s)] else []) l)

    Statistics before:

      time elapsed: 1.08683
      size of a value: 24
      environments allocated: 1384376 (35809568 bytes)
      list elements: 6946783 (55574264 bytes)
      list concatenations: 37434
      values allocated: 1760440 (42250560 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18273
      number of thunks: 1297673
      number of thunks avoided: 1380759
      number of attr lookups: 430802
      number of primop calls: 628912
      number of function calls: 1333544

    Statistics after (including new catAttrs):

      time elapsed: 0.959854
      size of a value: 24
      environments allocated: 1010198 (26829296 bytes)
      list elements: 1984878 (15879024 bytes)
      list concatenations: 30488
      values allocated: 1589760 (38154240 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18274
      number of thunks: 1040925
      number of thunks avoided: 1038428
      number of attr lookups: 438419
      number of primop calls: 474844
      number of function calls: 959366

commit b9e5b908ed
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 01:05:35 2012 -0400

    Provide an efficient implementation of ‘elem’

    The one in Nixpkgs is O(n^2), this one is O(n).  Big reduction in the
    number of list allocations.

    Statistics before (on a NixOS system config):

      time elapsed: 1.17982
      size of a value: 24
      environments allocated: 1543334 (39624560 bytes)
      list elements: 9612638 (76901104 bytes)
      list concatenations: 37434
      values allocated: 1854933 (44518392 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18272
      number of thunks: 1392467
      number of thunks avoided: 1507311
      number of attr lookups: 430801
      number of primop calls: 691600
      number of function calls: 1492502

    Statistics after:

      time elapsed: 1.08683
      size of a value: 24
      environments allocated: 1384376 (35809568 bytes)
      list elements: 6946783 (55574264 bytes)
      list concatenations: 37434
      values allocated: 1760440 (42250560 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18273
      number of thunks: 1297673
      number of thunks avoided: 1380759
      number of attr lookups: 430802
      number of primop calls: 628912
      number of function calls: 1333544

commit 4ccd48ce24
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Aug 13 00:28:08 2012 -0400

    Add a "filter" primop

    Evaluation of a NixOS configuration spends quite a lot of time in the
    "filter" function in Nixpkgs.  As implemented in Nixpkgs, this is a
    O(n^2) operation, so it's a good candidate for providing a more
    efficient (i.e. primop) implementation.  Using it gives a ~10% speed
    increase and a significant reduction in the number of evaluations.

    Statistics before (on a NixOS system config):

      time elapsed: 1.3258
      size of a value: 24
      environments allocated: 1980939 (50127080 bytes)
      list elements: 14679308 (117434464 bytes)
      list concatenations: 50828
      values allocated: 2098938 (50374512 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18271
      number of thunks: 1645752
      number of thunks avoided: 1921196
      number of attr lookups: 430798
      number of primop calls: 838807
      number of function calls: 1930107

    Statistics after:

      time elapsed: 1.17982
      size of a value: 24
      environments allocated: 1543334 (39624560 bytes)
      list elements: 9612638 (76901104 bytes)
      list concatenations: 37434
      values allocated: 1854933 (44518392 bytes)
      attribute sets allocated: 392040
      right-biased unions: 186334
      values copied in right-biased unions: 591137
      symbols in symbol table: 18272
      number of thunks: 1392467
      number of thunks avoided: 1507311
      number of attr lookups: 430801
      number of primop calls: 691600
      number of function calls: 1492502

commit 62f72eb9e1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 12 23:41:48 2012 -0400

    Add some more evaluations stats

commit e82767910c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 12 23:29:28 2012 -0400

    Add some basic profiling support to the evaluator

    Setting the environment variable NIX_COUNT_CALLS to 1 enables some
    basic profiling in the evaluator.  It will count calls to functions
    and primops as well as evaluations of attributes.

    For example, to see where evaluation of a NixOS configuration spends
    its time:

    $ NIX_SHOW_STATS=1 NIX_COUNT_CALLS=1 ./src/nix-instantiate/nix-instantiate '<nixos>' -A system --readonly-mode
    ...
    calls to 39 primops:
        239532 head
        233962 tail
        191252 hasAttr
    ...
    calls to 1595 functions:
        224157 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:19'
        221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:14'
        221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:10'
    ...
    evaluations of 7088 attributes:
        167377 undefined position
        132459 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:119:41'
         47322 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:13:21'
    ...

commit 325d1cfebf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Aug 7 16:22:54 2012 -0400

    Don't warn about maximum link count exceeded on 0-byte files

commit d025142f52
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 5 21:45:27 2012 -0400

    Handle amount of disk space saved by hard linking being negative

    Fixes bogus messages like "currently hard linking saves
    17592186044416.00 MiB".

commit b6c989b801
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 5 21:41:44 2012 -0400

    Fix race condition when two processes create a hard link to a file in .links

    This is a problem because one process may set the immutable bit before
    the second process has created its link.

    Addressed random Hydra failures such as:

    error: cannot rename `/nix/store/.tmp-link-17397-1804289383' to
    `/nix/store/rsvzm574rlfip3830ac7kmaa028bzl6h-nixos-0.1pre-git/upstart-interface-version':
    Operation not permitted

commit 108e14bb18
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Aug 5 18:17:55 2012 -0400

    Fix race condition when two processes create the same link in /nix/store/.links

commit 6763084ae5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 22:43:03 2012 -0400

    Count bytes freed deleting unused links

commit 01d56c1eec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 22:34:46 2012 -0400

    Drop the block count in the garbage collector

commit 967d066d8e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 19:14:30 2012 -0400

    nix-store --gc: Make ‘--max-freed 0’ do the right thing

    That is, delete almost nothing (it will still remove unused links from
    /nix/store/.links).

commit 1df702d347
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 19:01:50 2012 -0400

    removeUnusedLinks(): Print stats on disk space saved by hard linking

commit 9c2decaa19
Merge: 5170c56 234ce61
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 18:03:49 2012 -0400

    Merge branch 'master' into no-manifests

commit 5170c5691a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 17:56:11 2012 -0400

    nix-channel: Use binary caches advertised by channels

    Channels can now advertise a binary cache by creating a file
    <channel-url>/binary-cache-url.  The channel unpacker puts these in
    its "binary-caches" subdirectory.  Thus, the URLS of the binary caches
    for the channels added by root appear in
    /nix/var/nix/profiles/per-user/eelco/channels/binary-caches/*.  The
    binary cache substituter reads these and adds them to the list of
    binary caches.

commit 79bba3782c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 17:21:47 2012 -0400

    Doh

commit ca94b38371
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 16:43:36 2012 -0400

    nix-env: Ignore manifest.nix when recursing into ~/.nix-defexpr

    Channels are implemented using a profile now, and profiles contain a
    manifest.nix file.  This should be ignored to prevent bogus packages
    from showing up in nix-env.

commit 46f852cda0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 16:42:51 2012 -0400

    Use a GNU tar flag to shut up warnings about implausibly old timestamp

commit afa7e01878
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 16:34:17 2012 -0400

    Inline unpack-channel.sh

commit 234ce610e0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 16:09:47 2012 -0400

    Doh

commit 7b10562370
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 16:06:49 2012 -0400

    Make ‘nix-store --optimise’ interruptible

commit 8a25d787d7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 11:33:15 2012 -0400

    download-from-binary-cache: Remove duplicate URLs

commit c770a2422a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Aug 1 11:19:24 2012 -0400

    Report substituter errors to clients of the Nix daemon

commit 4d1b64f118
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 31 18:56:22 2012 -0400

    Allow daemon users to override ‘binary-caches’

    For security reasons, daemon users can only specify caches that appear
    in the ‘binary-caches’ and ‘trusted-binary-caches’ options in
    nix.conf.

commit eb7849e3a2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 31 18:50:32 2012 -0400

    Prevent an injection attack in passing untrusted options to substituters

commit 90d9c58d4d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 31 18:19:44 2012 -0400

    Pass all --option flags to the daemon

commit 89a8207029
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 31 17:56:02 2012 -0400

    Add an option ‘build-fallback’ (equivalent to the --fallback flag)

commit 157170059d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 22:29:42 2012 -0400

    Manual: Remove reference to non-existent -I option

commit 97421eb5ec
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 19:55:41 2012 -0400

    Refactor settings processing

    Put all Nix configuration flags in a Settings object.

commit d50d7a2874
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 17:13:25 2012 -0400

    Whitespace

commit 9cd63d2244
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 17:09:36 2012 -0400

    Do some validation of URLs

commit f3eb29c653
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 17:09:13 2012 -0400

    Fix the test

commit 9de6d10d11
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 16:39:31 2012 -0400

    Get rid of $NIX_BINARY_CACHES

    You can use ‘--option binary-caches URLs’ instead.

commit ab42bf1dab
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 16:11:02 2012 -0400

    nix-install-package: Support binary caches

    The .nixpkg file format is extended to optionally include the URL of a
    binary cache, which will be used in preference to the manifest URL
    (which can be set to a non-existent value).

commit d059bf48e4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 16:09:54 2012 -0400

    Pass configuration settings to the substituters

    Previously substituters could read nix.conf themselves, but this
    didn't take --option flags into account.

commit f9613da180
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 15:43:37 2012 -0400

    Remove unused variables

commit 6183cf2f19
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 30 15:42:18 2012 -0400

    Fix whitespace

commit f15083c10a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 29 14:37:40 2012 -0400

    Document the --option flag

    Pointed out by Daniel Santa Cruz on IRC.

commit 66a3ac6a56
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 18:16:05 2012 -0400

    Allow a binary cache to declare that it doesn't support "nix-env -qas"

    Querying all substitutable paths via "nix-env -qas" is potentially
    hard on a server, since it involves sending thousands of HEAD
    requests.  So a binary cache must now have a meta-info file named
    "nix-cache-info" that specifies whether the server wants this.  It
    also specifies the store prefix so that we don't send useless queries
    to a binary cache for a different store prefix.

commit 6ecf4f13f6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 14:33:01 2012 -0400

    Use "set -x" in the tests to see where a test fails

commit e6ab52cdd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 14:15:03 2012 -0400

    Test "nix-env -qas" with the binary cache substituter

commit 73acb8b836
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 12:16:02 2012 -0400

    Let build.cc verify the expected hash of a substituter's output

    Since SubstitutionGoal::finished() in build.cc computes the hash
    anyway, we can prevent the inefficiency of computing the hash twice by
    letting the substituter tell Nix about the expected hash, which can
    then verify it.

commit fbf59d95f6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 10:56:33 2012 -0400

    Remove more tabs

commit 3a8f841612
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 10:47:36 2012 -0400

    download-using-manifests: Don't use nix-prefetch-url

    Instead call curl directly and pipe it into ‘nix-store --restore’.
    This saves I/O and prevents creating garbage in the Nix store.

commit b4ea83249b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 09:59:18 2012 -0400

    Remove trailing whitespace / tabs

commit 7f8e805c8e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 27 09:57:42 2012 -0400

    download-from-binary-cache: Only use the default cache for /nix/store

commit 67c6f3eded
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 18:28:12 2012 -0400

    nix-push: Support generating a manifest again

    This makes all the tests succeed.  Woohoo!

commit 50395b71a9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:36:07 2012 -0400

    Fix the substituter tests

commit e3ce54ccee
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:13:38 2012 -0400

    nix-push: Remove the upload feature

commit 609586a16d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:13:14 2012 -0400

    Add a test for the binary cache substituter

commit 7861260a5f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:12:42 2012 -0400

    Clear NIX_STORE when running the tests

commit 7892ad15ab
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:11:11 2012 -0400

    download-from-binary-cache: Support file://

    The file:// URI schema requires checking for errors in a more general
    way.  Also, don't cache file:// lookups.

commit dbce685e91
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 17:10:28 2012 -0400

    Add some .gitignore entries

commit 8c79100839
Merge: aa115e2 3a4623a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 15:14:33 2012 -0400

    Merge branch 'master' into no-manifests

commit 3a4623afbb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 26 15:04:40 2012 -0400

    Set permissions on temporary build directories to 0700

    Fixes #39.

commit 2605f4f4e6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 25 17:06:09 2012 -0400

    nix-profile.sh: Don't set NIX_REMOTE on single user installations

    Commit 6a214f3e06 reused the NixOS
    environment initialisation for nix-profile.sh, but this is
    inappropriate on systems that don't have multi-user support enabled.

commit 477b0fbeca
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 25 16:56:56 2012 -0400

    Subscribe to the Nixpkgs rather than NixOS channel

commit f5954e2d94
Author: Shea Levy <shea@shealevy.com>
Date:   Tue Jul 24 12:05:27 2012 -0400

    prim_import: When importing .drvs, allocate the intermediate attrset on the heap just in case it escapes the stack frame.

commit 1ef2d5765b
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jul 23 13:45:51 2012 -0400

    Turn tests back on

commit b1112bbef1
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jul 23 13:41:28 2012 -0400

    import: If the path is a valid .drv file, parse it and generate a derivation attrset.

    The generated attrset has drvPath and outPath with the right string context, type 'derivation', outputName with
    the right name, all with a list of outputs, and an attribute for each output.

    I see three uses for this (though certainly there may be more):

    * Using derivations generated by something besides nix-instantiate (e.g. guix)

    * Allowing packages provided by channels to be used in nix expressions. If a channel installed a valid deriver
      for each package it provides into the store, then those could be imported and used as dependencies or installed
      in environment.systemPackages, for example.

    * Enable hydra to be consistent in how it treats inputs that are outputs of another build. Right now, if an
      input is passed as an argument to the job, it is passed as a derivation, but if it is accessed via NIX_PATH
      (i.e. through the <> syntax), then it is a path that can be imported. This is problematic because the build
      being depended upon may have been built with non-obvious arguments passed to its jobset file. With this
      feature, hydra can just set the name of that input to the path to its drv file in NIX_PATH

commit 566a30c007
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Jul 23 12:51:04 2012 -0400

    Disable tests temporarily

commit e98c029717
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 18:42:18 2012 -0400

    Handle platforms that don't support linking to a symlink

    E.g. Darwin doesn't allow this.

commit fd63c8bfcd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 18:06:37 2012 -0400

    Unlink the right file

commit 0f65793f94
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 17:40:23 2012 -0400

    Add a test for Nix store optimisation

commit 680ab6f83d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 15:48:30 2012 -0400

    Garbage collect unused links in /nix/store/.links

    Incremental optimisation requires creating links in /nix/store/.links
    to all files in the store.  However, this means that if we delete a
    store path, no files are actually deleted because links in
    /nix/store/.links still exists.  So we need to check /nix/store/.links
    for files with a link count of 1 and delete them.

commit 6193105710
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 15:02:52 2012 -0400

    Automatically optimise the Nix store when a new path is added

    Auto-optimisation is enabled by default.  It can be turned off by
    setting auto-optimise-store to false in nix.conf.

commit 564fb7d9fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 12:08:34 2012 -0400

    optimiseStore(): Use a content-addressed file store in /nix/store/.links

    optimiseStore() now creates persistent, content-addressed hard links
    in /nix/store/.links.  For instance, if it encounters a file P with
    hash H, it will create a hard link

      P' = /nix/store/.link/<H>

    to P if P' doesn't already exist; if P' exist, then P is replaced by a
    hard link to P'.  This is better than the previous in-memory map,
    because it had the tendency to unnecessarily replace hard links with a
    hard link to whatever happened to be the first file with a given hash
    it encountered.  It also allows on-the-fly, incremental optimisation.

commit ed59bf7a18
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 17:11:12 2012 -0400

    nix-build: Support the ‘-’ argument to build an expression from stdin

commit 6852289c46
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 23 16:52:25 2012 -0400

    Use lutimes() if available to canonicalise the timestamp of symlinks

    Also use utimes() instead of utime() if lutimes() is not available.

commit 1832ab71db
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 17:17:23 2012 -0400

    Bump version

commit 98193bb440
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 16:50:56 2012 -0400

    Remove RPM builds that don't evaluate

commit b7fd2c2822
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 14:59:03 2012 -0400

    Use "#pragma once" to prevent repeated header file inclusion

commit 58337e0e61
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 11:51:27 2012 -0400

    Set release date

commit aa115e22df
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 11:01:17 2012 -0400

    download-from-binary-cache: Print correct URL

commit fe241ece29
Merge: a6f3485 ccc52ad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 18 10:47:59 2012 -0400

    Merge branch 'master' into no-manifests

commit ccc52adfb2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 18:55:39 2012 -0400

    Add function queryPathFromHashPart()

    To implement binary caches efficiently, Hydra needs to be able to map
    the hash part of a store path (e.g. "gbg...zr7") to the full store
    path (e.g. "/nix/store/gbg...kzr7-subversion-1.7.5").  (The binary
    cache mechanism uses hash parts as a key for looking up store paths to
    ensure privacy.)  However, doing a search in the Nix store for
    /nix/store/<hash>* is expensive since it requires reading the entire
    directory.  queryPathFromHashPart() prevents this by doing a cheap
    database lookup.

commit 220818f758
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 16:55:45 2012 -0400

    queryPathInfo(): return hash in base-32 if desired

    Cherry-picked from the no-manifests branch.

commit a6f348599c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 16:19:40 2012 -0400

    Print some debug output

commit 3a9fdf2747
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 15:55:30 2012 -0400

    Return an exit code of 100 for cached failed builds

    Exit code 100 should be returned for all permanent failures.  This
    includes cached failures.

    Fixes #34.

commit 1217204c81
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 14:07:52 2012 -0400

    Remove dead code

commit 51d71ad3d7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 11:49:47 2012 -0400

    Manual: Don't claim we support Cygwin

commit 6c01fb4d68
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 10:06:20 2012 -0400

    Update Nix 1.1 release notes

commit 53b24f3518
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 17 09:40:12 2012 -0400

    Allow disabling log compression

commit a7a43adb79
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jul 12 18:25:01 2012 -0400

    builtins.storePath: resolve symlinks

    Needed for Charon/Hydra interaction.

commit 04559a0d45
Merge: e4d6bcb eae8024
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 18:53:27 2012 -0400

    Merge branch 'master' of github.com:NixOS/nix into no-manifests

commit e4d6bcb6cd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 18:52:23 2012 -0400

    Update release notes

commit f2bdc87595
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 18:52:09 2012 -0400

    Update the other substituters

commit 15c15da482
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 18:07:41 2012 -0400

    Add some missing --version switches

commit d287b62b64
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 18:05:30 2012 -0400

    Set the User-Agent header to "Nix/<version>"

commit b74d92755d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 17:53:20 2012 -0400

    download-from-binary-cache: Use HEAD requests if possible

    In "nix-env -qas", we don't need the substitute info, we just need to
    know if it exists.  This can be done using a HTTP HEAD request, which
    saves bandwidth.

    Note however that curl currently has a bug that prevents it from
    reusing HTTP connections if HEAD requests return a 404:

    https://sourceforge.net/tracker/?func=detail&aid=3542731&group_id=976&atid=100976

    Without the patch attached to the issue, using HEAD is actually quite
    a bit slower than GET.

commit 09a6321aeb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 17:52:18 2012 -0400

    Replace hasSubstitutes() with querySubstitutablePaths()

    querySubstitutablePaths() takes a set of paths, so this greatly
    reduces daemon <-> client latency.

commit 58ef4d9a95
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 11:08:47 2012 -0400

    Add a function queryValidPaths()

    queryValidPaths() combines multiple calls to isValidPath() in one.
    This matters when using the Nix daemon because it reduces latency.
    For instance, on "nix-env -qas \*" it reduces execution time from 5.7s
    to 4.7s (which is indistinguishable from the non-daemon case).

commit 667d5f1936
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 10:49:04 2012 -0400

    Rename queryValidPaths() to queryAllValidPaths()

commit eb3036da87
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 10:43:24 2012 -0400

    Implement querySubstitutablePathInfos() in the daemon

    Also removed querySubstitutablePathInfo().

commit 6586414bc7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 10:14:06 2012 -0400

    nix-env: Determine which paths have substitutes in parallel

commit 5ee8944155
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jul 11 10:13:16 2012 -0400

    Cleanup

commit eae802459d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 15:49:20 2012 -0400

    Pass --insecure to curl so that https works

commit 2dd3117c27
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 15:48:55 2012 -0400

    Inline fetchurl.sh

commit 51f9f9924b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 15:41:43 2012 -0400

    Add a test for the fetchurl function

commit 035aa11403
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 11:14:57 2012 -0400

    Remove obsolete comment

commit a2865f6b3d
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 11:11:02 2012 -0400

    corepkgs/fetchurl: Build locally and outside of the chroot

commit 53f52c2111
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 11:04:11 2012 -0400

    corepkgs/fetchurl: the 'system' argument can be optional

commit 543bf742c9
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:55:35 2012 -0400

    corepkgs: distribute fetchurl files

commit f863673a90
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:33:40 2012 -0400

    corepkgs/fetchurl: Call the shell directly instead of using the shebang

commit a994eb92a4
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:32:12 2012 -0400

    corepkgs/fetchurl.sh: Use config.nix's curl

commit 9d94a28bed
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:29:18 2012 -0400

    The fetchurl builder is now fetchurl.sh

commit fd2630e1f7
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:26:50 2012 -0400

    Remove old fetchurl makefile

commit 6450f5699f
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:25:58 2012 -0400

    Move fetchurl files out of their subdirectory

commit 40c01ec467
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:22:26 2012 -0400

    corepkgs/config.nix.in: We'll need curl

commit c4df747267
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Jul 8 10:19:17 2012 -0400

    Resurrect old corepkgs fetchurl

commit 27f0c34390
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 13:16:09 2012 -0400

    Really fix RPM builds

commit ae72be1b8b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 13:11:37 2012 -0400

    Add WWW::Curl as a dependency

commit a560124cdf
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 11:58:12 2012 -0400

    Fix RPM builds

    http://hydra.nixos.org/build/2784908

commit 087dee6e1b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 11:56:55 2012 -0400

    Get rid of nix.conf.example

    No need to duplicate the nix.conf manpage.

commit 5755a5c354
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 11:33:38 2012 -0400

    Install a nix.conf manpage

commit 099125435f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 10:57:28 2012 -0400

    download-from-binary-cache: add nix.conf options

commit 98a423b75a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 9 09:59:34 2012 -0400

    prim_import(): prefetch substitute info in parallel using queryMissing()

commit 425cc612ad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 8 18:39:24 2012 -0400

    build.cc: Don't use hasSubstitute()

    Instead make a single call to querySubstitutablePathInfo() per
    derivation output.  This is faster and prevents having to implement
    the "have" function in the binary cache substituter.

commit 400e556b34
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 8 18:39:07 2012 -0400

    Cleanup

commit 11800e6198
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 6 19:08:20 2012 -0400

    download-from-binary-cache: parallelise fetching of NAR info files

    Getting substitute information using the binary cache substituter has
    non-trivial latency overhead.  A package or NixOS system configuration
    can have hundreds of dependencies, and in the worst case (when the
    local info cache is empty) we have to do a separate HTTP request for
    each of these.  If the ping time to the server is t, getting N info
    files will take tN seconds; e.g., with a ping time of 0.1s to
    nixos.org, sequentially downloading 1000 info files (a typical NixOS
    config) will take at least 100 seconds.

    To fix this problem, the binary cache substituter can now perform
    requests in parallel.  This required changing the substituter
    interface to support a function querySubstitutablePathInfos() that
    queries multiple paths at the same time, and rewriting queryMissing()
    to take advantage of parallelism.  (Due to local caching,
    parallelising queryMissing() is sufficient for most use cases, since
    it's almost always called before building a derivation and thus fills
    the local info cache.)

    For example, parallelism speeds up querying all 1056 paths in a
    particular NixOS system configuration from 116s to 2.6s.  It works so
    well because the eccentricity of the top-level derivation in the
    dependency graph is only 9.  So we only need 10 round-trips (when
    using an unlimited number of parallel connections) to get everything.

    Currently we do a maximum of 150 parallel connections to the server.
    Thus it's important that the binary cache server (e.g. nixos.org) has
    a high connection limit.  Alternatively we could use HTTP pipelining,
    but WWW::Curl doesn't support it and libcurl has a hard-coded limit of
    5 requests per pipeline.

commit cd94665f38
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jul 6 00:30:40 2012 -0400

    download-from-binary-cache: use WWW::Curl

    Using WWW::Curl rather than running an external curl process for every
    NAR info file halves the time it takes to get info thanks to libcurl's
    support for persistent HTTP connections.  (We save a roundtrip per
    file.)  But the real gain will come from using parallel and/or
    pipelined requests.

commit ae60643c15
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 3 18:54:46 2012 -0400

    download-from-binary-cache: do negative NAR info caching

    I.e. if a NAR info file does *not* exist, we record it in the cache DB
    so that we don't retry it later.

commit 89380c03e9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 3 18:35:39 2012 -0400

    download-from-binary-cache: in queries, preferred cached info

commit 2a8e5c8b11
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 3 17:47:01 2012 -0400

    download-from-binary-cache: strip trailing / from URLs

commit d694c599e2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Jul 3 17:29:33 2012 -0400

    download-from-binary-cache: cache binary cache info in a SQLite DB

commit 8319b1ab9f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 2 18:53:04 2012 -0400

    download-from-binary-cache: Verify NAR hashes

commit cf49472d60
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 2 18:05:57 2012 -0400

    nix-push: Always generate base-32 hashes

commit 6ec7460af1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jul 2 12:42:58 2012 -0400

    Binary caches: use a better key

    Use the hash part of the store path as a key rather than a hash of the
    store path.  This is enough to get the desired privacy property.

commit 6b1e671ac6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 1 21:57:25 2012 -0400

    Fix xz compression

commit 440adfbdd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 1 21:55:36 2012 -0400

    Add an environment variable $NIX_BINARY_CACHES specifying URLs of binary caches

commit f4190c38ba
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Jul 1 18:46:38 2012 -0400

    Allow both bzip2 and xz compression

commit 000132cbd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 29 18:30:28 2012 -0400

    nix-push: Don't pollute the current directory with result symlink

commit 37f7098464
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 29 18:28:52 2012 -0400

    First attempt at the manifest-less substituter

commit 91b8814f0d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 29 17:16:00 2012 -0400

    Doh

commit 4911a10a4e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Jun 29 14:26:31 2012 -0400

    Use XZ compression in binary caches

    XZ compresses significantly better than bzip2.  Here are the
    compression ratios and execution times (using 4 cores in parallel) on
    my /var/run/current-system (3.1 GiB):

      bzip2: total compressed size 849.56 MiB, 30.8% [2m08]
      xz -6: total compressed size 641.84 MiB, 23.4% [6m53]
      xz -7: total compressed size 621.82 MiB, 22.6% [7m19]
      xz -8: total compressed size 599.33 MiB, 21.8% [7m18]
      xz -9: total compressed size 588.18 MiB, 21.4% [7m40]

    Note that compression takes much longer.  More importantly, however,
    decompression is much faster:

      bzip2: 1m47.274s
      xz -6: 0m55.446s
      xz -7: 0m54.119s
      xz -8: 0m52.388s
      xz -9: 0m51.842s

    The only downside to using -9 is that decompression takes a fair
    amount (~65 MB) of memory.

commit 49cd7387ad
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Jun 28 17:19:32 2012 -0400

    nix-push: create a manifest-less binary cache

    Manifests are a huge pain, since users need to run nix-pull directly
    or indirectly to obtain them.  They tend to be large and lag behind
    the available binaries; also, the downloaded manifests in
    /nix/var/nix/manifest need to be in sync with the Nixpkgs sources.  So
    we want to get rid of them.

    The idea of manifest-free operation works as follows.  Nix is
    configured with a set of URIs of binary caches, e.g.

      http://nixos.org/binary-cache

    Whenever Nix needs a store path X, it checks each binary cache for the
    existence of a file <CACHE-URI>/<SHA-256 hash of X>.narinfo, e.g.

      http://nixos.org/binary-cache/bi1gh9...ia17.narinfo

    The .narinfo file contains the necessary information about the store
    path that was formerly kept in the manifest, i.e., (relative) URI of
    the compressed NAR, references, size, hash, etc.  For example:

      StorePath: /nix/store/xqp4l88cr9bxv01jinkz861mnc9p7qfi-neon-0.29.6
      URL: 1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd.nar.bz2
      CompressedHash: sha256:1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd
      CompressedSize: 202542
      NarHash: sha256:1af26536781e6134ab84201b33408759fc59b36cc5530f57c0663f67b588e15f
      NarSize: 700440
      References: 043zrsanirjh8nbc5vqpjn93hhrf107f-bash-4.2-p24 cj7a81wsm1ijwwpkks3725661h3263p5-glibc-2.13 ...
      Deriver: 4idz1bgi58h3pazxr3akrw4fsr6zrf3r-neon-0.29.6.drv
      System: x86_64-linux

    Nix then knows that it needs to download

      http://nixos.org/binary-cache/1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd.nar.bz2

    to substitute the store path.

    Note that the store directory is omitted from the References and
    Deriver fields to save space, and that the URL can be relative to the
    binary cache prefix.

    This patch just makes nix-push create binary caches in this format.
    The next step is to make a substituter that supports them.

commit 1aba0bf0fa
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 27 16:58:15 2012 -0400

    nix-store -r: do substitutions in parallel

    I.e. when multiple non-derivation arguments are passed to ‘nix-store
    -r’ to be substituted, do them in parallel.

commit 42f5a2fc29
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 27 09:52:27 2012 -0400

    Mount an empty /dev/shm tmpfs in the chroot

    This ensures that whatever the builder writes in /dev/shm is
    automatically cleaned up.

commit 3ee208516f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Jun 27 09:52:06 2012 -0400

    Check the return code of the clone() call

commit 1db38ae81b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 25 15:45:16 2012 -0400

    When using chroots, use a private PID namespace

    In a private PID namespace, processes have PIDs that are separate from
    the rest of the system.  The initial child gets PID 1.  Processes in
    the chroot cannot see processes outside of the chroot.  This improves
    isolation between builds.  However, processes on the outside can see
    processes in the chroot and send signals to them (if they have
    appropriate rights).

    Since the builder gets PID 1, it serves as the reaper for zombies in
    the chroot.  This might turn out to be a problem.  In that case we'll
    need to have a small PID 1 process that sits in a loop calling wait().

commit 5489086456
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 25 14:12:17 2012 -0400

    Use a private UTS namespace to provide a deterministic host/domain name to builders

    In chroot builds, set the host name to "localhost" and the domain name
    to "(none)" (the latter being the kernel's default).  This improves
    determinism a bit further.

    P.S. I have to idea what UTS stands for.

commit 8da6772ed4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jun 23 14:59:13 2012 -0400

    Update release notes

commit 723a68c826
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jun 23 00:57:14 2012 -0400

    Improve error message

commit 7ffa523fd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jun 23 00:51:40 2012 -0400

    In chroot builds, use a private SysV IPC namespace

    This improves isolation a bit further, and it's just one extra flag in
    the unshare() call.

    P.S. It would be very cool to use CLONE_NEWPID (to put the builder in
    a private PID namespace) as well, but that's slightly more risky since
    having a builder start as PID 1 may cause problems.

commit df716c98d2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Jun 23 00:28:35 2012 -0400

    In chroot builds, use a private network namespace

    On Linux it's possible to run a process in its own network namespace,
    meaning that it gets its own set of network interfaces, disjunct from
    the rest of the system.  We use this to completely remove network
    access to chroot builds, except that they get a private loopback
    interface.  This means that:

    - Builders cannot connect to the outside network or to other processes
      on the same machine, except processes within the same build.

    - Vice versa, other processes cannot connect to processes in a chroot
      build, and open ports/connections do not show up in "netstat".

    - If two concurrent builders try to listen on the same port (e.g. as
      part of a test), they no longer conflict with each other.

    This was inspired by the "PrivateNetwork" flag in systemd.

commit 2f3f413e91
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Jun 18 23:01:46 2012 -0400

    Support socket-based, on-demand activation of the Nix daemon with systemd

    Systemd can start the Nix daemon on demand when the Nix daemon socket
    is first accessed.  This is signalled through the LISTEN_FDS
    environment variable, so all we need to do is check for that and then
    use file descriptor 3 as the listen socket instead of creating one
    ourselves.

commit 02fb6323e0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 31 09:50:58 2012 -0400

    Add Emacs to the disk image

commit 221626e715
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Wed May 30 08:31:59 2012 +0700

    fixes to nix-worker systemd service descriptor: - remove commented-out lines - register the file for distribution in Makefile.am

commit a7ed1f67ee
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Sun May 27 17:34:49 2012 +0700

    On systems with SystemD, install the service descriptor for nix-worker, and enable and start it

commit 8922346305
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Sun May 27 17:04:16 2012 +0700

    Major spec update: - Fix license field - Split into subpackages - Update build dependencies - Configure users and groups for multi-user mode - Fix installation location of Perl modules

commit 6a214f3e06
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Sun May 27 16:34:57 2012 +0700

    Update nix profile: - incorporate NixOS's configuration so that nix is usable by normal users - install as a data file, not a program file

commit d0308073c3
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Thu May 17 12:04:56 2012 +0800

    - only enable deprecated spec sections when building on systems with older RPM versions - move tests to dedicated %check section - use standard build macros

commit e545a7f9a8
Author: Michel Alexandre Salim <michel@sylvestre.me>
Date:   Thu May 17 11:56:29 2012 +0800

    - replace %define with %global

commit f5398d374b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 30 10:12:29 2012 -0400

    Compress build logs on the fly using bzip2

commit 881beb170d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 30 00:00:02 2012 -0400

    "nix-store -l": support compressed logs

commit 4bc4da331a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 29 22:59:12 2012 -0400

    Reserve some disk space for the garbage collector

    We can't open a SQLite database if the disk is full.  Since this
    prevents the garbage collector from running when it's most needed, we
    reserve some dummy space that we can free just before doing a garbage
    collection.  This actually revives some old code from the Berkeley DB
    days.

    Fixes #27.

commit 2c26985835
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 29 16:42:05 2012 -0400

    Add option ‘build-keep-log’ to enable/disable writing of build logs

    Fixes #26.

commit 8058dab26e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 24 12:04:07 2012 -0400

    Clean up the installation section; document the generic binary tarballs

commit 0301525e6c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 22 19:40:40 2012 -0400

    Fix owner/group in tar invocation

commit 6814b1dfa1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 22 18:36:54 2012 -0400

    Generate binary tarballs for installing Nix

    For several platforms we don't currently have "native" Nix packages
    (e.g. Mac OS X and FreeBSD).  This provides the next best thing: a
    tarball containing the closure of Nix, plus a simple script
    "nix-finish-install" that initialises the Nix database, registers the
    paths in the closure as valid, and runs "nix-env -i /path/to/nix" to
    initialise the user profile.

    The tarball must be unpacked in the root directory.  It creates
    /nix/store/... and /usr/bin/nix-finish-install.  Typical installation
    is as follows:

      $ cd /
      $ tar xvf /path/to/nix-1.1pre1234_abcdef-x86_64-linux.tar.bz2
      $ nix-finish-install
      (if necessary add ~/.nix-profile/etc/profile.d/nix.sh to the shell
      login scripts)

    After this, /usr/bin/nix-finish-install can be deleted, if desired.

    The downside to the binary tarball is that it's pretty big (~55 MiB
    for x86_64-linux).

commit 591aab7e21
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 22 14:00:08 2012 -0400

    Remove $FONTCONFIG_FILE hack from nix-profile.sh

    It's no longer needed because Nixpkgs' fontconfig uses
    /etc/fonts/fonts.conf as a default, just like other distributions.

commit e071f87dc5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 21 09:37:49 2012 -0400

    Add an experimental nix-make file

    To use it, just do (e.g.) "nix-build build.nix -A nix_env".

commit cac9eb39fe
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat May 12 00:07:08 2012 -0400

    Bump version number

commit dfc6a43b72
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 11 23:30:47 2012 -0400

    Fix the install check

commit 587b408210
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 11 17:40:58 2012 -0400

    Set release date

commit 8a08813d6c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 11 17:39:06 2012 -0400

    Manual updates

commit 2b00e6990c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 11 16:21:21 2012 -0400

    CSS tweaks

commit 58d1de08d9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 11 09:41:39 2012 -0400

    Use perl.libPrefix to (hopefully) fix the Cygwin build

    http://hydra.nixos.org/build/2602599

commit 37fa47908b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 10 22:12:20 2012 -0400

    Build Ubuntu 12.04 packages

commit 4d383f57f4
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 10 19:29:36 2012 -0400

    Document "nix-build --run-env"

commit 4f7bab7db1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 10 19:03:23 2012 -0400

    Support building with the Perl XS bindings disabled

    Since the Perl bindings require shared libraries, this is required on
    platforms such as Cygwin where we do a static build.

commit 6a7b24a3f2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 10 18:09:45 2012 -0400

    Document "nix-store --add"

commit cda1fd8ec8
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu May 10 16:56:36 2012 -0400

    Remove an obsolete hack

commit 663c06e8cd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 9 22:14:36 2012 -0400

    Disable building in chroot for Nix's corepkgs

    The dependencies of the corepkgs are not necessarily in the chroot (or
    in the Nix store), so don't build them in a chroot.

commit cb1248d208
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 9 19:06:39 2012 -0400

    Document some nix-store subcommands

commit 7a213ffc69
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 9 19:06:13 2012 -0400

    Document $NIX_PATH / -I

commit a58efdb69b
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed May 9 19:05:30 2012 -0400

    Update the release notes

commit 0c4c8f7a9d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 8 15:43:54 2012 -0400

    Remove obsolete files (moved to release tree)

commit afa7b8a479
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 7 17:55:56 2012 -0400

    nix-channel --update: allow updating only the specified channels

commit 147f10157f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon May 7 17:23:26 2012 -0400

    Now *really* prevent accumulation of old manifests

commit 464089365e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 4 21:40:56 2012 -0400

    Fix some 32-bit builds

    Perl on some 32-bit systems needs -D_FILE_OFFSET_BITS=64.  See also commit
    02f1363e19.

commit c6acb219f9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 4 18:50:34 2012 -0400

    Drop the Perl-specific CFLAGS

    This fixes the Darwin build (http://hydra.nixos.org/build/2517380).
    Hopefully it doesn't break other builds.

commit 56c82f3d9d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 4 17:45:21 2012 -0400

    Don't build for old Debian/Ubuntu releases that don't have a sufficiently new SQLite

commit 373e875ac2
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 4 17:25:25 2012 -0400

    Don't build for old Fedora releases that don't have a sufficiently new SQLite

commit d03a295192
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri May 4 17:21:43 2012 -0400

    Require SQLite >= 3.6.19

    Nix needs SQLite's foreign key constraint feature, which was
    introduced in 3.6.19.  Without it, the database won't be cleaned up
    correctly when paths are deleted.  See
    e.g. http://hydra.nixos.org/build/2494142.

commit e060c99447
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 1 16:35:18 2012 -0400

    Use mkpath instead of make_path

    Perl <= 5.10 doesn't have make_path.  See
    e.g. http://hydra.nixos.org/build/2493981.

commit e19fb7ebed
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 1 16:31:56 2012 -0400

    Do "make installcheck" for RPM builds

commit e145ac30e3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue May 1 15:48:17 2012 -0400

    Do "make installcheck" for Debian builds

commit db5b86ef13
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 30 19:15:34 2012 -0400

    * Add an option ‘build-use-substitutes’, which can be set to ‘false’
      to disable use of substitutes; i.e., force building from source.
      Fixes Nix/221.

commit 59a26360c7
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 30 17:22:45 2012 -0400

    Support mandatory system features in the build hook

    Mandatory features are features that MUST be present in a derivation's
    requiredSystemFeatures attribute.  One application is performance
    testing, where we have a dedicated machine to run performance tests
    (and nothing else).  Then we would add the label "perf" to the
    machine's mandatory features and to the performance testing
    derivations.

commit 82ae0e688c
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 30 16:49:00 2012 -0400

    Update the documentation of build-remote.pl

commit 46cdc6ad51
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 30 10:58:04 2012 -0400

    Handle EPERM when creating a hard link for the chroot

    There is a race condition when doing parallel builds with chroots and
    the immutable bit enabled.  One process may call makeImmutable()
    before the other has called link(), in which case link() will fail
    with EPERM.  We could retry or wrap the operation in a lock, but since
    this condition is rare and I'm lazy, we just use the existing copy
    fallback.

    Fixes #9.

commit c722193a91
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 26 16:52:08 2012 +0200

    Don't use the build hook for unpacking channels

commit 6de5d53416
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 24 12:56:30 2012 +0200

    Fix a warning in the build hook about $progressViewer

commit 6387830c3b
Merge: 259c6d3 85799bf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 23 03:29:03 2012 -0700

    Merge pull request #2 from viric/master

    Again, adding the sync option

commit 259c6d3fbb
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Apr 18 13:40:18 2012 +0200

    Fix URL set by nix-channel

commit 9cd3ff1059
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 17 17:19:43 2012 +0200

    nix-instantiate: default to "default.nix" if no arguments are given

commit 8745fade03
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 17 17:14:14 2012 +0200

    Added utility command ‘nix-instantiate --find-file’ to look up a file in Nix's search path

commit 8cf1719e3e
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 16 19:52:31 2012 +0200

    Hack to prevent accumulation of old manifests

commit 1132dd27ea
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Apr 16 18:47:01 2012 +0200

    Fix obscure race condition in GC root creation

    This should fix rare Hydra errors of the form:

    error: symlinking `/nix/var/nix/gcroots/per-user/hydra/hydra-roots/7sfhs5fdmjxm8sqgcpd0pgcsmz1kq0l0-nixos-iso-0.1pre33785-33795' to `/nix/store/7sfhs5fdmjxm8sqgcpd0pgcsmz1kq0l0-nixos-iso-0.1pre33785-33795': File exists

commit 154aa7f71a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Apr 15 00:42:16 2012 +0200

    Set a few more close-on-exec flags

commit 31e34fcf93
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Apr 15 00:20:32 2012 +0200

    Close almost all file descriptors in the builder

    This regression was accidentally introduced in
    35355fc1fc.

commit 0b5107c016
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Apr 14 21:05:28 2012 +0200

    If the (redirected) channel URL contains a version number, use it

commit 1d0bafb74d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Apr 14 21:04:22 2012 +0200

    Follow redirects early to ensure consistency between the manifest and the tarball

    Without this change, if the URL is a redirect that changes in between,
    we can get a manifest that doesn't match the tarball.

commit ca3d9f8b31
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Apr 14 19:52:58 2012 +0200

    Urgh, modified the wrong file...

commit ef902274fd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Apr 14 18:48:11 2012 +0200

    Remove unnecessary "system" argument

commit e855c7e2c9
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sat Apr 14 18:38:52 2012 +0200

    nix-channel improvements

    "nix-channel --add" now accepts a second argument: the channel name.
    This allows channels to have a nicer name than (say) nixpkgs_unstable.
    If no name is given, it defaults to the last component of the URL
    (with "-unstable" or "-stable" removed).

    Also, channels are now stored in a profile
    (/nix/var/nix/profiles/per-user/$USER/channels).  One advantage of
    this is that it allows rollbacks (e.g. if "nix-channel --update" gives
    an undesirable update).

commit 969a14599d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 13 14:41:33 2012 +0200

    If "pv" is available at compile time, hard-code its path

commit 34a85c5405
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Mar 29 18:58:14 2012 +0200

    nix-copy-closure: Move the progressViewer directly adjacent to the ssh call so that network progress is what's measured

commit 055e803851
Author: Shea Levy <shea@shealevy.com>
Date:   Thu Mar 29 18:20:31 2012 +0200

    Add the '--show-progress' flag to nix-copy-closure

commit 00c98a6bef
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 13 14:28:26 2012 +0200

    Use Bison 2.5

commit 209927bb27
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 10 16:40:51 2012 +0200

    Unconfuse Rob

commit 1fb30e6d50
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Apr 10 13:52:37 2012 +0200

    Handle the case where $SHELL is not set

commit 8f6146a7bc
Merge: 533250a 242a99c
Author: Rob Vermaas <rob.vermaas@gmail.com>
Date:   Mon Apr 9 00:24:08 2012 -0700

    Merge pull request #5 from shlevy/doc-fix

    Nix is on github now

commit 242a99c95a
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Apr 8 23:59:02 2012 -0400

    Nix is on github now

commit 533250a4a3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 22:54:15 2012 +0200

    Fix building from the tarball

commit 831c7aa410
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 22:03:19 2012 +0200

    Documentation fix

commit 5863987bba
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 21:56:20 2012 +0200

    Include environment variables in the manpages

commit 998b977ede
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 21:45:00 2012 +0200

    Include common options in the manpages using some XInclude hackery

commit d49ef039dd
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 21:43:56 2012 +0200

    Update affiliation

commit 5a6d50998d
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Fri Apr 6 20:26:30 2012 +0200

    Add a missing DocBook source file to the tarball

    Reported on IRC by Adrian Siekierka.

commit f2467eb6a0
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Thu Apr 5 13:03:19 2012 +0200

    On Linux, pretend we're building on Linux 2.6

    Setting the UNAME26 personality causes "uname" to return "2.6.x",
    regardless of the kernel version.  This improves determinism in
    a few misbehaved packages.

commit 3b859ead37
Author: Hydra mirror <hydra-mirror@lucifer.(none)>
Date:   Wed Apr 4 20:46:18 2012 +0000

    nix-generate-patches: Optionally write new patches to $NIX_ALL_PATCHES

commit 34ea91b259
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Apr 4 16:22:32 2012 +0200

    Include --keep-going in --help

commit 0837348049
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Wed Apr 4 15:41:35 2012 +0200

    Follow redirects when checking for the existence of MANIFEST.bz2

    If we don't follow redirects, we might think that MANIFEST.bz2 exists
    just because the HEAD request succeeds on the redirector URI.

commit b8fb0ce563
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 27 11:59:36 2012 +0200

    Update "nix-build --help"

commit 5144abe5b6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 27 11:40:47 2012 +0200

    Add an option "--exclude" to filter dependencies in "nix-build --run-env"

    Sometimes when doing "nix-build --run-env" you don't want all
    dependencies to be built.  For instance, if we want to do "--run-env"
    on the "build" attribute in Hydra's release.nix (to get Hydra's build
    environment), we don't want its "tarball" dependency to be built.  So
    we can do:

      $ nix-build --run-env release.nix -A build --exclude 'hydra-tarball'

    This will skip the dependency whose name matches the "hydra-tarball"
    regular expression.  The "--exclude" option can be repeated any number
    of times.

commit 3e94ffffd6
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 27 11:16:43 2012 +0200

    Allow the command executed by "nix-build --run-env" to be overriden with --command

commit 446b827bae
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 26 23:18:36 2012 +0200

    Mac OS X fix

commit 480dda0e42
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 26 20:56:30 2012 +0200

    Delete non-directory valid paths right away

    It's unlikely that rename() is faster than unlink() on a regular file
    or symlink, so don't bother.

commit 117670be57
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 26 20:43:33 2012 +0200

    Make the garbage collector more concurrent

    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.

commit 8be1979f1a
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 26 20:00:02 2012 +0200

    Remove the --max-links GC option

    We don't need this anymore now that current filesystems support more
    than 32,000 files in a directory.

commit 85799bf89e
Author: Lluís Batlle i Rossell <viric@viric.name>
Date:   Thu Mar 22 20:05:54 2012 +0100

    Fixing the default of sync-before-registering

    Setting 'false' as default, as suggested by Eelco.

    I also added a comment about the setting in the code.

commit 25de80e2b6
Author: Lluís Batlle i Rossell <viric@viric.name>
Date:   Thu Mar 22 19:57:42 2012 +0100

    Adding a nix option to sync before registering a path, for non-ext*
    filesystems.

commit 19d9762ad5
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Tue Mar 20 18:23:26 2012 +0100

    nix-store --clear-failed-paths: Clear derivation outputs

    If the argument to ‘nix-store --clear-failed-paths’ is a derivation,
    then clear the failed state of its outputs.

commit cb79e91ec3
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 17:05:42 2012 +0100

    Fix the coverage build

commit 457dd55962
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 15:11:22 2012 +0100

    Fix the Deb builds

commit 4b83483142
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 14:30:59 2012 +0100

    Fix the RPM

commit 7f38087f35
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 04:14:21 2012 +0100

    Add a command "nix-build --run-env" to reproduce the environment of a derivation

    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

commit ea402a255f
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 01:20:02 2012 +0100

    Replace "make check" with "make installcheck"

    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.

commit 4b23900ff1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Mon Mar 19 01:06:13 2012 +0100

    Fix the optional dependency on OpenSSL

    http://hydra.nixos.org/build/2306540

commit b006a31d52
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Mar 18 23:54:57 2012 +0100

    Drop the externals directory

    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.

commit 2e0322efd1
Author: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date:   Sun Mar 18 22:10:59 2012 +0100

    Clean up when building from a working tree

commit bd50c01972
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 13 17:07:49 2012 +0100

    Ensure that Perl processes delete their entry in the temproots directory

    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.

commit b461721f17
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 12 21:41:45 2012 +0100

    Fix tests

commit 005d1e4ccb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 6 20:03:20 2012 +0100

    Update bzip2 dependency

commit 605b16cd7b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 22:04:40 2012 +0100

    Fix compilation on FreeBSD

    http://hydra.nixos.org/build/2213576

    Not sure why compilation doesn't fail on other platforms...

commit d645633643
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 20:52:24 2012 +0100

    nix-copy-closure: don't print copied path on stdout

    We're already printing progress on stderr, so printing them on stdout
    afterwards is kind of useless.

commit 35355fc1fc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 20:29:00 2012 +0100

    Set the close-on-exec flag on file descriptors

commit 7b22bec252
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 20:28:09 2012 +0100

    Don't leak a file descriptor in commonChildInit()

commit 1d487dc6a6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 19:19:29 2012 +0100

    nix-worker: put the pid of the caller in argv[1]

    This is useful for debugging.

commit 2b4964f319
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 18:13:44 2012 +0100

    Restore progress indication during nix-copy-closure

commit 56042a120a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 5 17:58:09 2012 +0100

    build-remote.pl: don't wait forever for the upload lock

    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.

commit 8afd28a922
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 1 16:04:12 2012 +0100

    Remove dependency on sqlite3_table_column_metadata

    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.

commit 1c94524458
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 24 20:57:54 2012 +0100

    Fix an uninitialised variable

    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 :-)

commit 6fe13e6aba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Feb 18 01:23:52 2012 +0100

    Fix chroots builds

    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.

commit bd013b6f98
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 15 01:31:56 2012 +0100

    On Linux, make the Nix store really read-only by using the immutable bit

    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.

commit 5e57047d87
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 15 01:00:30 2012 +0100

    Fix a broken guard around utime()

    Because of an outdated check for a timestamp of 0, we were calling
    utime() even when it wasn't necessary.

commit 58ac7a17a4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 15 00:28:01 2012 +0100

    Don't use deletePath() to delete a single file

commit e9fc91df45
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 9 18:56:48 2012 +0100

    Fix error message

    This fixes the error message

      error: file `' was not found in the Nix search path (add it using $NIX_PATH or -I)

commit d5a5a83ad4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 9 18:27:45 2012 +0100

    Use data() instead of c_str() where appropriate

commit ec2827f5fc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 8 19:25:43 2012 +0100

    Update .gitignore

commit 4055a3b19c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 8 13:22:08 2012 +0100

    Remove empty ChangeLog file

commit fb95455c02
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 8 12:31:14 2012 +0100

    Set the versionSuffix to include the Git shortrev

commit 67444f5e54
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 7 13:18:20 2012 +0000

    * Build Nix for the latest Fedora and Ubuntu releases (and drop some
      old ones).

commit f491ae97d4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Feb 4 13:50:25 2012 +0000

    * Inline some functions and get rid of the indirection through
      EvalState::eval().  This gives a 12% speedup on ‘nix-instantiate
      /etc/nixos/nixos/ -A system --readonly-mode’ (from 1.01s to 0.89s).

commit 2bda12ef3b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Feb 4 13:27:11 2012 +0000

    * Print elapsed evaluation time.

commit ce86a9a0ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 2 12:25:56 2012 +0000

    * nix-channel: fail if we don't have write permission to the manifests
      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.

commit baa0501cc1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 26 13:13:00 2012 +0000

    * Fix importing a derivation.  This gave a segfault.

commit 4c9fdd2cd6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 26 13:04:50 2012 +0000

    * Add a test for importing derivations.

commit 330df4b4db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 19 23:08:47 2012 +0000

    * Allow comparisons between derivations by comparing the outPath
      attributes.

commit 18047d4625
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 19 23:07:42 2012 +0000

    * Add some debug output to print the derivation name once it's known.
      This makes it easier to pinpoint the source of a crash.

commit 126c7317bc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 19 22:10:24 2012 +0000

    * Add a test case for comparing derivations.

commit ddd0ce534a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 18 16:43:48 2012 +0000

    * Don't distribute Store.cc, it's generated automatically by xsubpp.

commit 02f1363e19
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 18 16:39:54 2012 +0000

    * Pass the appropriate flags to GCC when building the Perl bindings.
      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.

commit 4e624849b6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 17 23:07:22 2012 +0000

    * Added a command ‘nix-store --print-env $drvpath’ that prints out the
      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.

commit 2a3f4110c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jan 13 23:35:07 2012 +0000

    * nix-build: put the temporary derivation symlink in a temporary
      directory rather than the current directory.
    * nix-build: --drv-link now implies --add-drv-link.

commit 7ae763e16b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 12 14:16:25 2012 +0000

    * ‘-module’ causes the generated library to have an .so extension on
      Mac OS X instead of .dylib, so don't do that.

commit 6245f0d529
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Jan 11 16:58:49 2012 +0000

    tests: Run `download-using-manifests' via libtool so that dlopening works.

commit c5d9ccd810
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Jan 11 16:44:42 2012 +0000

    perl: Build libNixStore.la with `-module'.

commit f86fca9b70
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 11 15:41:42 2012 +0000

    * Figure out the extension of dynamic libraries; don't hard-code .so.

commit 9fe24c5a0d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 7 17:26:33 2012 +0000

    * Don't create thunks for simple constants (integers, strings, paths)
      and allocate them only once.
    * Move Value and related functions into value.hh.

commit d4e6b9f2d6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 5 21:07:12 2012 +0000

    * Doh!

commit a7366a764a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 5 20:33:46 2012 +0000

    * Add a -I flag to the Perl bindings to nix-build and some other
      scripts.
    * Include the version and architecture in the -I flag so that there is
      at least a chance that a Nix binary built for one Perl version will
      run on another version.

commit b52966e821
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 21:47:48 2012 +0000

    * Remove dead code.

commit 35f2a6ba82
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 21:24:11 2012 +0000

    * Don't use dynamic_cast, it's very slow.  "nix-instantiate
      /etc/nixos/nixos -A system" spent about 10% of its time in
      dynamic_cast.

commit adaf64a99b
Merge: 63227d4 9936da6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 16:22:25 2012 +0000

    * Merge the multiple-outputs-sandbox branch (svn merge --reintegrate
      ^/nix/branches/multiple-outputs-sandbox).  Multiple output support
      still isn't complete, but it wasn't complete in the trunk either, so
      it doesn't hurt.

commit 9936da6b54
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 12:45:53 2012 +0000

    * Check whether the outputName attribute works.

commit 9d43a02382
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 12:45:40 2012 +0000

    * Let --disable-gc work.

commit a0477a458f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 12:00:39 2012 +0000

    * currentOutput -> outputName.  "current" implies some temporal
      aspect.

commit b79b85ad76
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 11:56:15 2012 +0000

    * Export the original input attributes of the derivation in
      ‘drvAttrs’.  This will simplify the implementation of functions such
      as ‘overrideDerivation’ in Nixpkgs, which need to filter out any
      added attributes such as outPath.

commit 83647f4ef1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 4 11:04:19 2012 +0000

    * Simplify the implementation of "derivation" a bit: lift out the
      common attribution so that they're evaluated only once, etc.  Note
      that the default output is now the first element of the "outputs"
      attribute, rather than the first element of the sorted list of
      outputs.  This seems more user-friendly.

commit 71f3c46cf6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 15:27:18 2012 +0000

    * Drop the inefficient "Path" suffix in output attribute names.

commit 921111d197
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 14:01:47 2012 +0000

    * Move the implementation of the ‘derivation’ primop into a separate
      file.

commit 6c31232e14
Merge: 502d940 63227d4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 12:59:31 2012 +0000

    * Sync with the trunk.

commit 502d94048a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 12:59:00 2012 +0000

    * Ignore missing manifest symlinks.

commit 63227d434c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 12:18:41 2012 +0000

    * FreeBSD tar defaults to the tape device instead of stdout.

commit 9b7df1ef00
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 09:19:40 2012 +0000

    * Forgot to add.

commit 39d45a6b09
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 01:51:38 2012 +0000

    * Add a test for nix-channel.
    * Refactor the nix-channel unpacker a bit.

commit dadbb51d96
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 00:47:27 2012 +0000

    * Use Nix::Config.

commit 48cea0d01e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 3 00:16:29 2012 +0000

    * Refactoring: Get rid of a few subdirectories in corepkgs/, and some
      other simplifications.
    * Use <nix/...> to locate the corepkgs.  This allows them to be
      overriden through $NIX_PATH.
    * Use bash's pipefail option in the NAR builder so that we don't need
      to create a temporary file.

commit 93e71e6ab6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 17:39:03 2011 +0000

    * Follow our own coding conventions.

commit f2d65c9c80
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 17:31:58 2011 +0000

    * Remove a redundant dot (Nicolas Pierron).

commit 93b56acb2d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 17:25:19 2011 +0000

    * Support multiple outputs in nix-store (specifically the ‘--query’
      and ‘--realise’ actions).

commit a71d02440b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 17:13:25 2011 +0000

    * Oops.

commit 6f5e3326ce
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 15:02:50 2011 +0000

    * Move topoSortPaths() out of gc.cc.

commit b1004f40f7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 14:47:14 2011 +0000

    * Reject a build if there is a cycle among the outputs.  This is
      necessary because existing code assumes that the references graph is
      acyclic.

commit ed11b17b2e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 13:43:29 2011 +0000

    * Fix doc error.

commit 254b3399ba
Merge: 5679041 8c42a8c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 30 13:08:14 2011 +0000

    * Sync with the trunk.

commit 8c42a8c8ff
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 25 16:38:37 2011 +0000

    * Make sure that lock files are cleaned up properly when building
      through the build hook.

commit 524fa8a4f1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 22 16:27:03 2011 +0000

    * Oops.

commit b33da599c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 22 15:55:53 2011 +0000

    * In the garbage collector, delete invalid paths before deleting
      unreachable paths.  This matters when using --max-freed etc.:
      unreachable paths could become reachable again, so it's nicer to
      keep them if there is "real" garbage to be deleted.  Also, don't use
      readDirectory() but read the Nix store and delete invalid paths in
      parallel.  This reduces GC latency on very large Nix stores.

commit 58d974336c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 22 14:33:34 2011 +0000

    * Drop unnecessary call to canonPath() (nixStore is already canonical).

commit 66c99b0cf5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 22 10:58:27 2011 +0000

    * ‘--disable-shared’ is no longer supported.  Fortunately it's not
      needed for the coverage analysis.

commit 2aac7cd021
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 19:17:45 2011 +0000

    * Another case of lock file permissions being too liberal.

commit 4d728bc3e6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 19:11:58 2011 +0000

    * Security: make sure the lock files used by build-remote.pl are not
      readable to other users.  Otherwise, any user can open the lock file
      for reading and lock it, thus DoSing the remote build mechanism.

commit 69d6f0936a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 18:59:25 2011 +0000

    * Use a lock to ensure that only one build-remote instance can copy a
      closure to a given machine at the same time.  This prevents the case
      where multiple instances try to copy the same missing store path to
      the target machine, which is very wasteful.

commit 5679041132
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 18:19:05 2011 +0000

    * The ‘foo.drvPath’ feature was already broken in read-only mode.
      Since it's rarely used and fixing it is too much work right now,
      just document it.

commit f8e54b7874
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Dec 21 17:34:44 2011 +0000

    Make the reference cycle in the cyclic outputs test indirect

commit b4cee3f816
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Dec 21 17:31:34 2011 +0000

    Revert previous commit

    It doesn't detect indirect references

commit f3c88f297d
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Dec 21 17:14:28 2011 +0000

    Detect and reject mutually-referential outputs

    There is probably a more efficient way to do this.

commit b19a0f63db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 15:33:30 2011 +0000

    * Simplify the context handling logic.

commit 4be5a2c096
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 14:42:06 2011 +0000

    * Add a test for unsafeDiscardOutputDependency.  Not really related to
      multiple outputs, but good to have anyway.

commit 179409b911
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 13:47:21 2011 +0000

    * Add a test for referring to another derivation's ‘drvPath’.  This
      currently fails in read-only mode.

commit 3877619888
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 21 11:47:52 2011 +0000

    * Add some accidentally committed files.

commit edd9359beb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 20 17:10:39 2011 +0000

    * Doing a GC after building a derivation with cyclic outputs currently
      segfaults.

commit 1f3b0ede7d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 20 17:08:43 2011 +0000

    * Add a (currently failing) test that checks whether mutually
      recursive outputs are properly rejected.
    * Add a (also failing) test for "nix-build -A <output-name>".

commit 46e42c92c1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 20 17:01:02 2011 +0000

    * Refactor a bit so that more tests can be added.

commit b5363810bb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 20 16:37:01 2011 +0000

    * Fix the build.

commit 194d21f9f6
Merge: 3c3107d 273b288
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 16 23:33:01 2011 +0000

    * Sync with the trunk.

commit 273b288a7e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 16 22:31:25 2011 +0000

    * importPath() -> importPaths().  Because of buffering of the input
      stream it's now necessary for the daemon to process the entire
      sequence of exported paths, rather than letting the client do it.

commit 8d3dfa2c17
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 16 21:29:46 2011 +0000

    * Avoid expensive conversions from char arrays to STL strings.

commit e0bd307802
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 16 19:44:13 2011 +0000

    * Make the import operation through the daemon much more efficient
      (way fewer roundtrips) by allowing the client to send data in bigger
      chunks.
    * Some refactoring.

commit 78598d06f0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 16 15:45:42 2011 +0000

    * Clean up exception handling.

commit 5a1b9ed0aa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 15 16:19:53 2011 +0000

    * Refactoring: move sink/source buffering into separate classes.
    * Buffer the HashSink.  This speeds up hashing a bit because it
      prevents lots of calls to the hash update functions (e.g. nix-hash
      went from 9.3s to 8.7s of user time on the closure of my
      /var/run/current-system).

commit a67b8ae224
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 15 14:04:35 2011 +0000

    * Typo.

commit a3e0656cbb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 15 12:32:08 2011 +0000

    * Buffer reads in FdSource.  Together with write buffering, this
      significantly cuts down the number of syscalls (e.g., for "nix-store
      -qR /var/run/current-system" via the daemon, it reduced the number
      of syscalls in the client from 29134 to 4766 and in the daemon from
      44266 to 20666).

commit 3a48282b06
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 14 23:30:06 2011 +0000

    * Buffer writes in FdSink.  This significantly reduces the number of
      system calls / context switches when dumping a NAR and in the worker
      protocol.

commit 893cac1402
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 14 22:41:10 2011 +0000

    * Remove the terminate handler, which was only really needed because
      of Berkeley DB (see r8632).

commit 23bf700196
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 14 22:31:31 2011 +0000

    * Oops, the daemon test wasn't actually using the daemon.

commit c8c0380744
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 5 21:04:20 2011 +0000

    * Remove unnecessary quotes.  showPaths() already adds quotes.

commit 000160f5b9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 2 17:52:18 2011 +0000

    * In ‘nix-store --verify --check-contents’, repair missing hashes
      rather than complain about them.

commit 3964d95abf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 2 12:09:50 2011 +0000

    * nix-prefetch-url: rewritten in Perl.

commit 92d6a5ed73
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 2 12:09:24 2011 +0000

    * Add some more functions to the Perl bindings.

commit 49f59dceca
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 2 11:47:06 2011 +0000

    * Move parseHash16or32 into libutil, and use in nix-hash.

commit b12b21825c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 1 16:41:43 2011 +0000

    * Allow '<nixexpr>' syntax to be used in nix-instantiate, nix-build
      and nix-env, e.g.,

      $ nix-env -f '<nixpkgs>' -i patchelf

      or

      $ nix-build '<nixos/tests>' -A login.test

commit 23c38a04cc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 1 13:51:05 2011 +0000

    * Slight improvement.

commit 24f863d86b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 1 13:48:48 2011 +0000

    * When doing "nix-store --add-fixed" without "--recursive" via the Nix
      daemon (which is an error), print a nicer error message than
      "Connection reset by peer" or "broken pipe".
    * In the daemon, log errors that occur during request parameter
      processing.

commit be9be4c147
Author: Peter Simons <simons@cryp.to>
Date:   Thu Dec 1 08:03:30 2011 +0000

    doc/manual/nix-env.xml: fixed "nix-env -qaA" typo

commit 3c7ec8fc1b
Author: Peter Simons <simons@cryp.to>
Date:   Thu Dec 1 08:02:37 2011 +0000

    doc/manual/nix-env.xml: stripped trailing whitespace

commit f35c4351e5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 22:15:07 2011 +0000

    * Don't require a specific Perl version.

commit 4d0407ba08
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 13:38:52 2011 +0000

    * Fix make check.

commit 1749a7b0ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 13:01:24 2011 +0000

    * download-using-manifests: use the Perl bindings.

commit b1eb8f4249
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 13:00:41 2011 +0000

    * Get rid of some superfluous error messages if a substituter fails.
    * Say "fetch" instead of "substitute".

commit 216440b3ff
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 12:32:55 2011 +0000

    * For consistency with "nix-store -q --hash", produce hashes in
      base-32.  (This affects Hydra manifests.)

commit 1df120cb05
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 29 10:51:22 2011 +0000

    * Get rid of the shell in ssh calls.

commit 784083176a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 25 17:04:26 2011 +0000

    * Fix race.

commit f3bc98b001
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 23 15:39:54 2011 +0000

commit 10e2b2b79e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 23 15:39:02 2011 +0000

    * Document the --include-outputs option.

commit d5ac78e0d6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 23 15:29:58 2011 +0000

    * Add bzip2 and xz support to nix-copy-closure.

commit 5bbd693cae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 23 15:13:37 2011 +0000

    * Add an API function exportPaths() that provides the functionality of
      ‘nix-store --export’.
    * Add a Perl module that provides the functionality of
      ‘nix-copy-closure --to’.  This is used by build-remote.pl so it no
      longer needs to start a separate nix-copy-closure process.  Also, it
      uses the Perl API to do the export, so it doesn't need to start a
      separate nix-store process either.  As a result, nix-copy-closure
      and build-remote.pl should no longer fail on very large closures due
      to an "Argument list too long" error.  (Note that having very many
      dependencies in a single derivation can still fail because the
      environment can become too large.  Can't be helped though.)

commit ab20af3e6f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 23 12:21:35 2011 +0000

    * build-remote.pl: drop a hard-coded reference to /nix/etc/nix.

commit 993fa94fb4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 22 17:28:41 2011 +0000

    * Move initialisation of variables like nixConfDir from libmain to
      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.

commit 4e1ea17052
Author: Rob Vermaas <rob.vermaas@gmail.com>
Date:   Mon Nov 21 15:19:51 2011 +0000

    nix: add /etc/hosts with localhost entry to chroot builds.

commit 4de3e2a0db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 21 13:22:34 2011 +0000

    * Doh.

commit 23e933b3b3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 21 12:23:48 2011 +0000

    * Put back the "sys_name" variable which got removed somewhere.  This
      broke building on Cygwin and Solaris.

commit a6abade8e8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 21 12:18:26 2011 +0000

    * Escape the [ and ] characters in the sed call, otherwise autoconf
      will eat them.

commit 964399c079
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Nov 20 19:23:50 2011 +0000

    * "sed" on FreeBSD doesn't know the "+" operator.

commit b92f76374f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 18 17:25:40 2011 +0000

    * In the platform, canonicalise "amd64" to "x86_64".  FreeBSD 8.2's
      uname reports amd64.
    * Drop the FreeBSD version number, e.g. "i686-freebsd" instead of
      "i686-freebsd8.2".

commit 42164d6de4
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Nov 16 20:58:21 2011 +0000

    configure: Change i*86 to i686 as has always been done.

commit 45ec69cbdf
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Nov 16 20:39:59 2011 +0000

    configure: Rely on `AC_CANONICAL_HOST' to determine the Nix system name.

    This should be more robust and also plays better with
    cross-compilation---it uses the host name, instead of using the build
    name.

commit f8e609c341
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 16 16:41:48 2011 +0000

    * nix-pull: update the Nix manifest cache if necessary.  Also, don't
      read the manifest just to check the version and print the number of
      paths.  This makes nix-pull very fast for the cached cache (speeding
      up nixos-rebuild without the ‘--no-pull’ or ‘--fast’ options).

commit d7d7910ba4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 16 16:25:38 2011 +0000

    * Don't decompress the manifests in /nix/var/nix/manifest.  This saves
      disk space, and, since they're typically only decompressed once (to
      fill the manifest cache), doesn't make things slower.

commit 63ee5e4d2a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 16 11:56:19 2011 +0000

    * Remove obsolete line.

commit a5952405d2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 16 11:37:40 2011 +0000

    * Re-use prepared statements across insertions into the manifest cache
      DB.  This speeds up creating the cache from 16.1s to 7.9s on my
      system.

commit c0b706213d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 7 21:11:59 2011 +0000

    * Boldly make SQLite WAL mode the default again.  Hopefully the
      intermittent problems are gone by now.  WAL mode is preferrable
      because it does way fewer fsyncs.

commit 3c3107da86
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 07:18:19 2011 +0000

    There's no need to mess with drvPath at all

commit 2ab29be70c
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 07:03:14 2011 +0000

    Fix faulty reversion of my changes to unsafeDiscardOutputDependency

commit ca0d47a70c
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:54:05 2011 +0000

    Respect all outputs passed to the derivation, not just the last one

commit 24b65937e1
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:34 2011 +0000

    Remove the unused sCurrentOutput symbol

commit 3522730316
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:30 2011 +0000

    Embed output name into the context of the *OutPath attributes and extract it for input derivations

    Multiple outputs test passes!

commit 46876ff203
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:25 2011 +0000

    Fix stupid typo in multiple outputs test

commit af2e53fd48
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:20 2011 +0000

    Include all outputs of derivations in the closure of explicitly-passed derivation paths

    This required adding a queryOutputDerivationNames function in the store API

commit 981edeab7b
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:14 2011 +0000

    The 'insert output between = signs' approach was not helpful

commit f883afa1a1
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 06:28:08 2011 +0000

    The nixinstantiate and nixstore env vars are no longer set in common.sh

commit 2721e9f56f
Merge: bffe35a a6a3f3a
Author: Shea Levy <shea@shealevy.com>
Date:   Sun Nov 6 00:13:09 2011 +0000

    Merge from trunk

commit a6a3f3a8c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Nov 5 21:23:01 2011 +0000

    * Fix race condition in the test.

commit fa69ff5726
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Nov 5 21:06:24 2011 +0000

    * Fix the broken reference to bunzip2 in the channel unpack script.

commit daed9aeac5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 3 19:22:24 2011 +0000

commit d7b87bebe3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 3 18:47:10 2011 +0000

    * The Nix configuration file is usually /etc/nix/nix.conf.

commit 325b5a8aee
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 2 19:14:54 2011 +0000

    * Fix permission on /nix/store in the manual for multi-user installs
      (reported by Silvio Frischknecht).

commit a12095d3be
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 27 19:06:23 2011 +0000

    * In printValueAsXML, handle the case where a "type" attribute is not
      a string.  This happens in the NixOS option system.
    * Remove a bogus comparison of a unsigned integer with -1.

commit 00b41e46ed
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 19 21:34:13 2011 +0000

    * Print a consistent message.

commit f186a9141e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 18 21:21:22 2011 +0000

    * nix-copy-closure: support ‘--dry-run’ and ‘--include-outputs’.

commit 6761757428
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 15:41:13 2011 +0000

    * Use the Store API bindings in nix-copy-closure.

commit d43a148204
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 13:58:47 2011 +0000

    * Add a test for nix-copy-closure.

commit 2492914fbc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 13:06:59 2011 +0000

    * Move the remote building test from the NixOS tree to the Nix tree.

commit c362e4d718
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 11:45:36 2011 +0000

    * Move SSH.pm.

commit 7d314b8c95
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 11:14:30 2011 +0000

    * Work around a race condition starting the Nix daemon.

commit 5193db048e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 09:32:34 2011 +0000

    * Set svn:ignore.

commit a2a317eb0b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 11 09:31:55 2011 +0000

    * Distribute GeneratePatches.pm.

commit 5090c34ee1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 22:40:17 2011 +0000

    * Set the executable bit on scripts.

commit 8af7d766f0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 21:32:34 2011 +0000

    * Refactoring: remove unnecessary variables from the tests.

commit cd6d02c366
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 21:30:59 2011 +0000

commit 6fcdbcac20
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 21:11:08 2011 +0000

    * Install NixManifest.pm, NixConfig.pm and GeneratePatches.pm under
      the Nix:: namespace.

commit 659c427caa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 18:58:49 2011 +0000

    * Hopefully perl-devel contains the required headers (untested).

commit 73fe6871c4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 10 18:12:40 2011 +0000

    * Include the Nix Perl bindings in Nix itself.  This will allow the
      bindings to be used in Nix's own Perl scripts.

      The only downside is that Perl XS and Automake/libtool don't really
      like each other, so building is a bit tricky.

commit bffe35aced
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Sep 19 04:36:49 2011 +0000

    Update gitignore

commit 6c38cc9025
Author: Shea Levy <shea@shealevy.com>
Date:   Mon Sep 19 04:15:26 2011 +0000

    Ignore everything created during build

commit 55481c44d4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Sep 17 09:53:31 2011 +0000

    * Don't assume that we want a shared Nix store.

commit e81c09edbf
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 16 11:31:00 2011 +0000

    Remove the current output metadata from the string for unsaveDiscardOutputDependency

commit bf50d6ad32
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 16 11:30:52 2011 +0000

    Add information about which output is active to drvPath's context

    This will break things that depend on being able to just strip away an equals sign, so those have to be updated next

commit ffa038f66d
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 16 11:30:44 2011 +0000

    Add an sCurrentOutput member to EvalState

commit f3e410d4bf
Author: Shea Levy <shea@shealevy.com>
Date:   Fri Sep 16 11:30:03 2011 +0000

    Add a currentOutput attribute to derivations keep track of which output is active

commit 8f28a3ba25
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Sep 14 05:59:29 2011 +0000

    Add a test for multiple outputs

    This currently fails. Yay test-driven development!

commit c172d16b00
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Sep 14 05:59:17 2011 +0000

    First attempt at the output-as-derivation semantics

    For each output, this adds a corresponding attribute to the derivation that is
    the same as the derivation except for outPath, which is set to the path specific
    to that output. Additionally, an "all" attribute is added that is a list of all
    of the output derivations. This has to be done outside of derivationStrict as
    each output is itself a derivation that contains itself (and all other outputs)
    as an attribute. The derivation itself is equivalent to the first output in the
    outputs list (or "out" if that list isn't set).

commit 0b34e57eb8
Author: Shea Levy <shea@shealevy.com>
Date:   Wed Sep 14 00:41:02 2011 +0000

    Create a branch for me to play around with finishing off the multiple outputs implementation

commit 13114daa3e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Sep 12 09:07:43 2011 +0000

    * Ouch.  A store upgrade could cause a substituter to be triggered,
      causing a deadlock.

commit 281e3ed059
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Tue Sep 6 12:11:05 2011 +0000

    bootstrap: Simplify & make more robust.

commit e6cb3d0a0d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 6 12:06:30 2011 +0000

    * Added a command ‘nix-store --verify-paths PATHS’ to check whether
      the contents of any of the given store paths have been modified.
      E.g.

        $ nix-store --verify-path $(nix-store -qR /var/run/current-system)
        path `/nix/store/m2smyiwbxidlprfxfz4rjlvz2c3mg58y-etc' was modified! expected hash `fc87e271c5fdf179b47939b08ad13440493805584b35e3014109d04d8436e7b8', got `20f1a47281b3c0cbe299ce47ad5ca7340b20ab34246426915fce0ee9116483aa'

      All paths are checked; the exit code is 1 if any path has been
      modified, 0 otherwise.

commit 82710f96f7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 6 12:00:11 2011 +0000

    * Add some -f flags, never hurts.

commit 93227ff65c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 31 21:11:50 2011 +0000

    * Eliminate all uses of the global variable ‘store’ from libstore.
      This should also fix:

        nix-instantiate: ./../boost/shared_ptr.hpp:254: T* boost::shared_ptr<T>::operator->() const [with T = nix::StoreAPI]: Assertion `px != 0' failed.

      which was caused by hashDerivationModulo() calling the ‘store’
      object (during store upgrades) before openStore() assigned it.

commit 5bcdc7e351
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 27 16:59:32 2011 +0000

    * Update the cleanup script.

commit a95ba4cdd9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 17 14:17:19 2011 +0000

    * Use last_insert_id instead of sqlite_last_insert_rowid, which you're
      not really supposed to use according to the DBD::SQLite docs, and
      fails on some systems (e.g. http://hydra.nixos.org/build/1246662).

commit da18b11b05
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 8 14:08:38 2011 +0000

    * On FreeBSD, ‘touch’ is not in the test $PATH, so don't use it.

commit 76e0029f7a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 8 14:06:10 2011 +0000

    * Add perl-DBD-SQLite as a dependency of the RPM builds.

commit d374be551d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 8 13:19:00 2011 +0000

    * Add DBD-SQLite as a dependency to the Debian/Ubuntu builds.
    * Drop some old Fedora/Debian/Ubuntu releases.

commit 2d663b502d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 19:45:43 2011 +0000

    * Cache the result of file evaluation (i.e, memoize evalFile()).  This
      prevents files from being evaluated and stored as values multiple
      times.  For instance, evaluation of the ‘system’ attribute in NixOS
      causes ‘nixpkgs/pkgs/lib/lists.nix’ to be evaluated 2019 times.

      Caching gives a modest speedup and a decent memory footprint
      reduction (e.g., from 1.44s to 1.28s, and from 81 MiB to 59 MiB with
      GC_INITIAL_HEAP_SIZE=100000 on my system).

commit 510033e783
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 18:54:29 2011 +0000

    * Handle <path> syntax.

commit 9d091ee99a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 18:45:28 2011 +0000

    * Handle the case where the search path element is a regular file.

commit 00a724ebc6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 18:24:43 2011 +0000

    * Remove a debug statement.

commit 07340b8be7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 18:23:38 2011 +0000

    * Add the Nix corepkgs to the end of the search path.  This makes it
      possible for other Nix expressions to use corepkgs (mostly useful
      for the buildenv function).

commit c7101dac0b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 17:48:57 2011 +0000

    * Allow redirections in search path entries.  E.g. if you have a
      directory

        /home/eelco/src/stdenv-updates

      that you want to use as the directory for import such as

        with (import <nixpkgs> { });

      then you can say

        $ nix-build -I nixpkgs=/home/eelco/src/stdenv-updates

commit 1578b2261d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 16:18:54 2011 +0000

    * Add lang/dir* to the distribution.

commit 1ecc97b6bd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 16:05:24 2011 +0000

    * Add a Nix expression search path feature.  Paths between angle
      brackets, e.g.

        import <nixpkgs/pkgs/lib>

      are resolved by looking them up relative to the elements listed in
      the search path.  This allows us to get rid of hacks like

        import "${builtins.getEnv "NIXPKGS_ALL"}/pkgs/lib"

      The search path can be specified through the ‘-I’ command-line flag
      and through the colon-separated ‘NIX_PATH’ environment variable,
      e.g.,

        $ nix-build -I /etc/nixos ...

      If a file is not found in the search path, an error message is
      lazily thrown.

commit 54945a2950
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 6 13:02:55 2011 +0000

    * Refactoring: move parseExprFromFile() and parseExprFromString() into
      the EvalState class.

commit c8606664ab
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 20 18:26:00 2011 +0000

    * Don't allow derivations with fixed and non-fixed outputs.

commit b2027f70d9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 20 18:10:47 2011 +0000

    * Fix a huuuuge security hole in the Nix daemon.  It didn't check that
      derivations added to the store by clients have "correct" output
      paths (meaning that the output paths are computed by hashing the
      derivation according to a certain algorithm).  This means that a
      malicious user could craft a special .drv file to build *any*
      desired path in the store with any desired contents (so long as the
      path doesn't already exist).  Then the attacker just needs to wait
      for a victim to come along and install the compromised path.

      For instance, if Alice (the attacker) knows that the latest Firefox
      derivation in Nixpkgs produces the path

        /nix/store/1a5nyfd4ajxbyy97r1fslhgrv70gj8a7-firefox-5.0.1

      then (provided this path doesn't already exist) she can craft a .drv
      file that creates that path (i.e., has it as one of its outputs),
      add it to the store using "nix-store --add", and build it with
      "nix-store -r".  So the fake .drv could write a Trojan to the
      Firefox path.  Then, if user Bob (the victim) comes along and does

        $ nix-env -i firefox
        $ firefox

      he executes the Trojan injected by Alice.

      The fix is to have the Nix daemon verify that derivation outputs are
      correct (in addValidPath()).  This required some refactoring to move
      the hash computation code to libstore.

commit d2bfe1b071
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 20 12:15:40 2011 +0000

    * Added a test that make sure that users cannot register
      specially-crafted derivations that produce output paths belonging to
      other derivations.  This could be used to inject malware into the
      store.

commit 4bdb51e621
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 20 11:50:13 2011 +0000

    * Refactoring.

commit 0243eea4b9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 20 11:47:00 2011 +0000

    * Create a symlink to /nix/var/nix/manifests in /nix/var/nix/gcroots
      if it doesn't exist.

commit d329c3ea9d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jul 18 23:31:03 2011 +0000

    * Support multiple outputs.  A derivation can declare multiple outputs
      by setting the ‘outputs’ attribute.  For example:

        stdenv.mkDerivation {
          name = "aterm-2.5";

          src = ...;

          outputs = [ "out" "tools" "dev" ];

          configureFlags = "--bindir=$(tools)/bin --includedir=$(dev)/include";
        }

      This derivation creates three outputs, named like this:

        /nix/store/gcnqgllbh01p3d448q8q6pzn2nc2gpyl-aterm-2.5
        /nix/store/gjf1sgirwfnrlr0bdxyrwzpw2r304j02-aterm-2.5-tools
        /nix/store/hp6108bqfgxvza25nnxfs7kj88xi2vdx-aterm-2.5-dev

      That is, the symbolic name of the output is suffixed to the store
      path (except for the ‘out’ output).  Each path is passed to the
      builder through the corresponding environment variable, e.g.,
      ${tools}.

      The main reason for multiple outputs is to allow parts of a package
      to be distributed and garbage-collected separately.  For instance,
      most packages depend on Glibc for its libraries, but don't need its
      header files.  If these are separated into different store paths,
      then a package that depends on the Glibc libraries only causes the
      libraries and not the headers to be downloaded.

      The main problem with multiple outputs is that if one output exists
      while the others have been garbage-collected (or never downloaded in
      the first place), and we want to rebuild the other outputs, then
      this isn't possible because we can't clobber a valid output (it
      might be in active use).  This currently gives an error message
      like:

        error: derivation `/nix/store/1s9zw4c8qydpjyrayxamx2z7zzp5pcgh-aterm-2.5.drv' is blocked by its output paths

      There are two solutions: 1) Do the build in a chroot.  Then we don't
      need to overwrite the existing path.  2) Use hash rewriting (see the
      ASE-2005 paper).  Scary but it should work.

      This is not finished yet.  There is not yet an easy way to refer to
      non-default outputs in Nix expressions.  Also, mutually recursive
      outputs aren't detected yet and cause the garbage collector to
      crash.

commit d9a5959139
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 13 15:57:44 2011 +0000

    * Show the default for --with-store-dir (Nix/211).

commit d5d4dcd4c9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 13 15:53:24 2011 +0000

    * Allow attribute names to be strings.  Based on the
      allow-arbitrary-strinsg-in-names patch by Marc Weber.

commit e649f3168b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 13 14:05:54 2011 +0000

    * Fix concurrency issues in download-using-manifests' handling of the
      SQLite manifest cache.  The DBI AutoCommit feature caused every
      process to have an active transaction at all times, which could
      indefinitely block processes wanting to update the manifest cache.

    * Disable fsync() in the manifest cache because we don't need
      integrity (the cache can always be recreated if it gets corrupted).

commit 0a623a10c7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 13 12:19:57 2011 +0000

    * Allow a default value in attribute selection by writing

        x.y.z or default

      (as originally proposed in
      https://mail.cs.uu.nl/pipermail/nix-dev/2009-September/002989.html).

      For instance, an expression like

        stdenv.lib.attrByPath ["features" "ckSched"] false args

      can now be written as

        args.features.ckSched or false

commit 2b9e29b1c8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 6 12:28:57 2011 +0000

    * Change the right-hand side of the ‘.’ operator from an attribute to
      an attribute path.  This is a refactoring to support default values.

commit 5580f3817c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 6 10:58:53 2011 +0000

    * Test case.

commit 5637037802
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 6 10:58:17 2011 +0000

    * In the ‘?’ operator, allow attribute paths.  For instance, you can
      write ‘attrs ? a.b’ to test whether ‘attrs’ has an attribute ‘a’
      containing an attribute ‘b’.  This is more convenient than ‘attrs ?
      a && attrs.a ? b’.

      Slight change in the semantics: it's no longer an error if the
      left-hand side of ‘?’ is not an attribute set.  In that case it just
      returns false.  So, ‘null ? foo’ no longer throws an error.

commit 34f4b91820
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jul 4 14:44:53 2011 +0000

commit 1ea6e06445
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Jun 30 15:48:40 2011 +0000

    doc: Fix typo.

commit 5c9e9f732d
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Jun 30 15:19:13 2011 +0000

    Add support for the `build-timeout' and `--timeout' options.

commit 9c99aa2620
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 27 09:01:09 2011 +0000

commit e4d8148585
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 27 08:04:54 2011 +0000

commit 4891b21f34
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 3 16:17:24 2011 +0000

    * Use SQLite 3.7.6.2.

commit d94cb02bfe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 19 10:52:35 2011 +0000

    * nix-install-package: unset NIX_REMOTE because $NIX_MANIFESTS_DIR
      doesn't work when building through the Nix daemon.  This also
      ensures an error message when the user doesn't have sufficient
      privileges to do nix-pull.

commit 8c69dac8a1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 19 10:44:44 2011 +0000

    * Handle error messages from the Nix worker containing the `%'
      character.  (Nix/216)

commit 4ba6afaf48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 16:27:05 2011 +0000

    * `nix-env -ub' (`--prebuilt-only') didn't really work because it
      checked too soon whether substitutes are available.  That is, it did
      so for every available package, rather than those matching installed
      packages.  This was very slow and subject to assertion failures.  So
      do the check much later.  Idem for `nix-env -qab' and `nix-env -ib'.

commit 412914d004
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 13:16:54 2011 +0000

    * Read manifests directly into the database, rather than first reading
      them into memory.  This brings memory use down to (more or less)
      O(1).  For instance, on my test case, the maximum resident size of
      download-using-manifests while filling the DB went from 142 MiB to
      11 MiB.

commit 08c8971498
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 12:40:13 2011 +0000

    * Lock the database during updates.

commit b2c11b9ed0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 10:23:15 2011 +0000

commit 3cbf680f5d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 10:13:53 2011 +0000

    * configure: detect whether DBD::SQLite is present.  If necessary the
      location to DBI and DBD::SQLite can be passed with --with-dbi and
      --with-dbd-sqlite.

commit 83252b4ca9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 08:21:30 2011 +0000

    * Subtle bug: if you import File::stat in one module, it affects other
      modules as well.  So use symbolic field names everywhere (which is
      nicer anyway).

commit b1882c3ef7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 11 08:06:14 2011 +0000

    * Create $manifestDir if it doesn't exist.

commit 5591fcc529
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Apr 10 23:22:46 2011 +0000

    * Cache the manifests in /nix/var/nix/manifests in a SQLite database.
      This significantly speeds up the download-using-manifests
      substituter, especially if manifests are very large.  For instance,
      one "nix-build -A geeqie" operation that updated four packages using
      binary patches went from 18.5s to 1.6s.  It also significantly
      reduces memory use.

      The cache is kept in /nix/var/nix/manifests/cache.sqlite.  It's
      updated automatically when manifests are added to or removed from
      /nix/var/nix/manifests.  It might be interesting to have nix-pull
      store manifests directly in the DB, rather than storing them as
      separate flat files, but then we would need a command line interface
      to delete manifests from the DB.

commit 1e7e4f21ba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 6 09:16:22 2011 +0000

    * Remove the localPaths feature in manifests since it's no longer used
      and redundant anyway.

commit 0423d0692a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 16 15:55:57 2011 +0000

    * Print a better error message.

commit 48bdbbf070
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 15 13:12:59 2011 +0000

    * Fix a bug in the documentation (reported by Olexiy Buyanskyy,
      Nix/215).

commit 802c2651c8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 17 15:08:33 2011 +0000

commit e945b52a31
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 17 13:26:33 2011 +0000

    * nix-push: handle the case where the hash is not set in the DB.

commit c3cee5395b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 14 14:56:02 2011 +0000

    * Build for Ubuntu 10.04.

commit 8fcaf3e9c6
Author: Florian Friesdorf <flo@chaoflow.net>
Date:   Mon Feb 14 03:11:56 2011 +0000

    make nix-mode provide 'nix-mode

    this enables (require 'nix-mode)

commit 538b7caab0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 10 14:31:04 2011 +0000

    * Don't allocate a big initial GC address space on machines with
      little RAM.  Even if the memory isn't actually used, it can cause
      problems with the overcommit heuristics in the kernel.  So use a VM
      space of 25% of RAM, up to 384 MB.

commit 5a6b039802
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 22:59:50 2011 +0000

    * Don't call GC_expand_hp unless we're actually using the garbage
      collector.

commit f1462c208b
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Feb 9 21:23:13 2011 +0000

    Use $BDW_GC_LIBS instead of a custom variable.

commit 1876ab764f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 14:13:09 2011 +0000

    * A better fix.  $boehmgc isn't set anywhere, we should use the flags
      returned by pkg-config.

commit dfc4117e90
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 14:08:32 2011 +0000

    * The GC library can't be found on Solaris
      (http://hydra.nixos.org/build/890714), so don't build with GC
      support for now.

commit d159ea1b7e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 14:03:16 2011 +0000

    * Urgh, FreeBSD doesn't have a "seq" command.

commit 3087b3f751
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 12:48:54 2011 +0000

    * Obsolete.

commit eb94581d39
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 12:43:44 2011 +0000

    * Remove obsolete directory.

commit 7bba67c401
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 12:42:15 2011 +0000

    * Remove obsolete file.

commit d0eda1f3e9
Merge: 3854fc9 5439885
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 12:41:54 2011 +0000

    * Merged the SQLite branch.

commit 543988572e
Merge: c0340ee 3854fc9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 9 12:25:53 2011 +0000

    * Sync with the trunk.

commit c0340eec5a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 8 12:30:28 2011 +0000

commit 0304fda3cf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Feb 5 16:40:15 2011 +0000

    * Propagate the CC setting.

commit aeae0beba4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Feb 5 16:29:10 2011 +0000

    * Clang compatibility fix.  Clang actually checks template definitions
      when they are defined

commit 3854fc9b42
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Fri Jan 14 13:55:58 2011 +0000

    Remove useless <config.h> inclusion from public header.

commit 9db190eb31
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jan 14 12:47:10 2011 +0000

    * builtins.substring: if "start" is beyond the end of the string,
      return the empty string.

commit d6c8b995c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 22 10:32:32 2010 +0000

    * In Hydra manifests the Size field is missing, so don't rely on it.
      This caused a lot of "Use of uninitialized value" warnings from
      Perl.

commit c931a7aec5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 17 17:23:15 2010 +0000

    * Do a short sleep after SQLITE_BUSY.

commit b1eb252172
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 17 11:28:26 2010 +0000

    * Propagate the "100" exit status for failed builds through the Nix
      daemon.

commit eac93d6efe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 17 09:28:51 2010 +0000

    * Use the right `make'.

commit a0be433fec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 15 14:25:54 2010 +0000

    * Disable X11 forwarding, it's not needed.

commit f1a6b97639
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 15 08:39:37 2010 +0000

    * nix-copy-closure: make sure that the shell doesn't do globbing of
      `+' and `?' in filenames.  This is very slow if /nix/store is very
      large.  (This is a quick hack - a cleaner solution would be to
      bypass the shell entirely.)

commit 3dd02580e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 14 13:25:20 2010 +0000

    * I forgot to catch SQLiteBusy in registerValidPaths().  So
      registerValidPaths() now handles busy errors and registerValidPath()
      is simply a wrapper around it.

commit d787285af9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 13 16:53:23 2010 +0000

    * nix-instantiate: return exit status 100 to denote a permanent build
      failure.  The build hook can use this to distinguish between
      transient and permanent failures on the remote side.

commit 5833243c92
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 13 13:42:34 2010 +0000

    * Create /nix/var/nix/db if it's missing.

commit 100becf8d1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 13 13:32:58 2010 +0000

    * createDirs(path): if path already exists, make sure it's a
      directory.
    * Provide a C++ wrapper around lstat().

commit d7ca6f44eb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 13 13:19:46 2010 +0000

    * Update some comments.

commit 542fc69062
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 13 08:39:10 2010 +0000

    * When doing a query (e.g. `nix-store -r --dry-run'), don't make a lot
      of expensive calls to `nix-store --check-validity'.

commit 4d57776813
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 10 11:45:56 2010 +0000

    * Use SQLite 3.7.4.

commit e4720b1a79
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 8 18:19:15 2010 +0000

    * Ignore the result of sqlite3_reset().

commit 7d0444e244
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 7 12:33:42 2010 +0000

    * Bad things happen when a filehandle has the same name as a module.

commit 8062d3af30
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 6 15:29:38 2010 +0000

    * `nix-store --verify --check-contents': don't hold the global GC lock
      while checking the contents, since this operation can take a very
      long time to finish.  Also, fill in missing narSize fields in the DB
      while doing this.

commit de79d23f76
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 5 18:23:19 2010 +0000

    * Retry a transaction if SQLite returns SQLITE_BUSY.  This can happen
      even with a very long busy timeout, because SQLITE_BUSY is also
      returned to resolve deadlocks.  This should get rid of random
      "database is locked" errors.  This is kind of hard to test though.
    * Fix a horrible bug in deleteFromStore(): deletePathWrapped() should
      be called after committing the transaction, not before, because the
      commit might not succeed.

commit 365f3028dd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 5 17:50:29 2010 +0000

    * Use CamelCase for the Perl modules.

commit f42a505ab7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 5 17:36:02 2010 +0000

    * Add a script `nix-generate-patches'.
    * Fix the binary patching test.

commit 77f7a6d591
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 29 17:07:04 2010 +0000

    * Quick hack around one of the pathological cases in bsdiff
      (namely, when there is a long region of 0s).  On one 86 MiB
      case, this cut patch generation time from 44m to 2m.

commit d3bba0c2d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 29 15:26:28 2010 +0000

    * Move the patch generator into a module.

commit 9737a7eba0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 29 09:26:05 2010 +0000

    * Don't generate patches if the system type differs.

commit bd48fd97f6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 29 09:15:45 2010 +0000

    * Impose a configurable time limit on patch generation.  This is
      necessary because bsdiff has some pathological worst-case behaviour,
      e.g. O(n^2) on files consisting only of 0s.

commit 703e5a2ce2
Merge: d92ccbf 812fae4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 25 14:09:13 2010 +0000

    * Sync with the trunk.

commit 812fae424e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 25 13:47:34 2010 +0000

    * DrvInfo contains pointers to expressions, so DrvInfos should be
      traced by the garbage collector.  Otherwise "nix-env -u" can crash
      randomly.

commit d92ccbf1ac
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 18:01:37 2010 +0000

    * Test whether sequences of patches work.

commit 1a211d812f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 17:54:49 2010 +0000

    * Oops.

commit a4f0365b2d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 17:41:59 2010 +0000

    * When checking whether a patch is applicable, for efficiency, use
      `nix-store -q --hash' to get the hash of the base path rather than
      `nix-hash'.  However, only do this for estimating the size of a
      download, not for the actual substitution, because sometimes the
      contents of store paths are modified (which they shouldn't, of
      course).

commit 3d38a49840
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 17:32:25 2010 +0000

    * In the download size indication, take binary patches into account.
      Hopefully this doesn't slow things down too much.

commit f69626ed3e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 15:45:09 2010 +0000

commit a07c68f05e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 15:30:07 2010 +0000

    * Finally, a test for the binary patch functionality.

commit bf658f016f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 14:39:02 2010 +0000

    * Test that download sizes are shown correctly.

commit 1e24cbaba3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 14:35:14 2010 +0000

    * Fix the test.

commit bdf089f463
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 14:31:42 2010 +0000

    * Before a build, show the disk space that the downloaded store paths
      will approximately require.

commit 06699d4219
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 12:57:52 2010 +0000

    * Store the NAR size in the manifest.

commit 5693b8a7e2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 12:51:54 2010 +0000

    * nix-push: no need to compute the NAR hash, since the Nix database
      already has it (`nix-store -q --hash').

commit e60c962fb8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 12:40:52 2010 +0000

    * Add an operation `nix-store -q --size'.

commit 1db6259076
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 17 12:08:01 2010 +0000

    * Implement RemoteStore::queryPathInfo().

commit a3883cbd28
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 16 17:11:46 2010 +0000

    * Store the size of a store path in the database (to be precise, the
      size of the NAR serialisation of the path, i.e., `nix-store --dump
      PATH').  This is useful for Hydra.

commit fb9368b5a0
Merge: 64fd298 4aced7f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 16 12:49:47 2010 +0000

    * Sync with the trunk.

commit 4aced7f8d0
Merge: 8dadced 26def53
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 29 15:04:39 2010 +0000

    * Merge the GC branch.

commit 26def5392f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 29 14:44:02 2010 +0000

    * Document Boehm GC support.

commit 3d71c8013e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 29 14:00:47 2010 +0000

    * Use pkgconfig to locate the Boehm GC (as suggested by Ludo), if
      --enable-gc is given.

commit 14fbf85380
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 29 13:11:50 2010 +0000

    * Set libgc's initial heap size to 384 MiB to prevent garbage
      collection in most cases (and therefore its performance overhead).

commit 0c4828ea05
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 28 12:50:01 2010 +0000

    * new(UseGC) is inexplicably slower than GC_MALLOC, so prefer the
      latter.

commit e11e6fb1c6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 28 12:29:40 2010 +0000

    * Handle out of memory condition.

commit 8a788e38ac
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 26 10:47:02 2010 +0000

    * Install config.h.

commit 11ccd44e95
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Oct 24 21:48:59 2010 +0000

    * We need Bison 2.4 now.

commit 43535499f3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Oct 24 20:09:37 2010 +0000

    * When allocating an attribute set, reserve enough space for all
      elements.  This prevents the vector from having to resize itself.

commit e0b7fb8f27
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Oct 24 19:52:33 2010 +0000

    * Keep attribute sets in sorted order to speed up attribute lookups.
    * Simplify the representation of attributes in the AST.
    * Change the behaviour of listToAttrs() in case of duplicate names.

commit 2dc6d50941
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Oct 24 14:20:02 2010 +0000

    * Don't create thunks for variable lookups (if possible).  This
      significantly reduces the number of values allocated (e.g. from 8.7m
      to 4.9m for the Bittorrent test).

commit 0b305c534f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Oct 24 00:41:29 2010 +0000

    * Store attribute sets as a vector instead of a map (i.e. a red-black
      tree).  This saves a lot of memory.  The vector should be sorted so
      that names can be looked up using binary search, but this is not the
      case yet.  (Surprisingly, looking up attributes using linear search
      doesn't have a big impact on performance.)

      Memory consumption for

        $ nix-instantiate /etc/nixos/nixos/tests -A bittorrent.test --readonly-mode

      on x86_64-linux with GC enabled is now 185 MiB (compared to 946
      MiB on the trunk).

commit a247d20604
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 23 22:58:24 2010 +0000

    * Fix compiling without Boehm.
    * Fix the stats.

commit 02934b1200
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 23 22:55:30 2010 +0000

    * Regression test for listToAttr's behaviour if an attribute name
      occurs multiple times.

commit b2ba62170c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 23 21:11:59 2010 +0000

    * Optimise string constants by putting them in the symbol table.

commit 8ac06726b9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 23 20:07:47 2010 +0000

    * Make Value smaller by not storing redundant PrimOp info.
    * Clear pointers in Values after overwriting them to make sure that no
      objects are kept alive unnecessarily.

commit 3f66cfb96b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 23 18:18:07 2010 +0000

    * Remove allocValues().

commit 4dee289550
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 22 15:51:52 2010 +0000

    * In environments, store pointers to values rather than values.  This
      improves GC effectiveness a bit more (because a live value doesn't
      keep other values in the environment plus the parent environments
      alive), and removes the need for copy nodes.

commit cf7e645a48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 22 15:15:12 2010 +0000

    * Regression test for __overrides.

commit 41c45a9b31
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 22 14:47:42 2010 +0000

    * Store Value nodes outside of attribute sets.  I.e., Attr now stores
      a pointer to a Value, rather than the Value directly.  This improves
      the effectiveness of garbage collection a lot: if the Value is
      stored inside the set directly, then any live pointer to the Value
      causes all other attributes in the set to be live as well.

commit 64c3325b0b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 22 13:39:15 2010 +0000

    * Make building against the Boehm GC a configure option.

commit 76feaf016a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 20 15:48:00 2010 +0000

    * Keep some more stats.

commit e879a0371b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 20 11:38:30 2010 +0000

    * Use the Boehm garbage collector to reclaim unused memory in the Nix
      expression evaluator.

commit b0c11cda7e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 20 09:08:39 2010 +0000

    * Evaluator garbage collection branch.

commit 64fd29855a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 14 15:55:51 2010 +0000

    * Wrap deleteFromStore() in a transaction.  Otherwise there might be a
      race with other processes that add new referrers to a path,
      resulting in the garbage collector crashing with "foreign key
      constraint failed".  (Nix/4)
    * Make --gc --print-dead etc. interruptible.

commit 8dadcede65
Author: Rob Vermaas <rob.vermaas@gmail.com>
Date:   Wed Oct 6 19:04:04 2010 +0000

    nix manual: fix 'install' -> 'uninstall' in garbage collection section of introduction

commit 7119d38287
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 22:26:38 2010 +0000

    * In the referrers test, lower the nesting depth from 2500 to 1000 to
      prevent hitting a stack overflow bug in the garbage collector.

commit 705868a8a9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 17:55:38 2010 +0000

    * Make sure that config.h is included before the system headers,
      because it defines _FILE_OFFSET_BITS.  Without this, on
      OpenSolaris the system headers define it to be 32, and then
      the 32-bit stat() ends up being called with a 64-bit "struct
      stat", or vice versa.

      This also ensures that we get 64-bit file sizes everywhere.

    * Remove the redundant call to stat() in parseExprFromFile().
      The file cannot be a symlink because that's the exit condition
      of the loop before.

commit 95f4f2cf61
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 16:16:19 2010 +0000

    * If std::tr1::unordered_set is unavailable, use std::set.

commit 36a23e86b6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 15:50:08 2010 +0000

    * "type -P" isn't portable.

commit bfa6ee7d91
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 12:30:46 2010 +0000

    * Don't use SSH's `-tt' flag because it doesn't seem to work
      on OpenSolaris when using connection sharing.  Instead have
      the remote side check for disconnection and kill the process
      group when that happens.

commit 71dfe4b90b
Merge: e490741 450837b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 11:44:47 2010 +0000

    * Sync with the trunk.

commit 450837bcc8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 11:23:07 2010 +0000

    * In printMsg(), ignore failing writes to stderr if we're in an
      exception handler, otherwise throw an exception.  We need to ignore
      write errors in exception handlers to ensure that cleanup code runs
      to completion if the other side of stderr has been closed
      unexpectedly.

commit 4aa9245083
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 4 10:51:16 2010 +0000

    * Hack needed for GCC 4.3.2 on OpenSolaris.

commit 923736df38
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 14 12:47:19 2010 +0000

    * Doh.  Remove debug message.

commit e4907411c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 1 11:36:22 2010 +0000

    * Only do "pragma journal_mode = ..." if the current journal mode
      differs from the desired mode.  There is an open SQLite ticket
      `Executing "PRAGMA journal_mode" may delete journal file while it is
      in use.'

commit bf0dde9597
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 31 12:36:24 2010 +0000

    * Always print hook output on stderr, even if --no-build-output is
      set.
    * In the build hook, print a trace message to allow Hydra to pick up
      the name of the remote machine used for the build.

commit e2e168f7c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 31 11:47:31 2010 +0000

    `nix-store --verify' improvements:
    * If a path has disappeared, check its referrers first, and don't try
      to invalidate paths that have valid referrers.  Otherwise we get a
      foreign key constraint violation.
    * Read the whole Nix store directory instead of statting each valid
      path, which is slower.
    * Acquire the global GC lock.

commit 80e722278c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 30 14:53:03 2010 +0000

    * When using the build hook, distinguish between the stderr of the
      hook script proper, and the stdout/stderr of the builder.  Only the
      latter should be saved in /nix/var/log/nix/drvs.
    * Allow the verbosity to be set through an option.
    * Added a flag --quiet to lower the verbosity level.

commit 20acd43c25
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 30 14:11:57 2010 +0000

    * Disable the GC reachability check for now (when creating new roots),
      as it's hopelessly inefficient.

commit 766f708418
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 27 13:18:13 2010 +0000

    * Experimental feature: allow a derivation to tell the build hook that
      it requires a certain feature on the build machine, e.g.

        requiredSystemFeatures = [ "kvm" ];

      We need this in Hydra to make sure that builds that require KVM
      support are forwarded to machines that have KVM support.  Probably
      this should also be enforced for local builds.

commit df50916e46
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 27 12:10:56 2010 +0000

    * Oops - "null" was displayed as "true".

commit e41ecbf730
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 27 11:09:04 2010 +0000

commit e437b08250
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 25 20:44:28 2010 +0000

    * Made the build hook mechanism more efficient.  Rather than starting
      the hook every time we want to ask whether we can run a remote build
      (which can be very often), we now reuse a hook process for answering
      those queries until it accepts a build.  So if there are N
      derivations to be built, at most N hooks will be started.

commit 1a396f3789
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 25 12:19:30 2010 +0000

    * Don't call "cat".

commit 95deba581d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 25 11:54:11 2010 +0000

    * In the build hook, temporarily register the derivation and its
      output as GC roots.  This prevents a race if the garbage collector
      is running during the build.

commit 1e5f5ea2e9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 24 14:27:07 2010 +0000

    * Correctly handle SSH failing to establish a connection.  Because
      this didn't work right, the build hook wouldn't fall back to using
      other machines of the desired type.

commit 034f608e00
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 24 14:25:33 2010 +0000

    * Don't complain if the stored hash of a path is zero (unknown).

commit f58f51f380
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 24 11:45:44 2010 +0000

    * Handle the unlikely case where a derivation has no dependencies at
      all.

commit 955d11aae7
Merge: 5c5ab2b c67eccc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 24 09:56:28 2010 +0000

    * Sync with the trunk.

commit c67eccc26d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 24 09:21:59 2010 +0000

    * nix-build: pass --cores.

commit 2c8e070e5d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 17 15:39:35 2010 +0000

    * Bump the version number.

commit ed133e6e64
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 17 14:08:44 2010 +0000

    * rpmBuild already includes the disk image in the output name.

commit 2de17f4edc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 17 10:06:26 2010 +0000

    * Update date.

commit 86f65edf4e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 17 07:22:05 2010 +0000

    * Document --cores in the manual.

commit b75e1043a3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 16 13:23:45 2010 +0000

    * Typo.

commit 8ec6594d6d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 16 13:01:31 2010 +0000

    * Remove the "tarball" jobset argument.

commit 12721a3a9a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 16 12:38:32 2010 +0000

    * Nix 0.16 release notes.

commit 5fb824e896
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 12 13:36:56 2010 +0000

    * Urgh, this was supposed to go in the trunk...

commit 5c5ab2bc12
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 12 13:34:34 2010 +0000

    * Don't link against pthreads.  This was added way back in r211
      because Berkeley DB needed it on some platforms, but we don't use
      BDB anymore.

      On FreeBSD, if you link against pthreads, then the main thread gets
      a 2 MB stack which cannot be overriden (it ignores "ulimit -s"):

        http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg62445.html

      This is not enough for Nix.  For instance, the garbage collector can
      fail if there is a pathologically deep chain of references
      (http://hydra.nixos.org/build/556199).  2 MB is also not enough for
      many Nix expressions.

      Arguably the garbage collector shouldn't use recursion, because in
      NixOS unprivileged users can DOS the garbage collector by creating a
      sufficiently deeply nested chain of references.  But getting rid of
      recursion is a bit harder.

commit 6846ed8b44
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 12 09:21:50 2010 +0000

    * Make --cores work when building through the Nix daemon.

commit 5f9aad44ca
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 11 15:28:02 2010 +0000

    * nix-build: recognise --cores.

commit d7875d1648
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 6 07:51:27 2010 +0000

    * Use SQLite 3.7.0.1.

commit 587dc8aa00
Merge: fd9c77d 750be19
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 4 17:48:29 2010 +0000

    * Sync with the trunk.

commit fd9c77dfc7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 4 17:35:59 2010 +0000

    * Use SQLite 3.7.0's write-ahead logging (WAL mode).  This is a lot
      faster than the old mode when fsyncs are enabled, because it only
      performs an fsync() when doing a checkpoint, rather than at every
      commit.  Some timings for doing a "nix-instantiate /etc/nixos/nixos
      -A system" after modifying the stdenv setup script:

        42.5s - SQLite 3.6.23 with truncate mode and fsync
         3.4s - SQLite 3.6.23 with truncate mode and no fsync
        32.1s - SQLite 3.7.0 with truncate mode and fsync
        16.8s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint
                every 1000 pages
         8.3s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint
                every 8192 pages
         1.7s - SQLite 3.7.0 with WAL mode and no fsync

      The default is now to use WAL mode with fsyncs.  Because WAL doesn't
      work on remote filesystems such as NFS (as it uses shared memory),
      truncate mode can be re-enabled by setting the "use-sqlite-wal"
      option to false.

commit 750be19ae8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 4 12:23:59 2010 +0000

    * Remove "auto" and "guess" as synonyms for 0 in the handling of
      build-cores and --cores.  They're superfluous and just complicate
      the parsing.

commit 7f893b7a43
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 4 12:13:58 2010 +0000

    * Allow derivations to hint that they should not be built remotely
      using the build hook mechanism, by setting the derivation attribute
      "preferLocalBuild" to true.  This has a few use cases:

      - The user environment builder.  Since it just creates a bunch of
        symlinks without much computation, there is no reason to do it
        remotely.  In fact, doing it remotely requires the entire closure
        of the user environment to be copied to the remote machine, which
        is extremely wasteful.

      - `fetchurl'.  Performing the download on a remote machine and then
        copying it to the local machine involves twice as much network
        traffic as performing the download locally, and doesn't save any
        CPU cycles on the local machine.

commit 315d8fbd75
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 4 09:32:42 2010 +0000

    * Set the default system filter to "*".  This ensures that (for
      instance) "nix-env -i wine" works on x86_64-linux, even though Wine
      is built on i686-linux.  In the event that there are multiple
      matching derivations, prefer those built for the current system.

commit 6d6200f37a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 2 16:31:05 2010 +0000

    * Optimisation in the // operator: if one of the sets is empty, return
      the other set.

commit 7af6a2fd71
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 2 11:54:44 2010 +0000

    * intersectAttrs: optimise for the case where the second set is larger
      than the first set.  (That's usually the case with callPackage.)

commit 532d766c27
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 21 11:30:23 2010 +0000

    * Don't barf if the source NAR for a patch has disappeared.

commit 7e043d28a6
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jul 15 14:35:20 2010 +0000

    src/bsdiff-4.3/Makefile.am: include the 'compat-include' directory in distribution tarballs

commit 60b632b173
Author: Peter Simons <simons@cryp.to>
Date:   Fri Jun 25 14:05:37 2010 +0000

    tests/build-hook.hook.sh: prefer more portable `...` syntax over $(...) for running sub-shells

    The /bin/sh interpreter on Solaris doesn't understand $(...) syntax for running
    sub-shells. Consequently, this test fails on Solaris. To remedy the situation,
    the script either needs to be run by /bin/bash -- which is non-standard --, or
    it needs to use the ancient but portable `...` syntax.

commit a0d29040f7
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 22:22:24 2010 +0000

    Revert "configure.ac: make flex and bison required programs"

    This reverts commit 22405. Apparently, these programs aren't necessarily
    required when building from a release archive.

commit af09fe12dd
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 17:51:31 2010 +0000

    Fix build of bsdiff-4.3 on machines that don't have <err.h>, such as Solaris.

commit d63375d529
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 17:51:24 2010 +0000

    configure.ac: Incredibly enough, tr(1) on Solaris doesn't understand A-Z syntax for ranges.

commit 4c21c016c5
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 17:51:19 2010 +0000

    configure.ac: make flex and bison required programs

    The build fails if these tools aren't available.

commit bcec46057c
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 17:51:13 2010 +0000

    src/libutil/util.cc: include <limit.h> to ensure that PATH_MAX is defined

commit a17071fef1
Author: Peter Simons <simons@cryp.to>
Date:   Thu Jun 24 17:51:04 2010 +0000

    Include <cstring> to ensure that strcpy(), strlen(), and memset() are declared.

    An "using namespace std" was added locally in those functions that refer to
    names from <cstring>. That is not pretty, but it's a very portable solution,
    because strcpy() and friends will be found in both the 'std' and in the global
    namespace.

commit 560ab22f7d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 23 21:11:33 2010 +0000

    * Ignore packages that don't have a version.
    * Work on a manifest instead of a channel directory.

commit 8b7f8b56f1
Author: Peter Simons <simons@cryp.to>
Date:   Wed Jun 23 14:34:08 2010 +0000

    Added support for passing an (impure) NIX_BUILD_CORES variable to build 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.

commit 87ef5907e9
Merge: 3e5e0fa 819548d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 22 14:42:34 2010 +0000

    * Sync.

commit 819548d92f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 22 14:41:22 2010 +0000

    * Pass `--fallback' to the remote build to ignore failing
      substituters.

commit 3e5e0faf9c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 21 11:08:09 2010 +0000

    * Okay, putting a lock on the temporary directory used by importPath()
      doesn't work because the garbage collector doesn't actually look at
      locks.  So r22253 was stupid.  Use addTempRoot() instead.  Also,
      locking the temporary directory in exportPath() was silly because it
      isn't even in the store.

commit bf87cc44b4
Merge: d1f6c0c b571891
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 21 07:55:38 2010 +0000

    * Sync with the trunk.

commit b57189174f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 14 08:34:48 2010 +0000

    * In importPath() and exportPath(), lock the temporary directory to
      prevent it from being deleted by the garbage collector.

commit f16fe2af8d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jun 10 10:29:50 2010 +0000

    * builtins.toXML: propagate the string context.  This is a regression
      from the old ATerm-based evaluator.

commit d1f6c0cbe3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 8 13:38:28 2010 +0000

    * Replacing ValidPath rows doesn't work because it causes a constraint
      violation of the Refs table.  So don't do that.

commit 07ca66cf24
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jun 4 13:56:11 2010 +0000

    * Applied a patch from David Brown to prevent `nix-store --optimise'
      from failing on rename() on BtrFS.

commit 1ab67cf437
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 2 09:43:04 2010 +0000

commit 89865da76d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 1 11:19:32 2010 +0000

    * Turn build errors during evaluation into EvalErrors.

commit a443c7573b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 1 10:01:14 2010 +0000

    * Hack to allow derivations to disable chroot builds by setting the
      attribute "__noChroot = true" (requested by Rob).

commit 8bcdd36f10
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon May 31 16:36:24 2010 +0000

    Add XML output to `nix-store'.

    * src/nix-store/Makefile.am (nix_store_SOURCES): Add `xmlgraph.cc' and
      `xmlgraph.hh'.

    * src/nix-store/help.txt (Operations): Document `--xml'.

    * src/nix-store/nix-store.cc (opQuery): Handle `--xml'.

    * src/nix-store/xmlgraph.cc, src/nix-store/xmlgraph.hh: New files.

commit da52f8bea0
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon May 31 16:36:20 2010 +0000

    Comment out dead code in `nix-store'.

    * src/nix-store/dotgraph.cc (pathLabel): Move within #if 0 section.

commit 7343e6c8ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun May 30 20:29:56 2010 +0000

    * Remove an accidentally committed debug statement.

commit b92a2e5cc2
Merge: 32539e4 93cd5a4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 20 12:36:03 2010 +0000

    * Sync with the trunk.

commit 93cd5a4a13
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 18 10:36:37 2010 +0000

    * The << operator on values should be const.

commit 32539e41d5
Merge: aa45027 b2235d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun May 16 17:16:00 2010 +0000

    * Sync with trunk.

commit b2235d81d1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat May 15 08:10:12 2010 +0000

    * Restore the __overrides feature that was lost somewhere in the
      fast-eval branch.

commit aa45027818
Merge: a0e3b84 8032f26
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 12 22:13:09 2010 +0000

    * Sync with the trunk.

commit 8032f26ca0
Merge: 4750065 bd25ac2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 12 13:59:36 2010 +0000

    * Merged the `fast-eval' branch.

commit bd25ac2260
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 12 12:15:49 2010 +0000

    * Print attributes in sorted order.

commit 81a4b4e49b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 12 11:23:44 2010 +0000

    * Implemented tryEval, the last missing primop in the fast-eval
      branch.  Also added a test for tryEval.

commit 1a8eb6e3ec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 7 15:26:33 2010 +0000

commit 83dfa89870
Merge: 01e58ad 4750065
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 7 14:46:47 2010 +0000

    * Sync with the trunk.

commit 01e58adce0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 7 12:43:57 2010 +0000

    * Store position info for inherited attributes.

commit 83d7b89660
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 7 12:33:14 2010 +0000

    * Updated addErrorContext.

commit e2d5e40f4f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 7 12:11:05 2010 +0000

    * Keep track of the source positions of attributes.

commit 84ce7ac76f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 6 16:46:48 2010 +0000

    * Store attribute positions in the AST and report duplicate attribute
      errors with position info.
    * For all positions, use the position of the first character of the
      first token, rather than the last character of the first token plus
      one.

commit 4750065ada
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed May 5 20:46:41 2010 +0000

    buildenv: Special-case Python's `site.py' and `site.pyc'.

    * corepkgs/buildenv/builder.pl.in (createLinks): Skip `site.py' and
      `site.pyc' files.

commit a0e3b84fac
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 4 12:42:58 2010 +0000

    * Revert r15436.  This was a workaround for a bug in btrfs which seems
      to have been fixed now.

commit f92c9a0ac5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 4 10:45:10 2010 +0000

    * Allow unprivileged users to do `nix-store --clear-failed-paths' and
      `nix-store --query-failed-paths'.

commit 4bab25a28d
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Mon May 3 13:13:38 2010 +0000

    buildenv: Special-case Python's `easy-install.pth' files.

    * corepkgs/buildenv/builder.pl.in (createLinks): Skip `easy-install.pth'
      files.  Comment the hack.

commit 7fa338f4ba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun May 2 21:27:50 2010 +0000

    * Don't use smart quotes where normal ASCII quotes are intended.
      Actually, don't use quotes at all.  (Reported by Howard B. Golden.)

commit c82782f9a5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 27 09:05:11 2010 +0000

commit c778ed1768
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 26 13:39:55 2010 +0000

    * Fix the copy-from-other-stores substituter.

commit ef337f7089
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 26 12:58:12 2010 +0000

commit 6199f9b93e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 26 12:56:42 2010 +0000

    * Added a command `nix-store --clear-failed-paths <PATHS>' to clear
      the "failed" status of the given store paths.  The special value `*'
      clears all failed paths.

commit 2398af13c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 26 12:43:42 2010 +0000

    * Add an command `nix-store --query-failed-paths' to list the cached
      failed paths (when using the `build-cache-failure' option).

commit d77331d32f
Author: Lluís Batlle i Rossell <viric@vicerveza.homeunix.net>
Date:   Sun Apr 25 20:52:49 2010 +0000

    Fixing a typo in the nix-store manual, that could confuse a bit too much (--delete/--gc)

commit 2be6118f4c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 23 09:09:32 2010 +0000

    * Don't need the test program anymore.

commit 0bc468f195
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 22 15:08:09 2010 +0000

    * Simplify the implementation of `with'.  This gives a 7% speedup in
      evaluating the NixOS system configuration.

commit ee0384fb96
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 22 11:34:15 2010 +0000

commit ebade9ff8b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 22 11:02:24 2010 +0000

    * Check for duplicate attribute names / function arguments.  `make
      check' now succeeds :-)
    * An attribute set such as `{ foo = { enable = true; };
      foo.port = 23; }' now parses.  It was previously rejected, but I'm
      too lazy to implement the check.  (The only reason to reject it is
      that the reverse, `{ foo.port = 23; foo = { enable = true; }; }', is
      rejected, which is kind of ugly.)

commit 2d7636529f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 22 09:54:11 2010 +0000

    * String equality tests should take the context into account.  All the
      evaluation test cases now succeed.

commit 6bbfe95e30
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 19:25:50 2010 +0000

    * Don't use an ostringstream in unparseDerivation(), because it's
      slow.  A `nix-env -qa --drv-path \*' on Nixpkgs was spending 40% of
      its time in unparseDerivation() because of this (now 11%).

commit 7148df7971
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 16:22:03 2010 +0000

    * Update the expected test output (no longer an ATerm).

commit 6f0f16497a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 16:18:27 2010 +0000

    * Fix the interpretation of ''\<character> in indented strings.

commit cae4efdca3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 16:02:12 2010 +0000

    * Because --parse-only no longer produces an ATerm, don't check the
      output.  Whether it parses at all should be enough.

commit 0777448ca6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 15:57:11 2010 +0000

    * Fixed builtins.genericClosure.

commit fe2d869e04
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 21 15:08:58 2010 +0000

    * Store user environment manifests as a Nix expression in
      $out/manifest.nix rather than as an ATerm.

      (Hm, I thought I committed this two days ago...)

commit d66ea83a76
Merge: f71ea9c aac5fcf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 20 09:20:29 2010 +0000

    * Sync with the trunk.

commit f3b8833a48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 19 14:51:58 2010 +0000

    * Drop the dependency on the ATerm library.

commit efc7a579e8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 19 13:46:58 2010 +0000

    * Don't use the ATerm library for parsing/printing .drv files.

commit 55b5ddd3ca
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 19 12:10:04 2010 +0000

    * Added parsing of manifests in ATerm format.

commit b7ff69eb7c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 19 10:47:56 2010 +0000

    * Refactoring: move the user environment stuff into its own module.

commit 5c31995bb8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 16 15:13:47 2010 +0000

    * Updated some more primops.

commit 8bb0210fea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 16 14:07:52 2010 +0000

    * _combineChannels shouldn't be an integer.

commit 8ca4a001cb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 16 14:03:26 2010 +0000

    * Improve sharing a bit.

commit 497e4ad126
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 16 13:51:01 2010 +0000

    * Remove some redundant tests.

commit 02c1dac909
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 16 13:44:02 2010 +0000

    * In an nested `with' where the inner with is a variable (`with ...;
      with someVar; ...'), the contents of the variable would be
      clobbered.  (The attributes in the outer `with' were added to the
      variable.)

commit 04c4bd3624
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 15 00:37:36 2010 +0000

    * Store lists as lists of pointers to values rather than as lists of
      values.  This improves sharing and gives another speed up.
      Evaluation of the NixOS system attribute is now almost 7 times
      faster than the old evaluator.

commit e41b5828db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 23:48:46 2010 +0000

    * Better stats.

commit d39d3c6264
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 23:25:05 2010 +0000

    * Implemented inherit.

commit 267dc693d2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 22:59:39 2010 +0000

    * Fix builtins.

commit 81de12bc8f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 15:14:23 2010 +0000

    * Refactoring: move variable uses to a separate class.

commit 110d155778
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 15:01:04 2010 +0000

    * Implemented withs.

commit 9985230c00
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 14:42:32 2010 +0000

    * After parsing, compute level/displacement pairs for each variable
      use site, allowing environments to be stores as vectors of values
      rather than maps.  This should speed up evaluation and reduce the
      number of allocations.

commit 816dd3f061
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 12:49:05 2010 +0000

    * Remove more obsolete code.

commit 011b5da0f4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 09:39:06 2010 +0000

    * Get nix-env to compile again.

commit 85d13c8f93
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 14 08:37:08 2010 +0000

    * Change the semantics of "with" so that inner "withs" take
      precedence, i.e. `with {x=1;}; with {x=2;}; x' evaluates to 2'.
      This has a simpler implementation and seems more natural.  There
      doesn't seem to be any code in Nixpkgs or NixOS that relies on the
      old behaviour.

commit 816f9c0f6f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 13 14:34:11 2010 +0000

    * Use std::tr1::unordered_set instead of std::set for the symbol
      table.  This gives a 10% speed increase on `nix-instantiate
      /etc/nixos/nixos -A system --readonly-mode'.

commit 7d47498b5e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 13 13:42:25 2010 +0000

    * Evaluate lets directly (i.e. without desugaring to `rec { attrs...;
      <let-body> = e; }.<let-body>).  This prevents the unnecessary
      allocation of an attribute set.

commit ac1e8f40d4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 13 12:25:42 2010 +0000

    * Use a symbol table to represent identifiers and attribute names
      efficiently.  The symbol table ensures that there is only one copy
      of each symbol, thus allowing symbols to be compared efficiently
      using a pointer equality test.

commit 10e8b1fd15
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 23:33:23 2010 +0000

    * Finished the ATerm-less parser.

commit 0d272fca79
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 23:31:47 2010 +0000

    * Remove some obsolete functions.

commit d4f0b0fc6c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 22:03:27 2010 +0000

    * Indented strings.

commit a60317f20f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 21:21:24 2010 +0000

    * More missing constructs.

commit 4d6ad5be17
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 18:30:11 2010 +0000

    * Don't use ATerms for the abstract syntax trees anymore.  Not
      finished yet.

commit ed711f73bc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 10:38:18 2010 +0000

    * Don't use ATerms to represent integers in the lexer.

commit db90b88e65
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 09:50:20 2010 +0000

    * Hack to support builderDefs expressions.

commit 4e49002576
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 09:45:00 2010 +0000

    * Doh.

commit c3f228f296
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 12 09:14:27 2010 +0000

commit aac5fcfbb5
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Fri Apr 9 21:30:55 2010 +0000

    Re-add `drvPath' and `outPath' attributes to <derivation> XML nodes.

    This fixes a regression introduced in r20882 ("Add source location
    information to the XML output.").

    * src/libexpr/expr-to-xml.cc (nix::printTermAsXML): Dereference the
      attribute RHS from "drvPath" and "outPath".

commit f3dc7ab877
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 9 12:00:49 2010 +0000

    * Keep more statistics about stack space usage.
    * Reduce stack space usage.

commit b7b3dd55f9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 8 11:41:19 2010 +0000

    * Remove a lot of dead code.

commit 7e048eddf5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 8 11:25:14 2010 +0000

    * Fix blackholing.  If evaluation fails due to an assertion failure,
      then the blackhole has to be removed to ensure that repeated
      evaluation of the same value gives an assertion failure again rather
      than an "infinite recursion" error.

commit af2a372bb0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 7 15:47:06 2010 +0000

    * Update autoCallFunction() and findAlongAttrPath().

commit 9a64454faa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 7 13:59:45 2010 +0000

    * expr-to-xml -> value-to-xml.

commit fc92244ba8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 7 13:55:46 2010 +0000

    * Implemented the primops necessary for generating the NixOS manual.

commit a353aef0b1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 6 14:15:29 2010 +0000

    * In eval(), don't use the target value `v' as a temporary.
      Overwriting `v' breaks when the expression evaluation to an
      assertion failure or throw.

commit a5ece7d016
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 1 16:59:07 2010 +0000

    * Removed the `~' operator.

commit c172274e17
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 1 14:35:03 2010 +0000

    * Quick hack to make coerceToString work more or less correctly on
      nested lists.  `nix-instantiate' can now evaluate the NixOS system
      derivation attribute correctly (in 2.1s on my laptop vs. 6.2s for
      the trunk).

commit 7b851915bf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 1 12:04:57 2010 +0000

    * Improve sharing.

commit 95cc417d76
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 1 10:55:36 2010 +0000

    * Functions are incomparable.

commit 71f026292b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 1 09:55:57 2010 +0000

    * Make `derivation' lazy again for performance.  It also turns out
      that there are some places in Nixpkgs (php_configurable /
      composableDerivation, it seems) that call `derivation' with
      incorrect arguments (namely, the `name' attribute missing) but get
      away with it because of laziness.

commit dc31305b38
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 20:09:20 2010 +0000

    * Fixed the trace primop and path comparison.
    * Removed exprToString and stringToExpr because there is no ATerm
      representation to work on anymore (and exposing the internals of the
      evaluator like this is not a good idea anyway).

commit 979f163615
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 19:52:29 2010 +0000

    * Handle string contexts.  `nix-instantiate' can now correctly compute
      the `firefoxWrapper' attribute in Nixpkgs, and it's about 3 times
      faster than the trunk :-)

commit d8cd3115d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 19:12:08 2010 +0000

    * Get nix-env to compile.

commit 55e207b2dc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 16:14:32 2010 +0000

    * Cache parse trees to prevent repeated parsing of imported Nix
      expressions.

commit 3d94be61ea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 15:38:03 2010 +0000

    * Implemented derivations.

commit 5187678913
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 15:14:23 2010 +0000

commit f061086a93
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 13:35:29 2010 +0000

    * Fix the broken test for listToAttrs.

commit 09381cccff
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Mar 31 12:38:31 2010 +0000

    Make source location info in the XML output optional.

    * src/libexpr/expr-to-xml.cc (nix::showAttrs): Add `location'
      parameter.  Provide location XML attributes when it's true.  Update
      callers.
      (nix::printTermAsXML): Likewise.

    * src/libexpr/expr-to-xml.hh (nix::printTermAsXML): Update prototype;
      have `location' default to `false'.

    * src/nix-instantiate/nix-instantiate.cc (printResult, processExpr): Add
      `location' parameter; update callers.
      (run): Add support for `--no-location'.

    * src/nix-instantiate/help.txt: Update accordingly.

    * tests/lang.sh: Invoke `nix-instantiate' with `--no-location' for the
      XML tests.

    * tests/lang/eval-okay-toxml.exp, tests/lang/eval-okay-to-xml.nix: New
      files.

commit 13c2adc897
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 11:05:39 2010 +0000

    * Implemented `rec { inherit ...; }'.

commit 4c53ca2692
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 31 09:54:12 2010 +0000

    * Compare nulls.

commit 471419d1fa
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Mar 31 08:29:05 2010 +0000

    Add source location information to the XML output.

    * src/libexpr/expr-to-xml.cc (nix::showAttrs): Dereference the attribute
      RHS.  Add "path", "line", and "column" XML attributes to the node when
      source location information is available.
      (nix::printTermAsXML): Likewise for functions.

commit eb07a4f1ee
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Mar 31 08:29:01 2010 +0000

    Escape `>' signs in the XML output.

    * src/libutil/xml-writer.cc (nix::XMLWriter::writeAttrs): Escape `>'.

commit 7f19e03c65
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 22:39:48 2010 +0000

    * More primops.

commit 47df476daa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 18:05:54 2010 +0000

    * More operators / primops.

commit c9170be2bd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 15:18:20 2010 +0000

    * More primops.

commit c3aa615a5f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 14:39:27 2010 +0000

    * More primops.

commit 5b72d8a749
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 13:47:59 2010 +0000

    * Implemented `map'.

commit d78a05ab40
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 30 09:22:33 2010 +0000

    * Make `import' work.

commit 31428c3a06
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 29 14:37:56 2010 +0000

    * Started integrating the new evaluator.

commit 52090d2418
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 29 10:13:51 2010 +0000

commit e3f32ac5af
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 29 09:43:55 2010 +0000

commit 807a67bc74
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 29 09:43:39 2010 +0000

commit 392811eb8f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 28 18:27:07 2010 +0000

    * Strings.

commit d96cdcea6b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 28 16:57:16 2010 +0000

commit 3d2b835f30
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 28 16:37:39 2010 +0000

    * Implemented multi-argument primops.

commit 45d822f29c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 26 15:45:53 2010 +0000

    * Primops (not yet finished).

commit cad8726b2c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 26 13:27:26 2010 +0000

    * Implemented the `==' and `!=' operators.  These now use a deep
      equality test, so they also work for (finite) attribute sets and
      lists.

commit 8da118e4d0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 16:35:24 2010 +0000

    * Measure stack usage.

commit c2ba4313fb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 15:38:37 2010 +0000

    * Implemented lists.

commit 25eedf085d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 14:51:04 2010 +0000

    * Quick and dirty implementation of `with'.  `with e1; e2' is
      basically desugared to `let <with> = e1; e2', and `lookupVar' looks
      in each <with> in the environment chain for an attribute with the
      specified name.

commit 3c9f8fc9b6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 13:10:04 2010 +0000

    * Don't convert variable names to strings.

commit f450384ded
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 12:51:14 2010 +0000

    * Implement blackholing.

commit ef8bd919fc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 12:45:23 2010 +0000

    * Implement `...' and default function arguments.

commit 8a10360c91
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 25 12:19:41 2010 +0000

    * Simplify @-patterns: only `{attrs}@name' or `name@{attrs}' are now
      allowed.  So `name1@name2', `{attrs1}@{attrs2}' and so on are now no
      longer legal.  This is no big loss because they were not useful
      anyway.

      This also changes the output of builtins.toXML for @-patterns
      slightly.

commit 7482349fe8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 24 23:40:00 2010 +0000

    * Implemented attribute set pattern matches.

commit 0fd3648d34
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 24 12:41:08 2010 +0000

    * Store values in environments.

commit b70bd8fe56
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 24 12:11:38 2010 +0000

    * Reduce the number of value allocations in eval() by moving
      responsibility for allocation of the result to the caller.

commit d31c59eb17
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 24 11:06:05 2010 +0000

    * Plain lambdas.

commit e8f7978274
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 19:19:52 2010 +0000

commit 0910ae9568
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 17:30:50 2010 +0000

    * Start of an evaluator that uses call-by-need (with thunk updating)
      instead of (memoised) call-by-name.

commit 90039e0863
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 15:09:29 2010 +0000

    * Branch for experimenting with faster / less memory-hungry
      Nix expression evaluation.

commit 71be50cc25
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 14:51:32 2010 +0000

    * Doh.

commit 3bfd3a4e95
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 14:26:27 2010 +0000

    * Test "with as; with bs;" since nobody knows what its semantics is.

commit f71ea9c911
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 23 10:38:59 2010 +0000

    * Use SQLite 3.6.23.

commit 141294ff38
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 19 11:36:34 2010 +0000

    * Clean up error messages in killUser().

commit 74299c1cfb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 17 12:12:45 2010 +0000

    * Bump version number.

commit c4cfb392d3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 17 10:08:34 2010 +0000

commit 8e3d98eb41
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 16 13:12:18 2010 +0000

    * Release notes for Nix 0.15.

commit f0c473c5f7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 16 13:01:52 2010 +0000

    * Fix building on Cygwin (http://hydra.nixos.org/build/325071).

commit fe1b8781ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 16 12:58:20 2010 +0000

    * Fix a broken link (reported by Peter Koppstein).

commit 741b7577c1
Author: Nicolas Pierron <nicolas.b.pierron@gmail.com>
Date:   Sun Mar 14 11:58:07 2010 +0000

    Merge r20344 & r20346.

commit 2fb0df83e9
Author: Lluís Batlle i Rossell <viric@vicerveza.homeunix.net>
Date:   Thu Mar 11 21:22:52 2010 +0000

    Uh. somehow a Makefile tab got in as spaces. Fixing.

commit 13cce8ec45
Author: Lluís Batlle i Rossell <viric@vicerveza.homeunix.net>
Date:   Thu Mar 11 20:56:25 2010 +0000

    Making 'bin2c' to be built with the compiler for the local system.
    I copied the configure.ac code about CC_FOR_BUILD from libX11.

commit e020d80e4e
Merge: 070057c 05e1504
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 11 15:45:05 2010 +0000

    * Sync with the trunk.

commit 05e15049a5
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Mar 11 14:47:04 2010 +0000

    Show the build user's group in /etc/group in chroots.

    * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Create
      /etc/group showing the build user's group.

commit 070057c1b9
Merge: 03afc34 c752c9f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 11 10:52:52 2010 +0000

    * Sync with the trunk.

commit c752c9f41a
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Mar 11 10:33:04 2010 +0000

    Fix thinko in r20547.

    * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Fix the GID
      of the build user in /etc/passwd.

commit 2e8eaca573
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Mar 11 10:21:23 2010 +0000

    Clear supplementary groups of `nixbld' in /etc/passwd in chroots.

    * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Don't
      display any supplementary groups for `nixbld' in /etc/passwd.

commit 03afc34805
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 10 13:07:37 2010 +0000

    * Simplify.

commit 1a65142ec4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 10 12:46:25 2010 +0000

    * Remove a debug statement.

commit 4c356acd04
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 9 14:32:03 2010 +0000

    * In `nix-store --export', abort if the contents of a path has
      changed.  This prevents corrupt paths from spreading to other
      machines.  Note that checking the hash is cheap because we're
      hashing anyway (because of the --sign feature).

commit 44f6e6de77
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 8 21:31:42 2010 +0000

    * Set `gc-keep-outputs' or `gc-keep-derivations' to false with
      `--delete --ignore-liveness'.

commit 2e4ef03aa3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 8 10:35:45 2010 +0000

    * Increase the sqlite timeout.

commit 05fbf61f0e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 5 18:26:47 2010 +0000

    * nix-prefetch-url depends on sed (see
      http://hydra.nixos.org/build/311170).

commit 04791840f4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 5 12:54:58 2010 +0000

    * Emit warning='1' or error='1' attributes for lines marked as
      warnings or errors with \e[w or \e[e.

commit bc6f7fc139
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 4 13:03:26 2010 +0000

    * Remove some unused functions.

commit fb6e223ddc
Merge: 5ff87c9 84a4dd5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 4 12:15:00 2010 +0000

    * Synced with the trunk.

commit 5ff87c982e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 3 16:17:09 2010 +0000

commit e14e2399ed
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 20:23:42 2010 +0000

    * Prevent a potential memory corruption problem if an ATerm garbage
      collection happens during fixAttrs().

commit 158aa89317
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 20:22:46 2010 +0000

    * Ensure that `make install' works without a prior `make'.

commit 56af8e86e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 20:09:12 2010 +0000

    * Protect the `true', `false' and `__overrides' constants.  Without
      an ATprotect call, these could be garbage collected, leading to
      weird crashes or wrong results.

commit 3f9e647ae8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 19:04:17 2010 +0000

    * checkInterrupt() shouldn't be called from a destructor.

commit d8c5745c41
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 17:12:47 2010 +0000

    * Support static builds.

commit e07d7284a2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 16:55:07 2010 +0000

    * Fix DESTDIR builds.

commit 5414b3b2db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 16:40:40 2010 +0000

    * Remove the --enable-static-nix flag.

commit 594eaddd11
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 2 15:58:13 2010 +0000

    * When using the included sqlite/aterm libraries, build with
      --enable-shared.
    * In libutil/libstore/libexpr etc., link against sqlite and aterm.
    * Some more header file hygiene.

commit 966ffb29a7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 26 13:10:57 2010 +0000

    * Update the Valgrind suppressions for ATerm 2.5.

commit 24035b98b1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 26 12:05:01 2010 +0000

    * Implement RemoteStore::queryValidPaths().

commit e42401ee7b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 25 15:52:22 2010 +0000

    * Implement RemoteStore::queryDerivationOutputs().

commit af565c348a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 16:44:43 2010 +0000

    * Support read-only access to the database.

commit e33f67ff0b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 16:30:20 2010 +0000

    * Refactor the upgrade / database initialisation logic a bit.

commit 84a4dd5ff0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 15:46:06 2010 +0000

    * Don't use fdatasync since it doesn't work on Snow Leopard.
    * Don't refer to config.h in util.hh, because config.h is not
      installed (http://hydra.nixos.org/build/303053).

commit cfe742cfc5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 15:07:23 2010 +0000

    * A function to query just the database id of a valid path.

commit 6baa2a2f5e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 14:39:52 2010 +0000

commit 9fd85c94de
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 14:22:34 2010 +0000

    * Use `truncate' journal mode, which should be a bit faster.

commit fefd467539
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 13:24:27 2010 +0000

    * `helpText' is now zero-terminated.

commit 21b134b4e5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 13:13:39 2010 +0000

commit a3c63d0d6c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 13:12:57 2010 +0000

    * Disable fsync() in SQLite if the fsync-metadata option is set to
      false.
    * Change the default for `fsync-metadata' to true.
    * Disable `fsync-metadata' in `make check'.

commit 90b6352d0a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 12:48:00 2010 +0000

    * Do registerValidPaths() in one transaction, which is much faster.
      E.g. it cuts the runtime of the referrers test from 50s to 23s.

commit fae0427324
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 12:25:48 2010 +0000

    * ADDITIONAL_NETWORK_LIBS -> LIBS.

commit fa6a4fcb11
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 12:18:48 2010 +0000

    * Add ${sqlite_lib} everywhere.  Just adding it in `libstore' doesn't
      work on x86_64 when sqlite is compiled statically.

commit 5954eadf67
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 12:16:50 2010 +0000

    * Remove the fdatasync check since it's no longer needed.

commit bb82310dba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 11:06:17 2010 +0000

    * Set the path to sqlite3 properly.

commit 69d9df7fe6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 11:04:03 2010 +0000

    * Don't fork so much.

commit 462bd50aef
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 10:57:57 2010 +0000

    * Use normal (rather than full) synchronous mode, which I gather from
      the description at http://www.sqlite.org/atomiccommit.html should be
      safe enough.

commit 8520de4720
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 24 10:48:57 2010 +0000

    * Include the sqlite tarball in the Nix tarball.

commit dc6d1ec67e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 23:24:49 2010 +0000

commit 63b09c5e41
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 22:31:38 2010 +0000

commit 0efc986ba1
Merge: b4e6d98 7db2831
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 22:14:33 2010 +0000

    * Sync with the trunk.

commit b4e6d98fc3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 22:12:46 2010 +0000

    * configure: flag --with-sqlite.

commit 7db2831d3a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 16:17:21 2010 +0000

    * Use ATerm 2.5.

commit 5ccb6f64f4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 23 12:26:35 2010 +0000

    * Run ATerm's `make check'.

commit 2b20318b0e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 22 14:24:37 2010 +0000

commit 9cda616949
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 22 14:18:55 2010 +0000

    * The database needs a trigger to get rid of self-references to
      prevent a foreign key constraint violation on the Refs table when
      deleting a path.

commit c4d388add4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 22 12:44:36 2010 +0000

    * Get derivation outputs from the database instead of the .drv file,
      which requires more I/O.

commit 103cfee056
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 22 11:44:17 2010 +0000

    * Revert r19650 (implement gc-keep-outputs by looking for derivations
      with the same name as the output) and instead use the
      DerivationOutputs table in the database, which is the correct way to
      to do things.

commit 299ff64812
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 22 11:15:50 2010 +0000

    * Put the derivation outputs in the database.  This is useful for the
      garbage collector.

commit 1930570ad9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 19 17:15:22 2010 +0000

    * Foreign key support in SQLite is not a persistent setting, so enable
      it at startup.
    * Implement negative caching.  Now `make check' passes.

commit 9c9a88e9e2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 19 16:43:25 2010 +0000

    * Implement more stuff.

commit 762cee72cc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 19 16:04:51 2010 +0000

    * Implement registerValidPath().

commit 268f9aaf28
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 16:51:27 2010 +0000

    * Implemented queryValidPaths() and verifyStore().

commit 836e5b6f57
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 16:21:59 2010 +0000

    * Implemented queryReferrers().

commit 77cb9e3fb1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 15:52:57 2010 +0000

    * Implement queryPathInfo().

commit 885e22b16e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 15:11:08 2010 +0000

    * Implement isValidPath().

commit cfb09e0fad
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 14:40:07 2010 +0000

    * Automatically abort transactions if they go out of scope without
      committing.

commit e0305bb7a8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 14:30:42 2010 +0000

    * Some wrapper objects to ensure that SQLite objects are properly
      destroyed.

commit a053d2d8e5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 13:48:18 2010 +0000

    * Add the deriver to the ValidPaths table.  In principle we could now
      store all the derivers of a path efficiently.  But that opens a big
      can of worms with respect to garbage collector semantics.

commit dbddac0fe9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 13:40:46 2010 +0000

    * Assign an integer id to every row in the ValidPaths table in order
      to make the Refs table more space-efficient.  For instance, this
      reduces the size of the database on my laptop from 93 MiB to 18
      MiB.  (It was 72 MiB with the old schema on an ext3 disk with a 1
      KiB block size.)

commit c1a07f9445
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 13:16:59 2010 +0000

    * Convert the Nix database to SQLite.

commit eaaa13ce47
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 18 13:14:51 2010 +0000

    * Experimental branch for using SQLite to store the Nix database.

commit 68e55cd9da
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 16 00:10:39 2010 +0000

    * Since Hydra now escapes `+', `=' and `?' to %NN in URIs,
      nix-prefetch-url should unescape them, because `%' is not a valid
      character in store path names.

commit 3b3e1025c3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 12 10:50:30 2010 +0000

    * Typo.  Reported by Peter Koppstein.

commit 20186a4079
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Feb 10 15:55:50 2010 +0000

    Don't rely on `PATH_MAX' on GNU.

commit d0bf4adb1f
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Wed Feb 10 15:55:46 2010 +0000

    Add `.gitignore'.

commit e08dbff9a8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 5 10:17:13 2010 +0000

    * Fix a broken link (reported by Bjorn Buckwalter).

commit e1e91a3731
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 15:46:04 2010 +0000

    * Bump.

commit 817f4f7908
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 14:43:43 2010 +0000

    * Grmbl. Timing-sensitive tests are evil.

commit f36b7e7579
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 14:00:47 2010 +0000

commit 719cebcac2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 09:38:09 2010 +0000

    * "Fix" incorrect help message.

commit 443673620d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 02:38:40 2010 +0000

    * Don't use ssh's -f flag since it leads to lots of lingering ssh
      processes.

commit 7ec5a65925
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 02:18:29 2010 +0000

    * Doh!  The scope of $slotLock should extend to the end of the script,
      because otherwise the lock will be released at the end of the while
      loop.

commit c9b2d80bcd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 02:05:34 2010 +0000

    * Typo.

commit 3cfe65e516
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 02:05:22 2010 +0000

    * Doh!  Calling `system' in an END block causes the exit status in $?
      to be changed to 0.

commit e51a276907
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 01:39:23 2010 +0000

    * Remove the `cat' calls when not using --gzip.

commit 408913bbaf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 4 00:12:57 2010 +0000

    * Revert r19796 for now.

commit 4e17be7981
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 21:38:41 2010 +0000

    * Revert r19797, and use a simpler solution: just don't monitor build
      hooks for silence.  It's unnecessary because the remote nix-store
      command is already monitoring the real build.

commit f859a8d3c3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 21:22:57 2010 +0000

    * While waiting for a lock, print a sign of life every 5 minutes.
      This prevents remote builders from being killed by the
      `max-silent-time' inactivity monitor while they are waiting for a
      long garbage collection to finish.  This happens fairly often in the
      Hydra build farm.

commit c45de33c67
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 21:13:37 2010 +0000

    * Respect @sysconfdir@.

commit d0c32dc135
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 20:35:37 2010 +0000

    * In the build hook, if connecting to a machine fails, try the other
      machines of the right type (if available).  This makes the build
      farm more robust to failures.

commit f56a039775
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 20:12:18 2010 +0000

    * Use SSH connection sharing in the remote build script.
    * Removed the Cygwin password hack since the problem is apparently
      fixed in Visual Studio.

commit bc1e478db1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 15:34:52 2010 +0000

    * nix-copy-closure: start only one SSH connection to the server, or
      recycle an already existing connection (using  OpenSSH's connection
      sharing feature).

commit 4d8a85b8f5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 3 11:00:35 2010 +0000

    * Updated the release notes.

commit 3ce5f07793
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 2 17:01:16 2010 +0000

    * Ugly hack to make `nix-channel' work on Cygwin.

commit e839802720
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 2 15:29:18 2010 +0000

    * Don't do a chdir to $tmpDir.  It's not necessary, and Windows doesn't
      support deleting the current directory.

commit 4bbbe25802
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 2 15:28:36 2010 +0000

    * Remove most Cygwin-specific code.  Cygwin 1.7 implements advisory
      POSIX locks, and simulates Unix-style file deletion semantics
      sufficiently.  Note that this means that Nix won't work on Cygwin
      1.5 anymore.

commit 2723d9b56e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 2 11:57:49 2010 +0000

    * If fdatasync() isn't available, use fsync().

commit 07ffdc2862
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jan 29 12:22:58 2010 +0000

    * Added an option "fsync-metadata" to fsync() changes to
      /nix/var/nix/db.
    * Removed the function writeStringToFile since it does (almost) the
      same thing as writeFile.

commit ad529fb89f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jan 29 11:53:58 2010 +0000

    * Don't consider a store path valid if its info file exists but is
      zero bytes long.  That makes Nix more robust in case of crashes
      (especially on ext4).

commit fdcaf37361
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 25 17:18:44 2010 +0000

    * Made `nix-store -qR --include-outputs' much faster if there are
      multiple paths specified on the command line (from O(n * m) to O(n +
      m), where n is the number of arguments and m is the size of the
      closure).

commit 50e34891f0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 25 16:14:45 2010 +0000

    * Disable gzip compression in build-remote.pl because it puts too much
      load on the Hydra build farm (where it's unnecessary anyway because
      it has a fast connection to the build machines).  In any case,
      compression can be enabled by using the `-C' option to ssh.

commit 5388944e8d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 25 16:04:32 2010 +0000

    * Make the garbage collector do the right thing when `gc-keep-outputs'
      is enabled by not depending on the deriver.

commit f0c0277970
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 12 12:22:38 2010 +0000

    * On startup, set the default SIGCHLD handler.  This is so that Nix
      works correctly in weird environments where the SIGCHLD handler is
      set to "ignore".

commit ef92a14bfe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 17 14:12:44 2009 +0000

    * Include config.h before the C library headers, because it defines
      _FILE_OFFSET_BITS=64.  Without it, functions like stat() fail on
      large file sizes.  This happened with a Nix store on squashfs:

      $ nix-store --dump /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds > /dev/null
      error: getting attributes of path `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds': Value too large for defined data type

      $ stat /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds
      File: `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds'
      Size: 0               Blocks: 36028797018963968 IO Block: 1024   regular empty file

      (This is a bug in squashfs or mksquashfs, but it shouldn't cause Nix
      to fail.)

commit 945d8218fb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 16 15:29:50 2009 +0000

    * Build correctly against newer ATerm releases.  Fixes "error: 'union'
      tag used in naming 'struct _ATerm'".

commit d8a5dc02fc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 10 13:14:22 2009 +0000

    * Build on Fedora 12.

commit 3a78af1e24
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 9 21:02:24 2009 +0000

    * Release notes.

commit 7ca9972636
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 9 19:36:54 2009 +0000

    * When doing a nix-pull, remove old manifests downloaded from the same
      URL.  This prevents lots of old cruft accumulating in
      /nix/var/nix/manifests.

commit c4c84d1edb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 9 18:08:28 2009 +0000

    * nix-build: be less verbose.

commit bcd6cdf0d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 9 17:45:22 2009 +0000

    * Give a better error message when trying to build something and
      readOnlyMode is set.

commit 13618b191e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 24 13:28:46 2009 +0000

    * Grrr.

commit aa5a768720
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 24 12:56:26 2009 +0000

    * GCC 4.4 is stricter about the EOF macro
      (http://hydra.nixos.org/build/156340).

commit 9b8fda796b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 24 12:26:25 2009 +0000

    * Templatise getIntArg / string2Int.

commit 8022015552
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 24 10:51:52 2009 +0000

    * In the garbage collector, don't count files with a link count > 1 in
      the "bytes/blocks freed" statistics.

commit f9e766db98
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 24 09:53:18 2009 +0000

    * Randomise the order in which we delete entries to make the collector
      less biased towards deleting paths that come alphabetically first
      (e.g. /nix/store/000...).  This matters when using --max-freed etc.

commit ca50c83fbb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 23 21:21:29 2009 +0000

commit 3d55f1eb57
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 23 18:16:25 2009 +0000

    * A command `nix-store --query --roots <paths>' to find the garbage
      collector roots that point (directly or indirectly) to the given
      paths.

commit ae6bf87273
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 23 17:23:12 2009 +0000

    * `nix-store --gc --print-roots': also print the path of the actual
      root symlink, not just its target.  E.g.:

      /nix/var/nix/profiles/system-99-link -> /nix/store/76kwf88657nq7wgk1hx3l1z5q91zb9wd-system

commit c364d5d1e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 23 16:34:24 2009 +0000

    * Made the garbage collector a lot faster.  It no longer computes the
      complete set of live and dead paths before starting the actual
      deletion, but determines liveness on demand.  I.e. for any path in
      the store, it first tries to delete all the referrers, and then the
      path itself.  This means that the collector can start deleting paths
      almost immediately.

commit 4f7e5f5810
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 23 12:48:54 2009 +0000

    * Don't create /nix/var/nix/gcroots/{tmp,channels}, since they don't
      seem to be used anymore.

commit 8824d60fe5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 20 17:12:38 2009 +0000

    * Remove the --use-atime / --max-atime garbage collector flags.  Many
      (Linux) machines no longer maintain the atime because it's too
      expensive, and on the machines where --use-atime is useful (like the
      buildfarm), reading the atimes on the entire Nix store takes way too
      much time to make it practical.

commit 997db91e07
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 17 16:22:39 2009 +0000

    * Don't pass -K.  It should really inherit the setting of the calling
      Nix though.

commit 3392d32e8b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 13 10:08:31 2009 +0000

    * In nix-pull/nix-channel, create the manifests directory if it
      doesn't exist.  The Debian packages don't include the manifests
      directory, so nix-channel would silently skip doing a nix-pull,
      resulting in everything being built from source.  Thanks to Juan
      Pedro Bolívar Puente.

commit 327a232c85
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 6 01:15:44 2009 +0000

    * Remove support for old (before Nix 0.12pre12020) databases.

commit c60d796f04
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 5 22:23:38 2009 +0000

    * Version bump.

commit e8bad77c7c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 5 15:20:19 2009 +0000

commit 7680904839
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 5 14:53:01 2009 +0000

    * Build on Karmic.

commit 58f3338bfa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 5 14:40:42 2009 +0000

    * The Nix .deb package depends on curl.

commit 268d90a03e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 5 09:07:43 2009 +0000

    * Various updates.

commit 1ff8758f76
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 4 16:52:35 2009 +0000

    * Manual updates.

commit 8520542071
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 22 08:28:33 2009 +0000

    * When building in a chroot, make a copy of a file if hard-linking
      fails.  This is likely to happen after a `nix-store --optimise',
      because some files may have 32000 links (NIX-111).

commit 6b9f6b0222
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 22 08:12:38 2009 +0000

    * Remove a prototype for a function that no longer exists.

commit deb342fb08
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 22 08:10:12 2009 +0000

    * builtins.trace: in the common case that the value is a string, then
      show the string, not the ATerm, so we get `trace: bla' instead of
      `trace: Str("bla",[])'.

commit 437077c39d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 21 15:05:30 2009 +0000

    * Added a primop unsafeDiscardOutputDependency needed by Disnix to
      pass derivation paths to a builder without actually building them.

commit 6f7d7bc1de
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 13 09:30:17 2009 +0000

    * Give a useful error message when an evaluation error occurs while
      trying to upgrade a package.

commit 53a4981fa2
Author: Sander van der Burg <s.vanderburg@tudelft.nl>
Date:   Thu Oct 8 14:50:37 2009 +0000

    Added optional parameter which adds -lnsl -lsocket to make the Nix package manager work on OpenSolaris

commit 18f0ff003d
Author: Peter Simons <simons@cryp.to>
Date:   Tue Oct 6 09:14:06 2009 +0000

    configure.ac: use AC_SYS_LARGEFILE to determine how to enable 64-bit file size support

    Defining -D_FILE_OFFSET_BITS=64 works on most platforms, but not on all (i.e.
    Solaris). Also, the Autoconf macro offers the user a switch to disable the
    functionality in case of problems.

commit 96f1517831
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 30 11:32:04 2009 +0000

    * Support platforms that don't have O_ASYNC (e.g. OpenSolaris
      apparently).

commit 1a8f8fd86f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 30 09:54:29 2009 +0000

    * OpenSolaris compatibility.

commit 0f79ad47c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Sep 25 12:36:03 2009 +0000

commit c7057fc1f2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 24 07:39:55 2009 +0000

    * And some more.

commit 193f59e077
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 24 07:21:29 2009 +0000

    * Fix a build failure on Fedora 11.  rename() needs <stdio.h>.

commit 0ae2be5692
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 24 07:05:06 2009 +0000

commit 1332dd1ed3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 23 19:19:26 2009 +0000

    * tryEval shouldn't catch all exceptions of type Error, since not all
      of them leave the evaluator in a continuable state.  Also, it should
      be less chatty.

commit 63a17d4bd5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 23 18:52:18 2009 +0000

    * Don't build against BDB on Cygwin, it's been broken for unknown
      reasons for a while (e.g. http://hydra.nixos.org/build/79164).

commit 676e07902e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 23 18:04:55 2009 +0000

    * Darwin hack.

commit 64e89980e8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 23 17:05:51 2009 +0000

    * Create some state directories automatically as a convenience.

commit 48b58617e9
Author: Rob Vermaas <rob.vermaas@gmail.com>
Date:   Wed Sep 23 12:57:15 2009 +0000

     * include wait.h for WEXITSTATUS

commit 51ad64cc07
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Sep 18 11:45:56 2009 +0000

    * Use xmllint (>= 2.7.4) for RelaxNG validation instead of Jing.

commit df05a759e4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Sep 18 11:01:30 2009 +0000

    * In "make init-state", ignore errors creating /nix/store.  Hack to
      get the Debian VM builds to work (where /nix/store is a mount point
      containing the store of the host).

commit d3de71efc9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 17 17:44:13 2009 +0000

commit e1df4ef73c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 17 17:02:14 2009 +0000

commit 86408b3f47
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 17 15:48:17 2009 +0000

    * build-remote.pl: Pick machines in a round-robin order, rather than
      giving jobs to the first machine until it hits its job limit, then
      the second machine and so on.  This should improve utilisation of
      the Hydra build farm a lot.  Also take an optional speed factor
      into account to cause fast machines to be preferred over slower
      machines with a similar load.

commit 57e0d73c77
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 17 13:51:04 2009 +0000

    * build-remote.pl: allow the system type to be a comma-separated list
      of system types.  Don't treat the x86_64-linux system type
      specially.

commit 0dbd4638e0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 15 13:01:46 2009 +0000

    * Two primops: builtins.intersectAttrs and builtins.functionArgs.
      intersectAttrs returns the (right-biased) intersection between two
      attribute sets, e.g. every attribute from the second set that also
      exists in the first.  functionArgs returns the set of attributes
      expected by a function.

      The main goal of these is to allow the elimination of most of
      all-packages.nix.  Most package instantiations in all-packages.nix
      have this form:

        foo = import ./foo.nix {
          inherit a b c;
        };

      With intersectAttrs and functionArgs, this can be written as:

        foo = callPackage (import ./foo.nix) { };

      where

       callPackage = f: args:
         f ((builtins.intersectAttrs (builtins.functionArgs f) pkgs) // args);

      I.e., foo.nix is called with all attributes from "pkgs" that it
      actually needs (e.g., pkgs.a, pkgs.b and pkgs.c).  (callPackage can
      do any other generic package-level stuff we might want, such as
      applying makeOverridable.)  Of course, the automatically supplied
      arguments can be overriden if needed, e.g.

        foo = callPackage (import ./foo.nix) {
          c = c_version_2;
        };

      but for the vast majority of packages, this won't be needed.

      The advantages are to reduce the amount of typing needed to add a
      dependency (from three sites to two), and to reduce the number of
      trivial commits to all-packages.nix.  For the former, there have
      been two previous attempts:

        - Use "args: with args;" in the package's function definition.
          This however obscures the actual expected arguments of a
          function, which is very bad.

        - Use "{ arg1, arg2, ... }:" in the package's function definition
          (i.e. use the ellipis "..." to allow arbitrary additional
          arguments), and then call the function with all of "pkgs" as an
          argument.  But this inhibits error detection if you call it with
          an misspelled (or obsolete) argument.

commit 3bca8931e8
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Tue Aug 25 16:06:46 2009 +0000

    Adding tryEval builtin. It allows to catch presence of errors in an expression.

commit 5e9a4e5101
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 3 13:32:13 2009 +0000

commit 9b46d1ae6f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 3 12:24:20 2009 +0000

commit 20b6f94b65
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 15 09:10:38 2009 +0000

    * nix-build: pass the --show-trace flag.

commit d413612029
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jul 14 14:58:12 2009 +0000

    * Remove the redundant <sections> around refentries.

commit 1f169f43b3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 10 13:42:12 2009 +0000

    * Leave out the collaborators / revision history page.

commit 5e2e2f10ef
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 10 11:48:49 2009 +0000

commit c6890d6b5c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jul 2 08:52:12 2009 +0000

    * Replace newlines in table output with spaces.

commit 749dd97a54
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 30 15:53:39 2009 +0000

    * Support integers and lists of strings in meta fields.  This is
      useful for fields like meta.maintainers, meta.priority (which can be
      a proper integer now) and even meta.license (if there are multiple
      licenses).

commit f2c3fc5191
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 30 13:28:29 2009 +0000

    * Don't show trace information by default (`--show-trace' to enable).
      NixOS evaluation errors in particular look intimidating and
      generally aren't very useful.  Ideally the builtins.throw messages
      should be self-contained.

commit a2fc3a53ba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jun 18 10:04:14 2009 +0000

    * Highlight URLs containing "=" properly.

commit d53603c928
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jun 18 09:56:50 2009 +0000

    * Attributes names in attrsets can contain dots now.

commit 14bc3ce3d6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jun 13 16:30:58 2009 +0000

    * Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01
      UTC) rather than 0 (00:00:00).  1 is a better choice because some
      programs use 0 as a special value.  For instance, the Template
      Toolkit uses a timestamp of 0 to denote the non-existence of a file,
      so it barfs on files in the Nix store (see
      template-toolkit-nix-store.patch in Nixpkgs).  Similarly, Maya 2008
      fails to load script directories with a timestamp of 0 and can't be
      patched because it's closed source.

      This will also shut up those "implausibly old time stamp" GNU tar
      warnings.

commit f24cf5d303
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 10 11:30:34 2009 +0000

    * nix-build: if nix-instantiate or nix-store fails due to a signal
      (e.g. out of memory or a segfault), print an error message.
      Otherwise the user doesn't see anything.

commit c6cb792d48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 26 16:32:02 2009 +0000

commit a64bbe049e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 15 13:46:13 2009 +0000

    * Change the scoping of "inherit (e) ..." in recs so that the
      attributes of the rec are in scope of `e'.  This is useful in
      expressions such as

        rec {
          lib = import ./lib;
          inherit (lib) concatStrings;
        }

      It does change the semantics of expressions such as

        let x = {y = 1;}; in rec { x = {y = 2;}; inherit (x) y; }.y

      This now returns 2 instead of 1.  However, no code in Nixpkgs or
      NixOS seems to rely on the old behaviour.

commit d407d572fd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri May 15 12:35:23 2009 +0000

    * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a
      shorthand for {x = {y = {z = ...;};};}.  This is especially useful
      for NixOS configuration files, e.g.

        {
          services = {
            sshd = {
              enable = true;
              port = 2022;
            };
          };
        }

      can now be written as

        {
          services.sshd.enable = true;
          services.sshd.port = 2022;
        }

      However, it is currently not permitted to write

        {
          services.sshd = {enable = true;};
          services.sshd.port = 2022;
        }

      as this is considered a duplicate definition of `services.sshd'.

commit e42975490f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 14 14:29:45 2009 +0000

    * Check for duplicate attributes in fixAttrs, rather than doing a
      separate traversal after parsing.  Likewise, check for duplicate
      pattern variables right away.

commit 50d11b90ca
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 12 11:06:24 2009 +0000

    * Allow unsafe (unspecified) comparisons between attrsets unless
      NIX_NO_UNSAFE_EQ is set, for now.

commit c34e6d71bc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon May 11 15:50:14 2009 +0000

    * Disallow equality tests between attribute sets.  This was always
      broken, but now the evaluator checks for it to prevent Nix
      expressions from relying on undefined behaviour.  Equality tests are
      implemented using a shallow pointer equality test between ATerms.
      However, because attribute sets are lazy and contain position
      information, this can give false positives.  For instance,
      previously

        let y = {x = 1;}; in y == y

      evaluated to true, while the equivalent expression

        {x = 1;} == {x = 1;}

      evaluated to false.  So disallow these tests for now.  (Eventually
      we may want to implement deep equality tests for attribute sets,
      like lib.eqStrict.)

    * Idem: disallow comparisons between functions.

    * Implemented deep comparisons of lists.  This had the same problem as
      attribute sets - the elements in the list weren't evaluated.  For
      instance,

        ["xy"] == [("x" + "y")]

      evaluated to false.  Now it works properly.

commit 9536ba19d4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 13:22:26 2009 +0000

commit 83bd320b39
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 13:12:46 2009 +0000

    * Build a PDF version of the manual in the tarball job (it's not
      included in the tarball though).

commit f751c2966b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 13:11:58 2009 +0000

    * Don't have a bugs section in the manual.  Bugs should be kept in the
      bug tracker.

commit 404996ca1f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 12:57:04 2009 +0000

    * Produce the manual in the tarball job.

commit 7660e2a068
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 11:35:52 2009 +0000

    * Remove a right recursion that causes the parser to barf on very long
      lists.  The comment about ATreverse requiring unbounded stack space
      was unfounded anyway.

commit 52a9ba96f5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 11:34:08 2009 +0000

    * Include the version file.

commit 6a5599fd01
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu May 7 11:33:57 2009 +0000

    * Typo.

commit 098cb9d233
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Mon May 4 08:10:24 2009 +0000

    Add an ftruncate call paired with fallocate to play safe with  some FSes (namely, BtrFS fallocate sets file size to allocated size, i.e. multiple of block size)

commit c710fe540e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 21 12:42:47 2009 +0000

    * Machines of type x86_64-linux can do i686-linux builds.

commit d5eab2fc82
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 21 11:52:16 2009 +0000

    * Use foreach in a lot of places.

commit 8f1bf28505
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 21 11:06:27 2009 +0000

    * nix-store --verify: don't bail out if a referenced path is missing.
      (It can't fix it though.)

commit 4e646b0ddb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 16 12:03:17 2009 +0000

    * Fix a few "comparison is always false/true due to limited range of
      data type" warnings on 64-bit platforms.  The one in parser.y is
      likely to be a real bug.

commit 0460ea4c39
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 16 09:27:33 2009 +0000

    * Cleanup.

commit dfb863f333
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 15 06:25:02 2009 +0000

    * Don't cache transient build hook problems.

commit 435a93b5d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 14 13:03:27 2009 +0000

    * Remove references to __XXX primops.

commit 8b2a01a8c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Apr 14 12:02:22 2009 +0000

    * Release notes.

commit 50cb6f9782
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 2 08:16:15 2009 +0000

    * Debian packages: use /etc, not /usr/etc.

commit 351bf658f9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 31 21:14:07 2009 +0000

    * Do a substitution even if --max-jobs == 0.

commit cff2b2a13a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 31 15:50:03 2009 +0000

    * Doh!

commit 160a60d663
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 30 19:35:55 2009 +0000

commit 805144b705
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 30 11:34:03 2009 +0000

    * Make the poll interval configurable.

commit 096affb55b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 29 18:40:44 2009 +0000

    * Update the mtime on the lock file to make it easy to see when a slot
      was last used.

commit cbc1f57b48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 29 18:08:32 2009 +0000

    * Undocument the "system" option.  No sane person would use it :-)

commit 7377195297
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 29 18:06:00 2009 +0000

    * With `--max-jobs 0', print a nicer error message than "Assertion
      `!awake.empty()' failed."

commit 737423a89c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 29 18:00:45 2009 +0000

    * Use polling to wait for a remote build slot when using a build hook
      (that is, call the build hook with a certain interval until it
      accepts the build).
    * build-remote.pl was totally broken: for all system types other than
      the local system type, it would send all builds to the *first*
      machine of the appropriate type.

commit 47706e3924
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 21:10:29 2009 +0000

    * nix-copy-closure: compute the closure in one call to nix-store,
      which is much faster.

commit 6e946c8e72
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 20:51:33 2009 +0000

    * Scan for references and compute the SHA-256 hash of the output in
      one pass.  This halves the amount of I/O.

commit c7152c8f97
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 19:41:53 2009 +0000

    * Don't use the non-standard __gnu_cxx::stdio_filebuf class.

commit 3a2bbe7f8a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 19:29:55 2009 +0000

    * Simplify communication with the hook a bit (don't use file
      descriptors 3/4, just use stdin/stderr).

commit 7fb548aa26
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 16:12:46 2009 +0000

    * Clean up the output a bit.

commit f54e800366
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 28 16:12:27 2009 +0000

    * The `fixedOutput' variable didn't get initialised when using a build
      hook, causing negative caching to fail randomly.

commit 38f98b3282
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 27 22:40:22 2009 +0000

    * Argh, stupid timing sensitive tests...

commit e23a7a8b7b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 27 14:20:03 2009 +0000

    * Debian 5.0, Ubuntu 8.10 builds.

commit cb85bc396e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 27 14:19:04 2009 +0000

    * Create /nix/store if it doesn't exist.

commit 61686926d1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 26 14:12:42 2009 +0000

    * A job for creating a fully statically linked binary tarball.

commit 9856efc7b0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 26 12:22:08 2009 +0000

    * Support doing a fully static build.  Statically linked Nix binaries
      will be useful as a fallback on platforms for which there are no
      RPMs/Debs available.

commit 5dd8fb2069
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 26 11:02:07 2009 +0000

    * Don't use ULLONG_MAX in maxFreed - use 0 to mean "no limit".
      18446744073709551615ULL breaks on GCC 3.3.6 (`integer constant is
      too large for "long" type').

commit 92f525ecf4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 25 21:05:42 2009 +0000

    * Negative caching, i.e. caching of build failures.  Disabled by
      default.  This is mostly useful for Hydra.

commit 7024a1ef07
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 25 16:43:38 2009 +0000

    * Removed the locking.sh test; it's redundant because of the extended
      parallel.sh test.  Also, don't call multiple nix-builds in parallel,
      since they can race creating .nix-build-tmp-derivation.

commit 8146a0c731
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 25 16:11:04 2009 +0000

    * Use bash in the tests.

commit a046858a22
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 24 23:40:24 2009 +0000

    * Doh.

commit 12c8c64efa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 24 14:07:37 2009 +0000

commit 7aedcf9460
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 23 15:16:36 2009 +0000

    * Make this test a bit more robust.  It's still timing dependent
      though.

commit 3a87163b24
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 23 13:52:52 2009 +0000

    * Shut up a GCC warning.

commit cacff1be88
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 23 01:05:54 2009 +0000

    * No longer block while waiting for a lock on a store path.  Instead
      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.

commit 58969fa2bf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 22 23:53:05 2009 +0000

    * Refactoring.

commit d7b2d11255
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 22 23:16:18 2009 +0000

    * Test case (currently fails): multiple Nix builds shouldn't block
      waiting on the same lock when there are other builds that can be
      done.

commit 7a57b2920b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 22 17:51:45 2009 +0000

    * Better error message when nix-store --import is applied to garbage
      (previously it would likely say "implementation cannot deal with >
      32-bit integers").

commit 77d272623f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Mar 22 17:36:43 2009 +0000

    * NAR archives: handle files larger than 2^32 bytes.  Previously it
      would just silently store only (fileSize % 2^32) bytes.
    * Use posix_fallocate if available when unpacking archives.
    * Provide a better error message when trying to unpack something that
      isn't a NAR archive.

commit 7e05b8b75e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 19 10:02:02 2009 +0000

    * Future proofing: assume we can read manifests up to version 10
      (which should therefore be backwards compatible).

commit b88460bcbc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 19 09:47:34 2009 +0000

    * Disregard the Hash field in manifests.

commit 2897286487
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 17:36:42 2009 +0000

    * Unify exportReferencesGraph and exportBuildReferencesGraph, and make
      sure that it works as expected when you pass it a derivation.  That
      is, we have to make sure that all build-time dependencies are built,
      and that they are all in the input closure (otherwise remote builds
      might fail, for example).  This is ensured at instantiation time by
      adding all derivations and their sources to inputDrvs and inputSrcs.

commit e530e0a350
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 16:36:13 2009 +0000

    * Improve the test.

commit 9485ec31ea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 16:35:35 2009 +0000

    * Better cleanup after tests.

commit 13df3915ef
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 16:23:29 2009 +0000

    * Missing file.

commit c183ee5c79
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 14:48:42 2009 +0000

    * Acquire the locks on the output paths before trying to run the build
      hook.  This fixes a problem with log files being partially or
      completely filled with 0's because another nix-store process
      truncates the log file.  It should also be more efficient.

commit 1dcf208f56
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 18 13:15:55 2009 +0000

    * Clean up some tests (use nix-build where appropriate).

commit 93b6926054
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 17 17:38:32 2009 +0000

    * Regression test for exportBuildReferencesGraph.  It currently fails.

commit 51e7e32c3b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 17 17:11:55 2009 +0000

    * Refactoring: renamed *.nix.in to *.nix.

commit 2d5114452d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 17 16:33:48 2009 +0000

    * Regression test for the `exportReferencesGraph'
      derivation attribute.

commit 33ecb42991
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 17 11:42:55 2009 +0000

    * Cleanup.

commit be88248add
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 9 15:05:08 2009 +0000

    * Make the version available to release.nix.

commit a96cac0d18
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 6 17:00:58 2009 +0000

commit d4753c944f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 6 11:01:45 2009 +0000

commit 0e6f604178
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 5 14:57:50 2009 +0000

    * Install some headers in the right location.

commit 7f254706b0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 3 14:47:39 2009 +0000

    * Allow the channel to declare a name for itself.

commit 1273d355ac
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 14:06:38 2009 +0000

    * nix-install-package: don't pollute /nix/var/nix/manifests.

commit d4ca5c3952
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 13:55:11 2009 +0000

    * Use the regular progress bar; the hash bar isn't very useful when
      the size of the download isn't known in advance.

commit fd2e14b3c8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 12:09:30 2009 +0000

    * nix-build: support --option.

commit 60cb7de336
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 11:04:41 2009 +0000

    * Allow options from the Nix config file to be overriden from the
      command line (e.g. "--option build-use-chroot true").

commit 8ab6bc5a49
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 11:01:03 2009 +0000

    * nix-channel: use nix-build.

commit f052c10eed
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 27 09:53:58 2009 +0000

    * Check the manifest version.

commit a7cee528c5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 26 21:12:35 2009 +0000

    * Handle base-16 hashes in manifests.

commit 041717eda3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 19 23:46:37 2009 +0000

    * download-using-manifests: don't check the cryptographic hash of
      downloaded files; rather, check the hash of the unpacked store
      path.

      When the server produces bzipped NAR archives on demand (like Hydra
      does), the hash of the file is not known in advance; it's streamed
      from the server.  Thus the manifest doesn't contain a hash for the
      bzipped NAR archive.  However, the server does know the hash of the
      *uncompressed* NAR archive (the "NarHash" field), since it's stored
      in the Nix database (nix-store -q --hash /nix/store/bla).  So we use
      that instead for checking the integrity of the download.

commit 621093cb1c
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Thu Feb 19 20:46:45 2009 +0000

    Replace wrong (w.r.t. PATH) sed call with in-shell substitution

commit 824b154ce8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 16 09:24:20 2009 +0000

    * Release output locks as soon as possible, not when the destructor of
      the DerivationGoal runs.  Otherwise, if a goal is a top-level goal,
      then the lock won't be released until nix-store finishes.  With
      --keep-going and lots of top-level goals, it's possible to run out
      of file descriptors (this happened sometimes in the build farm for
      Nixpkgs).  Also, for failed derivation, it won't be possible to
      build it again  until the lock is released.

    * Idem for locks on build users: these weren't released in a timely
      manner for failed top-level derivation goals.  So if there were more
      than (say) 10 such failed builds, you would get an error about
      having run out of build users.

commit 2ef579d1aa
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Thu Feb 5 19:35:44 2009 +0000

    documentation for previous commit

commit 1407a1ec99
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Thu Feb 5 19:35:40 2009 +0000

    added primop functions __isBool, __isString, __isInt

commit 1bb0f1e84b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 3 10:34:15 2009 +0000

    * Build hook: compress the transferred data.

commit b682fae9d9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 2 17:24:10 2009 +0000

    * Build hooks: use nix-store --import.  This prevents a redundant
      scan for runtime dependencies (i.e. the local machine shouldn't do a
      scan that the remote machine has already done).  Also pipe directly
      into `nix-store --import': don't use a temporary file.

commit 6f8c96d123
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Wed Jan 28 12:14:53 2009 +0000

    vim syntax:  support for indented strings ('' .. '')

commit 110606d470
Author: Nicolas Pierron <nicolas.b.pierron@gmail.com>
Date:   Tue Jan 27 14:36:44 2009 +0000

    Add the "addErrorContext" builtin to add more information in the stack trace.

commit 061141e632
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 27 13:36:59 2009 +0000

    * Make it compile on Debian 4.0 (which doesn't define PER_LINUX32_3GB
      in sys/personality.h).

commit 019176137f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 13 11:39:09 2009 +0000

    * When using a build hook, distinguish between transient failures
      (e.g. an SSH connection problem) and permanent failures (i.e. the
      builder failed).  This matters to Hydra (it wants to know whether it
      makes sense to retry a build).

commit 4ce692df88
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 13 10:42:13 2009 +0000

commit c504d90c11
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 12 16:30:32 2009 +0000

    * Support i686-linux builds directly on x86_64-linux Nix
      installations.  This is implemented using the personality() syscall,
      which causes uname to return "i686" in child processes.

commit 8e39d9bdb3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 12 12:51:28 2009 +0000

    * Make Nix build with Bison 2.4.

commit 28355dafcf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 5 12:14:43 2009 +0000

    * Removed reference to losser.st-lab.cs.uu.nl, which is RIP after 9
      years of loyal service :-)

commit 8fce03e0ad
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 16 13:28:18 2008 +0000

    * nix-store --verify: repair bad hash fields in the metadata file.

commit 60ec75048a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 16 12:23:35 2008 +0000

    * Pass --use-atime / --max-atime to the daemon.

commit 6f6bb1fdea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 15 23:55:11 2008 +0000

    * Delete the chroot if it already exists (e.g. left over from an
      interrupted build).

commit 92cb7c4dfe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 17:14:57 2008 +0000

    * Put chroots in the Nix store.  This ensures that we can create hard
      links to the inputs.

commit 0008b0006d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 17:03:18 2008 +0000

    * Simplify deleting .lock files in /nix/store: just don't delete them
      if they belong a path that's currently being built.  This gets rid
      of some Cygwin-specific code.

commit ac36c6cd44
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 15:36:18 2008 +0000

    * Some hackery to make "make check" succeed on Cygwin.

commit 2b70a8e7c9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 13:41:36 2008 +0000

    * Detect whether unshare() is available.

commit 9122dcecbb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 12:59:27 2008 +0000

    * We can't use string objects in signal handlers because they might
      allocate memory, which is verboten in signal handlers.  This caused
      random failures in the test suite on Mac OS X (triggered by the spurious
      SIGPOLL signals on Mac OS X, which should also be fixed).

commit 6776a52bb3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 11:49:42 2008 +0000

    * Use a PathSet for the chroot directories so that we don't
      accidentally bind-mount a directory twice.

commit d86bd22d24
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 12 10:20:19 2008 +0000

    * Define _GNU_SOURCE.  Hopefully this fixes the build on Debian 4.0
      (http://hydra.nixos.org/nixlog/384/1).

commit ac5478eb52
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 11 18:57:10 2008 +0000

    * Don't provide the whole Nix store in the chroot, but only the
      closure of the inputs.  This really enforces that there can't be any
      undeclared dependencies on paths in the store.  This is done by
      creating a fake Nix store and creating bind-mounts or hard-links in
      the fake store for all paths in the closure.  After the build, the
      build output is moved from the fake store to the real store.  TODO:
      the chroot has to be on the same filesystem as the Nix store for
      this to work, but this isn't enforced yet.  (I.e. it only works
      currently if /tmp is on the same FS as /nix/store.)

commit 652817046b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 11 17:52:34 2008 +0000

    * Revert r13150: now that we use private namespaces for the chroot, we
      don't have to put the chroot in /nix/var/nix/chroots anymore.
      They're back in /tmp now.

commit 5a569509b4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 11 17:44:02 2008 +0000

    * Provide a minimal /etc/passwd in the chroot to keep some builders
      happy.

commit 7c54f1603f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 11 17:00:12 2008 +0000

    * Do chroot builds in a private namespace.  This means that all the
      bind-mounts we do are only visible to the builder process and its
      children.  So accidentally doing "rm -rf" on the chroot directory
      won't wipe out /nix/store and other bind-mounted directories
      anymore.  Also, the bind-mounts in the private namespace disappear
      automatically when the builder exits.

commit 07cdfb09fb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 11 14:30:25 2008 +0000

    * Open the connection to the daemon lazily (on demand) so that
      read-only operations (like nix-env -qa) work properly when the
      daemon isn't running.

commit a0766eca27
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 21:07:29 2008 +0000

    * Build on Debian 4.0 (GCC 4.1.1).

commit cd16d5dc3d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 17:56:12 2008 +0000

    * Doh.

commit 5b949241a5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 17:54:14 2008 +0000

    * Build some 64-bit RPMs/Debs.

commit 67958f21df
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 16:55:22 2008 +0000

    * Be sure to clean up the daemon if the test fails.

commit d91dc086bb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 16:51:36 2008 +0000

commit 9ac3f5df9c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 16:51:16 2008 +0000

    * Propagate --max-silent-time to remote machines.

commit bcfe98acff
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 16:35:47 2008 +0000

    * Prefer building on a remote machine over a local machine.  This
      makes more sense for the build farm, otherwise every nix-store
      invocation will lead to at least one local build.  Will come up with
      a better solution later...

commit 9850262a72
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 15:25:28 2008 +0000

    * Build RPMs, Debs, coverage analysis.

commit 909fbb9de1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 14:29:41 2008 +0000

    * When using build hooks, for any nix-store -r build operation, it is
      necessary that at least one build hook doesn't return "postpone",
      otherwise nix-store will barf ("waiting for a build slot, yet there
      are no running children").  So inform the build hook when this is
      the case, so that it can start a build even when that would exceed
      the maximum load on a machine.

commit 5dfba0b4db
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 13:36:52 2008 +0000

    * Force allocation of a pseudo-terminal to clean up the remote
      nix-store process when the connection is interrupted.

commit 9ccdb80de3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 13:13:31 2008 +0000

    * Don't ignore errors from writing to stderr.  That way, when
      nix-store -r (or some other operation) is started via ssh, it will
      at least have a chance of terminating quickly when the connection is
      killed.  Right now it just runs to completion, because it never
      notices that stderr is no longer connected to anything.  Of course
      it would be better if sshd would just send a SIGHUP, but it doesn't
      (https://bugzilla.mindrot.org/show_bug.cgi?id=396).

commit 9fd9c4c635
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 12:20:06 2008 +0000

    * Support multiple system types per remote machine, e.g. a machine
      list like

        root@example.org x86_64-linux /root/.ssh/id_buildfarm 1
        root@example.org i686-darwin  /root/.ssh/id_buildfarm 1

      This is possible when the Nix installation on example.org itself has
      remote builds enabled.

commit 63b8f09d8d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 10:45:47 2008 +0000

commit f8713e1287
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 4 10:40:41 2008 +0000

    * Dirty hack to make nix-push work properly on derivations: the
      derivation should be a source rather than a derivation dependency of
      the call to the NAR derivation.  Otherwise the derivation (and all
      its dependencies) will be built as a side-effect, which may not even
      succeed.

commit 82ae85de27
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 18:05:14 2008 +0000

    * addToStore() in nix-worker: don't write the NAR dump received from
      the client to a temporary directory, as that is highly inefficient.

commit 5eaf644c99
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 17:30:32 2008 +0000

    * A simple API for parsing NAR archives.

commit cdee317419
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 17:02:29 2008 +0000

    * Backwards compatibility.

commit d95b68fde3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 16:15:38 2008 +0000

commit ff762fb499
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 16:10:17 2008 +0000

    * Pass HashType values instead of strings.

commit 1307b22223
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 15:51:17 2008 +0000

    * Made addToStore() a lot more efficient: it no longer reads the path
      being copied 3 times in the worst case.  It doesn't run in constant space,
      but it didn't do that anyway.

commit 64519cfd65
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 3 15:06:30 2008 +0000

    * Unify the treatment of sources copied to the store, and recursive
      SHA-256 outputs of fixed-output derivations.  I.e. they now produce
      the same store path:

      $ nix-store --add x
      /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x

      $ nix-store --add-fixed --recursive sha256 x
      /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x

      the latter being the same as the path that a derivation

        derivation {
          name = "x";
          outputHashAlgo = "sha256";
          outputHashMode = "recursive";
          outputHash = "...";
          ...
        };

      produces.

      This does change the output path for such fixed-output derivations.
      Fortunately they are quite rare.  The most common use is fetchsvn
      calls with SHA-256 hashes.  (There are a handful of those is
      Nixpkgs, mostly unstable development packages.)

    * Documented the computation of store paths (in store-api.cc).

commit 09bc0c502c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Nov 29 00:31:39 2008 +0000

    * Install the release notes.

commit 5d4eb9dd07
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 26 01:13:29 2008 +0000

    * Moved the build farm job for building Nix to the Nix tree.

commit 0c478d2f4d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 25 02:30:35 2008 +0000

    * Ignore carriage returns.

commit 5024bde8f4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 25 01:06:15 2008 +0000

    * Handle prematurely ended logfiles, i.e. make sure we emit enough
      close tags.

commit 2ab09a55cf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 21:51:58 2008 +0000

    * Bump the version number.

commit 6bbff48079
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 17:22:42 2008 +0000

commit b8eb32f4d2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 16:42:52 2008 +0000

    * Urgh.

commit bba87589cc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 16:28:04 2008 +0000

commit f3e2e6076a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 16:10:55 2008 +0000

commit 53cca4a445
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 16:06:13 2008 +0000

commit 4213b8d8ec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 15:44:59 2008 +0000

    * Urgh.

commit eb86b6f5a5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 15:08:39 2008 +0000

commit 3d2035ea86
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 15:08:34 2008 +0000

    * Blindly doing a replacement of occurences of $bindir (when running
      the tests) is a bad idea when $bindir = /usr and some programs (like
      perl) live there.  Fortunately it doesn't seem to be needed anymore.

commit 285d26374a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 14:14:35 2008 +0000

    * Don't set the prefix to /nix by default, rather use the Autoconf
      default of /usr/local.  However, localstatedir and storedir are set
      to /nix/var/nix and /nix/store respectively unless they're
      explicitly overriden.

commit a55113411f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 12:25:11 2008 +0000

    * Nix daemon: reload the configuration file after forking (NIX-100).

commit c202523e53
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 20 12:01:05 2008 +0000

commit aab530e971
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 23:26:19 2008 +0000

    * Primop builtins.storePath for declaring a store path as a
      dependency.  `storePath /nix/store/bla' gives exactly the same
      result as `toPath /nix/store/bla', except that the former includes
      /nix/store/bla in the dependency context of the string.

      Useful in some generated Nix expressions like nix-push, which now
      finally does the right thing wrt distributed builds.  (Previously
      the path to be packed wasn't an explicit dependency, so it wouldn't
      be copied to the remote machine.)

commit 60564410ef
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 17:50:25 2008 +0000

    * Patterns.

commit 2668a43388
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 17:27:52 2008 +0000

commit 63ccd72496
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 17:00:32 2008 +0000

    * Updated the manual.

commit e13da525a7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 16:27:07 2008 +0000

    * Files in the info directory starting with "." are temporary files
      and don't indicate path validity.

commit 5d250ad1ea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 16:26:34 2008 +0000

    * nix-store --dump-db: be more streamy.

commit 7509d70f9d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 15:20:46 2008 +0000

    * Documented some of the sharing mechanisms.

commit 2369b122d1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 13:19:09 2008 +0000

    * Install documentation in $(docdir) (i.e. share/doc/nix).

commit 6c2c771af7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 13:18:46 2008 +0000

    * Removed obsolete option.

commit 07d3a38726
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 11:58:33 2008 +0000

    * Remove references to Berkeley DB, including most of the
      troubleshooting section.  W00t.

commit f5325d292d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 19 10:59:36 2008 +0000

    * Release notes.

commit fa791116a3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 18 14:43:40 2008 +0000

    * Get rid of nix-pack-closure / nix-unpack-closure, they're redundant.

commit 3f4ed681c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 14 16:50:01 2008 +0000

    * Prevent zombies.  Previous the SIGCHLD handler only reaped one
      zombie at a time, so if multiple children died before the handler
      got to run, some of them would not be cleaned up.

commit 6fedb7aa0f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 14 15:46:45 2008 +0000

    * Restore SIGPIPE to SIG_DFL when running the builder.  This prevents
      subtle and often hard-to-reproduce bugs where programs in pipes
      either barf with a "Broken pipe" message or not, depending on the
      exact timing conditions.  This particularly happened in GNU M4 (and
      Bison, which uses M4).

commit a519bb0635
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 12 11:08:27 2008 +0000

    * Some somewhat ad hoc mechanism to allow the build farm to monitor
      build progress.

commit 96598e7b06
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 11 15:11:10 2008 +0000

    * Pass the --no-build-output flag to the daemon.

commit 4166b11a53
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 11 14:59:20 2008 +0000

    * Add /dev/pts to the default nix.conf.

commit 2b7c839b4e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 11 14:58:37 2008 +0000

    * Typo.

commit 709b55ee02
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 29 15:34:48 2008 +0000

    * Put the chroots under /nix/var/nix/chroots to reduce the risk of
      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.

commit c98ea254dc
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Thu Oct 16 21:04:32 2008 +0000

    libstore: Always mount `/dev/pts' individually.

    This fixes problems such as Tcl's PTY handling:

      ERROR: The system has no more ptys.  Ask your system administrator to
      create more.

commit 9d6d50269b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 16 14:16:03 2008 +0000

    * Bug fix for building on some old installations (contributed by Pjotr).

commit fa61ee70ee
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Sep 18 09:08:54 2008 +0000

    * Fix `--from-profile'.

commit f32fef1b07
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 17 14:52:35 2008 +0000

    * GC option `--max-atime' that specifies an upper limit to the last
      accessed time of paths that may be deleted.  Anything more recently
      used won't be deleted.  The time is specified in time_t,
      e.g. seconds since 1970-01-01 00:00:00 UTC; use `date +%s' to
      convert to time_t from the command line.

      Example: to delete everything that hasn't been used in the last two
      months:

      $ nix-store --gc -v --max-atime $(date +%s -d "2 months ago")

commit 4af2fdba6d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 17 13:00:55 2008 +0000

    * Typo.

commit c987061aa4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 17 12:54:07 2008 +0000

    * Some refactoring.  Better output with `-v' for --use-atime.

commit 77afd97a99
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 17 12:53:33 2008 +0000

    * nix-store --gc / --delete: show how many store paths were deleted.

commit 7ab68961e4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 17 10:02:55 2008 +0000

    * Garbage collector: added an option `--use-atime' to delete paths in
      order of ascending last access time.  This is useful in conjunction
      with --max-freed or --max-links to prefer deleting non-recently used
      garbage, which is good (especially in the build farm) since garbage
      may become live again.

      The code could easily be modified to accept other criteria for
      ordering garbage by changing the comparison operator used by the
      priority queue in collectGarbage().

commit 2b2aa8a820
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Sep 8 11:02:15 2008 +0000

    * Doh.

commit 7933cdc6dc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 2 09:21:38 2008 +0000

    * When writing the user environment manifest, filter out non-string
      attributes from the meta attribute.  Not doing so caused nix-env to
      barf on the "psi" package, which has a meta.function attribute,
      the textual serialisation of which causes a gigantic string to be
      produced --- so big that it causes nix-env to run out of memory.

      Note however that "meta" really only should contain strings.
      meta.function should be passthru.function.

commit 0f0dbe8c0c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 29 14:38:04 2008 +0000

    * Extend the ATerm suppressions to 64-bit.

commit 311c222f47
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 29 13:59:03 2008 +0000

commit 2a01d06da6
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Fri Aug 29 08:34:38 2008 +0000

    Added nix-http-export.cgi to extra distributed scripts; so it can be installed from releases, not only from SVN.

commit 7718b19389
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 27 17:20:25 2008 +0000

    * Explicitly set PWD to prevent problems with chroot builds.  In
      particular, dietlibc cannot figure out the cwd because the inode of
      the current directory doesn't appear in .. (because getdents returns
      the inode of the mount point).

commit 9cc0da8453
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 27 16:03:03 2008 +0000

    * Create a /tmp with 1777 permission in the chroot.  Some builders
      need a writable /tmp (they don't respect $TMPDIR).

commit 99dc3e613a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 26 14:05:59 2008 +0000

    * Require that __overrides is defined as a non-recursive attribute
      (which means it can only be defined via "inherit"), otherwise we get
      scoping bugs, since __overrides can't be recursive (or at least, it
      would be hard).

commit d06be428f6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 25 15:49:22 2008 +0000

    * Disable chroot builds for fixed-output derivations so that we don't
      need /etc in the chroot (in particular, /etc/resolv.conf for
      fetchurl).  Not having /etc/resolv.conf in the chroot is a good
      thing, since we don't want normal derivations to download files.

commit abec1c0004
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 25 14:31:29 2008 +0000

    * Evaluate attributes in sorted order for better determinism.

commit c4f1c2114b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 25 14:15:56 2008 +0000

    * Minor simplification.

commit 49829da8b4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 25 13:32:27 2008 +0000

    * Doh.

commit b428adc267
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 25 13:31:57 2008 +0000

    * Strip off the `.nix' suffix from the attribute name for files in
      ~/.nix-defexpr,  otherwise the attribute cannot be selected with the
      `-A' option.  Useful if you want to stick a Nix expression directly
      in ~/.nix-defexpr.

commit cc826dc03e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 22 14:32:29 2008 +0000

    * Simplify the Valgrind suppressions using wildcards.

commit 51e2dda58c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 19 12:46:43 2008 +0000

    * Some more ATerm Valgrind suppressions.

commit b7ff182b6e
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Thu Aug 14 22:01:43 2008 +0000

    Fixing an obvious typo in override code. I do not know whether it works correctly after the change, but at least it ca nbe compiled now.

commit ca07f3e370
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 16:59:37 2008 +0000

    * Another experimental feature: a way to truly override attributes in
      a rec.  This will be very useful to allow end-user customisation of
      all-packages.nix, for instance globally overriding GCC or some other
      dependency.  The // operator doesn't cut it: you could replace the
      "gcc" attribute, but all other attributes would continue to
      reference the original value due to the substitution semantics of
      rec.

      The syntax is a bit hacky but this is to allow backwards
      compatibility.

commit 9279174dde
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 14:00:44 2008 +0000

    * Added an experimental feature suggested by Andres: ellipses ("...")
      in attribute set pattern matches.  This allows defining a function
      that takes *at least* the listed attributes, while ignoring
      additional attributes.  For instance,

        {stdenv, fetchurl, fuse, ...}:

        stdenv.mkDerivation {
          ...
        };

      defines a function that requires an attribute set that contains the
      specified attributes but ignores others.  The main advantage is that
      we can then write in all-packages.nix

        aefs = import ../bla/aefs pkgs;

      instead of

        aefs = import ../bla/aefs {
          inherit stdenv fetchurl fuse;
        };

      This saves a lot of typing (not to mention not having to update
      all-packages.nix with purely mechanical changes).  It saves as much
      typing as the "args: with args;" style, but has the advantage that
      the function arguments are properly declared (not implicit in what
      the body of the "with" uses).

commit db4f4a8425
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 13:02:19 2008 +0000

    * Backward compatibility check to prevent nixos-rebuild from barfing
      when upgrading Nix.

commit 1b962fc720
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 12:53:29 2008 +0000

    * @-patterns as in Haskell.  For instance, in a function definition

        f = args @ {x, y, z}: ...;

      `args' refers to the argument as a whole, which is further
      pattern-matched against the attribute set pattern {x, y, z}.

commit e818838412
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 10:14:34 2008 +0000

    * "pattern" non-terminal.

commit efe4b690ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 10:04:22 2008 +0000

    * Refactoring: combine functions that take an attribute set and
      functions that take a single argument (plain lambdas) into one AST
      node (Function) that contains a Pattern node describing the
      arguments.  Current patterns are single lazy arguments (VarPat) and
      matching against an attribute set (AttrsPat).

      This refactoring allows other kinds of patterns to be added easily,
      such as Haskell-style @-patterns, or list pattern matching.

commit c03b729319
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 14 09:26:30 2008 +0000

    * Increase the sleep periods a bit to make the test less likely to
      fail on slow machines.  Of course it would be better if this test
      wasn't timing dependent...

commit 5664b6d7ba
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 11 13:36:40 2008 +0000

    * Removed the "valid values" feature.  Nobody uses it anyway.

commit b455c4c45c
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Wed Aug 6 19:43:53 2008 +0000

    Updates to nix-reduce-build

    Common code in local build package sources refactored out in a function; before building the real set of derivations needed is found (slightly slower for only one build strategy, but less garbage on output and better performance for multiple build strategies).

    Now you have full choice of best-effort build regardless of method (substituters or actual build), using substituters, building only fixed derivations (should get you all the downloads) and local build without even trying substituters.

    Some minor fix in the help text about behavior with no package sources.

commit 72f3ea7358
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 5 11:03:05 2008 +0000

    * Moved some stuff to the Nixpkgs manual.
    * Updated the release notes.

commit 98b07466fb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 5 10:57:53 2008 +0000

    * Better error checking of the data from the substituters.

commit 339c142009
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 16:21:45 2008 +0000

    * Use optimistic profile locking for nix-env operations like `-i' and
      `-u'.  Instead of acquiring an exclusive lock on the profile for the
      entire duration of the operation, we just perform the operation
      optimistically (without an exclusive lock), and check at the end
      whether the profile changed while we were busy (i.e., the symlink
      target changed).  If so, the operation is restarted.  Restarting is
      generally cheap, since the build results are still in the Nix store.
      Most of the time, only the user environment has to be rebuilt.

commit a87b5256e2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 16:16:49 2008 +0000

    * Fix the tests.

commit 001b3f06ec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 14:58:50 2008 +0000

    * `nix-env --set': support --dry-run.

commit 7592f48c83
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 13:46:01 2008 +0000

    * nix-build: `--dry-run' flag.

commit a1d310b6b5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 13:44:46 2008 +0000

    * `nix-store --realise': print what paths will be built/downloaded,
      just like nix-env.
    * `nix-store --realise': --dry-run option.

commit 42043953c3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 13:15:47 2008 +0000

    * Doh.

commit 5adbb0aabe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 13:15:35 2008 +0000

    * build.cc: only use a substituter if it returns info for a path.

commit 5b1052663a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 13:11:09 2008 +0000

    * Always show what paths we're going to build/download (as in
      --dry-run).  Maybe there should be an option to turn this on/off?

commit c4f98941ed
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 12:29:04 2008 +0000

    * nix-env --dry-run: show the total size of the substituter
      downloads.

commit 03427e76f1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 4 11:44:50 2008 +0000

    * querySubstitutablePathInfo: work properly when run via the daemon.
    * --dry-run: print the paths that we don't know how to build/substitute.

commit b3c26180e3
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sat Aug 2 16:43:25 2008 +0000

    Updates to nix-reduce-build: only realize fixed derivations if user asks so, or only use substituters. Oh, and add possibility to use : for things like /etc/nixos/nixpkgs:-A:gnused

commit 3c92ea399d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Aug 2 12:54:35 2008 +0000

    * Make nix-env --dry-run print the paths to be substituted correctly
      again.  (After the previous substituter mechanism refactoring I
      didn't update the code that obtains the references of substitutable
      paths.)  This required some refactoring: the substituter programs
      are now kept running and receive/respond to info requests via
      stdin/stdout.

commit fc691e1cbd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jul 24 14:52:25 2008 +0000

    * Print a better error message when a non-derivation attribute set is
      coerced to a string.

commit 096198d11f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 23 16:02:58 2008 +0000

    * A quick hack to make nix-prefetch-url support mirror:// URLs.  It
      requires that $NIXPKGS_ALL points at a Nixpkgs tree.

commit 660244f65f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jul 23 09:38:38 2008 +0000

    * Make sure that copy-from-other-stores.pl is built.

commit e139d7fc68
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 18 20:03:12 2008 +0000

    * Fix the tests.

commit 989176c56e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 18 15:34:46 2008 +0000

    * Allow read-only access to the store (e.g., non-root users on NixOS
      can do operations like "nix-store -qR <path>" even without the Nix
      daemon).

commit 8bc591a6f0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 18 13:05:10 2008 +0000

    * Use the copy-from-other-stores substituter by default.  Of course,
      it only does something if $NIX_OTHER_STORES (not really a good
      name...) is set.
    * Do globbing on the elements of $NIX_OTHER_STORES.  E.g. you could
      set it to /mnts/*/nix or something.
    * Install substituters in libexec/nix/substituters.

commit 15f39aba8c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jul 12 18:58:24 2008 +0000

    * Quick prototype of a substituter that copies paths from other Nix
      stores (typically remote Nix stores mounted via e.g. NFS, or the Nix
      store on the NixOS installation CD).  Example use:

      $ sshfs foo@example.org:/ /mnt
      $ NIX_OTHER_STORES=/mnt/nix \
        NIX_SUBSTITUTERS=.../copy-from-other-stores.pl \
        nix-env -i foo

      This will be especially useful for the installation CD since it
      doesn't require a manifest for the CD contents.

commit 7cd88b1dec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jul 11 13:29:04 2008 +0000

    * Generalised the dependencyClosure primop to builtins.genericClosure,
      which is hopefully more useful.
    * New primops: length, mul, div.

commit d567baabbd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jul 1 10:10:32 2008 +0000

    * Export the nix-env derivation name parsing and version comparison
      logic through the `parseDrvName' and `compareVersions' primops.
      This will allow expressions to easily check whether some dependency
      is a specific needed version or falls in some version range.  See
      tests/lang/eval-okay-versions.nix for examples.

commit b3b0b2a29e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 23 13:52:28 2008 +0000

    * `make ext-clean': remove the bzip2 build.

commit 6c8641a542
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 18 19:17:05 2008 +0000

commit 5af84139a8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 18 15:20:33 2008 +0000

    * --max-freed: support values >= 4 GB.

commit d3aa183beb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 18 14:20:16 2008 +0000

    * Garbage collector: option `--max-freed' to stop after at least N
      bytes have been freed, `--max-links' to stop when the Nix store
      directory has fewer than N hard links (the latter being important
      for very large Nix stores on filesystems with a 32000 subdirectories
      limit).

commit a8f3b02092
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 18 14:13:00 2008 +0000

    * `nix-store --optimise': handle files with >= 32000 hard links.
      (There can easily be more than 32000 occurrences of the empty file.)

commit a72709afd8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 18 09:34:17 2008 +0000

    * Some refactoring: put the GC options / results in separate structs.
    * The garbage collector now also prints the number of blocks freed.

commit 934c58aa38
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 17 08:12:12 2008 +0000

    * Use bzip2 1.0.5.

commit ee8f15930d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jun 15 15:10:03 2008 +0000

    * Test instrumentation.

commit f351834f77
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jun 14 16:03:02 2008 +0000

    * nix-worker: clean up the temporary root for the worker processes
      in /nix/var/nix/temproots.

commit 94fd46fa1c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jun 14 16:02:31 2008 +0000

    * Note.

commit 955b8841cd
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sat Jun 14 08:48:40 2008 +0000

    Also trying to build derivers in case we cannot get substituters

commit 18e27629d3
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sat Jun 14 08:30:35 2008 +0000

    Added local best-effort builds (i.e. one failure does not ruin all packages you would like to see built)

commit 826b271d9a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jun 13 18:25:24 2008 +0000

    * Garbage collector: don't do a complete topological sort of the Nix
      store under the reference relation, since that means that the
      garbage collector will need a long time to start deleting paths.
      Instead just delete the referrers of a path first.

commit 30c9f909b2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jun 13 17:21:20 2008 +0000

    * Print some progress info during the early GC stages.

commit 194c66eeeb
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Fri Jun 13 14:34:19 2008 +0000

    Stupid error in script

commit f903d86740
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Fri Jun 13 13:53:14 2008 +0000

    OK, I will believe that fix does no worse..

commit ce85b55cf0
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Thu Jun 12 17:45:38 2008 +0000

    Updated help text

commit 4532e4b90d
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Thu Jun 12 16:26:53 2008 +0000

    Added verbosity for nix-reduce-build

commit 2818b7cee6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jun 11 15:39:38 2008 +0000

    * Updated some URLs.

commit 997b95a4af
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 10 10:08:15 2008 +0000

    * Fixed compatibility with old versions of "wc" that print whitespace
      before the count.

commit b0e92f6d47
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 9 13:52:45 2008 +0000

    * Merged the no-bdb branch (-r10900:HEAD
      https://svn.nixos.org/repos/nix/nix/branches/no-bdb).

commit 4ed01ed791
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 9 13:42:13 2008 +0000

    * Updated some URLs (did this a long time ago but forgot to
      commit...).

commit c41a3ec3a9
Author: Sander van der Burg <s.vanderburg@tudelft.nl>
Date:   Wed Jun 4 14:36:46 2008 +0000

    First attempt to update Nix SDF grammar to match the actual bison grammar

commit bd955e15e1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 21 11:17:31 2008 +0000

    * GCC 4.3.0 (Fedora 9) compatibility fixes.  Reported by Gour and
      Armijn Hemel.

commit 9819bb20da
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sun May 11 15:54:30 2008 +0000

    Added support for file:// archive (.nar.gz) repositories to nix-reduce-build. /tmp/nix-export created by nix-http-export.cgi is OK.

commit b4bc8b7616
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Wed May 7 14:18:28 2008 +0000

    --proxy=proxy:3128

commit b1e321d6ce
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Tue Apr 29 04:03:54 2008 +0000

    Added http alternative transport for nix-reduce-build

commit 658816ddc9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 10 09:54:23 2008 +0000

    * Make really sure that we use bash.  The line

        NEED_PROG(shell, bash)

      actually uses the content of $shell if set, which often points at
      /bin/sh.

commit 72034ab35d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Apr 9 05:57:01 2008 +0000

    * sockaddr_un doesn't allow path names of more than 108 characters.
      This isn't usually a problem, except that it causes tests to fail
      when performed in a directory with a very long path name.  So chdir
      to the socket directory and use a relative path name.

commit f8985d195e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 28 17:52:33 2008 +0000

    * Fix for NIX-101 (should use an absolute path for call to nix-hash).

commit 329025253d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 27 13:45:17 2008 +0000

    * Use /tmp/nix-build-<drvpath>-<counter> instead of
      /tmp/nix-<pid>-<counter> for temporary build directories.  This
      increases purity a bit: many packages store the temporary build path
      in their output, causing (generally unimportant) binary differences.

commit 5bb08db55b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 21 14:57:16 2008 +0000

    * Updated URL.

commit 98968fbb63
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 20 18:15:20 2008 +0000

    * Disable the don't-run-as-root sanity check because it breaks RPM
      builds (which are done as root...).

commit 2f1e2cf632
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 20 14:59:33 2008 +0000

    * Note that the SDF grammar isn't used.

commit f106868110
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 20 10:16:36 2008 +0000

    * Cleanup.

commit f789ea1d09
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Mar 1 21:05:33 2008 +0000

    * A transaction is unnecessary since the path cannot be
      garbage-collected (it's a temporary root).

commit d7caac3e81
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 28 21:27:47 2008 +0000

    * Don't install nix-reduce-build by default yet please, I first want
      to understand better what it does...

commit 11d512e7a8
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Wed Feb 27 21:26:47 2008 +0000

    Added nix-reduce-build. You point it to some path you want to build and it fetches whatever it can from specified computers via nix-copy-closure. NOTE: You do want to set up RSA keys or ssh-agent or something... You really do want it. It will run separate ssh instances insane number of times.

commit 0a84137c45
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 21 12:01:24 2008 +0000

    * checkVarDefs: don't check in closed terms, which don't have
      undefined variables by definition.  This matters for the
      implementation of "with", which does a call to checkVarDefs to see
      if the body of the with has no undefined variables.  (It can't be
      checked at parse time because you don't know which variables are in
      the "with" attribute set.)  If we check closed terms, then we check
      not just the with body but also the substituted terms, which are
      typically very large.  This is the cause of the poor nix-env
      performance on Nixpkgs lately.  It didn't happen earlier because
      "with" wasn't used very often in the past.

      This fix improves nix-env performance roughly 60x on current Nixpkgs.
      nix-env -qa is down from 29.3s to 0.5s on my laptop, and nix-env -qa
      --out-path is down from 229s to 3.39s.  Not bad for a 1-line fix :-)

commit 0ed89c569f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 5 13:38:07 2008 +0000

    * Fix the parsing of

        ''
          '${foo}'
        ''

      where the antiquote should work as expected, instead of giving the
      string "'${foo}'".

commit 4066f450c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 5 13:35:49 2008 +0000

    * Doh.

commit e7bdde981f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 5 13:25:18 2008 +0000

    * Regression test.

commit 66c51dc215
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 29 18:17:36 2008 +0000

    * nix-store --dump-db / --load-db to dump/load the Nix DB.
    * nix-store --register-validity: option to supply the content hash of
      each path.
    * Removed compatibility with Nix <= 0.7 stores.

commit 5b5a3af983
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sun Jan 20 20:44:03 2008 +0000

    Probably fixed __exprToString

commit 5eb5c23447
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Tue Jan 15 04:32:08 2008 +0000

    Fixed exportBuildReferenceGraph

commit 7d0f6aed59
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Jan 4 14:22:49 2008 +0000

    * New primop `unsafeDiscardStringContext' to get rid of string
      contexts.  Needed to prevent unnecessary dependencies when building
      the NixOS manual.

commit 895c953817
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 17:53:59 2007 +0000

    * Bumped the version number to 0.12.

commit d4117859d6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 16:57:12 2007 +0000

commit e0ca671491
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 02:52:17 2007 +0000

    * More documentation.

commit 6bdecfacbb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 01:52:57 2007 +0000

    * Documented a bunch of nix-store commands.

commit 454f571f87
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 01:22:09 2007 +0000

commit 4c82983010
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 01:17:25 2007 +0000

commit f60aa2aa21
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 00:34:44 2007 +0000

commit dedd62dd0c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 31 00:08:09 2007 +0000

    * More release notes.

commit b5ddcf58ad
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 30 23:59:10 2007 +0000

    * Fix the hashDerivationModulo test.  I should really investigate
      *why* the test failed...

commit 59707975a3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 30 23:36:09 2007 +0000

    * Documented indented string literals.
    * Release notes.

commit de012e76e2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 30 23:35:45 2007 +0000

    * Don't use "store expression", it's obsolete.

commit 2196cb67c5
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Sun Dec 30 09:30:56 2007 +0000

    Added a way to include derivation with its outputs and dependencies - exportBuildReferenceGraph

commit df303666bc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 14 14:49:35 2007 +0000

    * Use strsignal if available to give better error messages for
      builders that fail due to a signal.

commit 1e90b4189d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 14 14:15:30 2007 +0000

    * Another insane Mac OS X 10.5 compatibility hack.

commit 485d71c54a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 14 14:08:09 2007 +0000

    * Mac OS X 10.5 compatibility: `echo -n foo' suddenly prints `-n foo'
      instead of `foo' without a newline (with /bin/sh, not /bin/bash,
      even though /bin/sh is also bash...).  So use printf instead.

commit 30e4653783
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 13 22:06:19 2007 +0000

    * Mac OS X 10.5 compatibility.

commit 4ff1335b2e
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Wed Dec 12 02:12:58 2007 +0000

    small udpate

commit 3a2833daff
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Mon Dec 10 22:16:47 2007 +0000

    corrected --help message for nix-store a bit

commit 764b0115d5
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Mon Dec 10 21:17:29 2007 +0000

    Very basic nix vim syntax highlighting

commit b42ef9c054
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 6 10:20:58 2007 +0000

    * Syntax to escape '', ${.

commit d4950f207f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 4 11:42:58 2007 +0000

    * component -> package.

commit 6d6c68c0d2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 30 16:48:45 2007 +0000

    * Added a new kind of multi-line string literal delimited by two
      single quotes.  Example (from NixOS):

        job = ''
          start on network-interfaces

          start script

            rm -f /var/run/opengl-driver
            ${if videoDriver == "nvidia"
              then "ln -sf ${nvidiaDrivers} /var/run/opengl-driver"
              else if cfg.driSupport
              then "ln -sf ${mesa} /var/run/opengl-driver"
              else ""
            }

            rm -f /var/log/slim.log

          end script
        '';

      This style has two big advantages:

      - \, ' and " aren't special, only '' and ${.  So you get a lot less
        escaping in shell scripts / configuration files in Nixpkgs/NixOS.
        The delimiter '' is rare in scripts (and can usually be written as
        "").  ${ is also fairly rare.

        Other delimiters such as <<...>>, {{...}} and <|...|> were also
        considered but this one appears to have the fewest drawbacks
        (thanks Martin).

      - Indentation is intelligently stripped so that multi-line strings
        can follow the nesting structure of the containing Nix
        expression.  E.g. in the example above 6 spaces are stripped from
        the start of each line.  This prevents unnecessary indentation in
        generated files (which sometimes even breaks things).

      See tests/lang/eval-okay-ind-string.nix for some examples.

commit 633518628f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 29 16:18:24 2007 +0000

    * nix-env -e: support uninstalling by path, so that one can say

        $ nix-env -e $(which firefox)

      or

        $ nix-env -e /nix/store/nywzlygrkfcgz7dfmhm5xixlx1l0m60v-pan-0.132

    * nix-env -i: if an argument contains a slash anywhere, treat it as a
      path and follow it through symlinks into the Nix store.  This allows
      things like

        $ nix-build -A firefox
        $ nix-env -i ./result

    * nix-env -q/-i/-e: don't complain when the `*' selector doesn't match
      anything.  In particular, `nix-env -q \*' doesn't fail anymore on an
      empty profile.

commit 12d0a1eb75
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 29 14:15:33 2007 +0000

    * Troubleshooting entry about running out of locks.

commit 06f95dd07c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 21 13:49:59 2007 +0000

    * New primop `readFile' to get the contents of a file as a string.

commit c370755583
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 16 16:15:26 2007 +0000

    * Flag `--no-build-hook' to disable distributed builds.
    * queryDeriver in daemon mode: don't barf if the other side returns an
      empty string (which means there is no deriver).

commit c05783ad67
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 16 16:10:27 2007 +0000

    * nix-store --import: add a flag --require-signature.

commit 6784b14241
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 15 16:52:40 2007 +0000

    * nix-build: pass --argstr to nix-instantiate.

commit ca210d2a58
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 15 15:33:30 2007 +0000

    * Doh!

commit 149e273023
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 15 15:07:27 2007 +0000

    * Don't need gc.hh.

commit bfec245efa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 15 14:28:08 2007 +0000

    * Add build-remote.pl to the Nix distribution.

commit 6fc60e2060
Author: Michael Raskin <7c6f434c@mail.ru>
Date:   Thu Nov 15 03:47:12 2007 +0000

    Added possibility to specify garbage collection levels for store paths; so packages can share intermediate results of compilation and GC will collect it automatically while never touching tarballs, for example.

commit 5b74a59570
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 5 18:12:29 2007 +0000

    * nix-prefetch-url: don't fail if /tmp/nix-prefetch-url-<pid> exists,
      instead use a counter just like we do for temporary build
      directories.

commit 5f8a203b55
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 1 14:42:44 2007 +0000

    * A rule to make a PDF version of the manual.

commit 1511aa11ce
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 1 13:28:33 2007 +0000

    * Documented some of the more obscure derivation attributes (including
      fixed-output derivations).

commit fa44e401a8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 31 18:01:56 2007 +0000

    * Documented multi-user Nix.

commit e007b50eb7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 29 22:16:36 2007 +0000

commit bfea7b1f35
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 29 14:31:45 2007 +0000

    * Make the `--prebuilt-only' / `-b' option work not just for queries
      but installations/upgrades as well.  So `nix-env -ub \*' will
      upgrade only those packages for which a substitute is available (or
      to be precise, it will upgrade each package to the highest version
      for which a substitute is available).

commit 0b95603595
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 29 10:46:45 2007 +0000

    * Depend on bash instead of sh (since we use a few bashisms).

commit 42d80d1170
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 29 10:03:07 2007 +0000

    * On FreeBSD, sys/mount.h needs sys/param.h.

commit d91cd30563
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 27 16:51:55 2007 +0000

    * Detect whether chroot / bind-mount support is available.

commit dc6f373842
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 27 16:06:38 2007 +0000

    * Delete the chroot directory automatically.
    * Removed some debug messages.

commit 9397cd30c8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 27 00:46:59 2007 +0000

    * Support for doing builds in a chroot under Linux.  The builder is
      executed in a chroot that contains just the Nix store, the temporary
      build directory, and a configurable set of additional directories
      (/dev and /proc by default).  This allows a bit more purity
      enforcement: hidden build-time dependencies on directories such as
      /usr or /nix/var/nix/profiles are no longer possible.  As an added
      benefit, accidental network downloads (cf. NIXPKGS-52) are prevented
      as well (because files such as /etc/resolv.conf are not available in
      the chroot).

      However the usefulness of chroots is diminished by the fact that
      many builders depend on /bin/sh, so you need /bin in the list of
      additional directories.  (And then on non-NixOS you need /lib as
      well...)

commit 0b4ed64d29
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 26 18:25:50 2007 +0000

    * "trace" primop: write the trace to standard error.

commit cd08fb3fde
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 24 13:54:06 2007 +0000

commit d423968ba1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 23 16:34:04 2007 +0000

    * Improved introduction (actually copied mostly from the homepage).

commit 612b3e8fa3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 22 15:28:32 2007 +0000

    * Document the new primops in Nix 0.11.

commit 35ac16e75e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 22 12:58:28 2007 +0000

    * Move list of built-in functions to a separate file.

commit 1db187ff69
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 22 12:46:15 2007 +0000

commit f90d85107e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 22 12:05:30 2007 +0000

commit f8ed2e64a5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 22 12:05:18 2007 +0000

commit f529a3be8a
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Mon Oct 22 01:10:19 2007 +0000

    Added comment telling about setup-hook and propagatedBuildInputs

commit 14e47e9c2c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 10 14:58:00 2007 +0000

    * Doh.

commit d04291cfab
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 10 13:52:38 2007 +0000

    * Doh! Don't change the permissions on /nix/store.

commit 315183f194
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Oct 10 13:43:04 2007 +0000

    * nix-store --optimise: flag "--dry-run" to just query what the disk
      savings would be.

commit a8629de827
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 9 22:14:27 2007 +0000

    * New command `nix-store --optimise' to reduce Nix store disk space
      usage by finding identical files in the store and hard-linking them
      to each other.  It typically reduces the size of the store by
      something like 25-35%.  This is what the optimise-store.pl script
      did, but the new command is faster and more correct (it's safe wrt
      garbage collection and concurrent builds).

commit 27a0662828
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 9 12:51:25 2007 +0000

    * listToAttrs: the list now should consist of {name, value} attribute
      sets instead of {attr, value}.  "name" is better than "attr" because
      the *combination* of the two forms the attribute.

commit 8a9fe6c11c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Sep 19 14:01:41 2007 +0000

    * Manpage for nix-copy-closure.

commit 27f57c9018
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 18 14:01:14 2007 +0000

    * Ignore dangling symlinks in ~/.nix-defexpr.

commit f3441e6122
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 18 09:11:20 2007 +0000

    * Pass various options to the worker so that flags like -K or -j work
      in multi-user Nix (NIX-72).
    * Client/worker: exchange a protocol version number for future
      compatibility.

commit 26f981c2e5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 18 08:26:55 2007 +0000

    * Remove garbage.

commit c8ea8a09b8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Sep 17 19:24:07 2007 +0000

    * nix-env -qa: make the "-A" flag do the expected thing, namely follow
      the given attribute path (just as -A does with other option)
      (NIX-83).  So you can now say

      $ nix-env -qa -A nixpkgs_unstable.gnome \*
      atk-1.12.4
      esound-0.2.36
      ...

      to see the packages in the "gnome" attribute in Nixpkgs.

      To *print* the attribute path, you should now use "--attr-path" /
      "-P" (running out of letters...).

commit 055608227f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Sep 17 16:08:24 2007 +0000

    * nix-env: allow ~/.nix-defexpr to be a directory.  If it is, then the
      Nix expressions in that directory are combined into an attribute set
      {file1 = import file1; file2 = import file2; ...}, i.e. each Nix
      expression is an attribute with the file name as the attribute
      name.  Also recurses into directories.

    * nix-env: removed the "--import" (-I) option which set the
      ~/.nix-defexpr symlink.

    * nix-channel: don't use "nix-env --import", instead symlink
      ~/.nix-defexpr/channels.  So finally nix-channel --update doesn't
      override any default Nix expressions but combines with them.

      This means that you can have (say) a local Nixpkgs SVN tree and use
      it as a default for nix-env:

      $ ln -s .../path-to-nixpkgs-tree ~/.nix-defexpr/nixpkgs_svn

      and be subscribed to channels (including Nixpkgs) at the same time.
      (If there is any ambiguity, the -A flag can be used to
      disambiguate, e.g. "nix-env -i -A nixpkgs_svn.pan".)

commit 3339f85447
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 11 13:32:04 2007 +0000

    * Test the impureEnvVars feature.

commit 9441550acb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Sep 4 15:38:09 2007 +0000

    * nix-push / generate-patches: bzip the manifest.

commit 7b20c0ed4b
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Sun Sep 2 10:36:59 2007 +0000

    explanation what happens when passing true / false and null values to derivation builders added

commit 0d65fc08e2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 30 09:50:44 2007 +0000

    * Create the Nix daemon socket in a separate directory
      (/nix/var/nix/daemon-socket).  This allows access to the Nix daemon
      to be restricted by setting the mode/ownership on that directory as
      desired, e.g.

        $ chmod 770 /nix/var/nix/daemon-socket
        $ chown root.wheel /nix/var/nix/daemon-socket

      to allow only users in the wheel group to use Nix.

      Setting the ownership on a socket is much trickier, since the socket
      must be deleted and recreated every time the daemon is started
      (which would require additional Nix configuration file directives to
      specify the mode/ownership, and wouldn't support arbitrary ACLs),
      some BSD variants appear to ignore permissions on sockets, and it's
      not clear whether the umask is respected on every platform when
      creating sockets.

commit cb1c1004cd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 28 16:22:08 2007 +0000

    * When there are multiple substituters, make sure to release the
      lock on the output path after trying each.  Otherwise the
      pathIsLockedByMe() test gets confused.

commit c970b28ba0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 28 11:36:17 2007 +0000

    * Fix a race condition with parallel builds where multiple
      fixed-output derivations or substitutions try to build the same
      store path at the same time.  Locking generally catches this, but
      not between multiple goals in the same process.  This happened
      especially often (actually, only) in the build farm with fetchurl
      downloads of the same file being executed on multiple machines and
      then copied back to the main machine where they would clobber each
      other (NIXBF-13).

      Solution: if a goal notices that the output path is already locked,
      then go to sleep until another goal finishes (hopefully the one
      locking the path) and try again.

commit bc0429b1cd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 28 11:31:44 2007 +0000

    * Doh! Broken test.

commit e0d7e47862
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 28 09:39:03 2007 +0000

    * PathLocks::lockPaths: don't allow reacquiring a lock we already
      hold.

commit 455a7b9577
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 28 09:21:47 2007 +0000

    * Test case to show that parallel builds of different fixed-output
      derivations that produce the same output path don't work properly
      wrt locking.  This happens a lot in the build farm when fetchurl
      derivations downloading the same file on different platforms are
      executed in parallel and then copied back to the main machine.

commit 7d5836b34d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 22 14:52:22 2007 +0000

    * nix-channel: supports users who don't have write permission to the
      manifests directory.  In that case, we don't do a nix-pull, so the
      user gets pure source deployment.

      The directory /nix/var/nix/gcroots/per-user/$USER should be
      writable.  (It's created automatically if
      /nix/var/nix/gcroots/per-user is writable, e.g. if it has 1777
      permission.)

commit 2629998e91
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Sat Aug 18 22:12:00 2007 +0000

    primop functions listToAttrs (+test), __isAttrs, __trace added
    new configuration style proposal in lib/default-unstable.nix

commit dbc0170ed9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Aug 15 09:24:06 2007 +0000

    * Show errors in nix-prefetch-url.

commit 5c793ad03e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 14 13:43:51 2007 +0000

    * Hopefully this fixes the test on FreeBSD.

commit ffa1c61cd5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 14 13:15:59 2007 +0000

    * Fix the tests.

commit a7e1a51fdf
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 13 14:56:40 2007 +0000

    * A test for the nix-worker.

commit 550ba9ebb4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 13 13:15:02 2007 +0000

    * Fix the tests.

commit 3757ee589f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 13 11:37:39 2007 +0000

    * Bump the Nix database schema version number; delete the substitutes
      table.

commit 59afc1a15c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 13 11:15:13 2007 +0000

    * Backwards compatibility.

commit 9e975458b4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Aug 12 00:29:28 2007 +0000

    * Get rid of the substitutes database table (NIX-47).  Instead, if we
      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).

commit 4695f4edd6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 10 01:42:00 2007 +0000

    * nix-pull: support bzipped manifests: when doing a nix-pull on $url,
      try $url.bz2 first.

commit 911bc01454
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 10 00:28:44 2007 +0000

    * Enable nix-prefetch-url caching in nix-channel.

commit 5e52df18fe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Aug 10 00:22:21 2007 +0000

    * Don't rely on /dev/stdin.

commit c5e934dcc9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 9 23:52:53 2007 +0000

    * nix-pull: using nix-prefetch-url (so that we get caching for free),
      and store the manifests in the Nix store.  (So now
      /nix/var/nix/manifests/ just contains symlinks to the store and is
      searched for GC roots.)

commit f881f7a017
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Aug 9 23:16:44 2007 +0000

    * nix-prefetch-url: support caching.  If the environment variable
      NIX_DOWNLOAD_CACHE is set, then nix-prefetch-url will store the hash
      and timestamp of downloaded files in the directory
      $NIX_DOWNLOAD_CACHE.  This allows it to figure out if the file is
      still in the Nix store.

commit ef240bc0d5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 7 23:40:39 2007 +0000

    * Use the new patched version of the aterm library.

commit d71cc503a6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Aug 7 15:00:13 2007 +0000

    * Don't allocate input files on the stack.

commit 4cad125e08
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Aug 6 16:08:09 2007 +0000

    * Optionally warn about packages that give an assertion failure.

commit 6da6fbfbe9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jul 5 20:33:04 2007 +0000

    * Properly keep packages during upgrades.

commit 6d1a1191b0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jun 12 16:53:44 2007 +0000

    * Support queryDeriver() in multi-user installations.

commit 9d9e1c5c41
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 11 13:59:07 2007 +0000

    * Distribute bzip2 1.0.4.

commit 9bff7ad728
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 11 11:36:22 2007 +0000

    * Check against creation of GC roots in the store.  Those roots don't
      work, because findRoots() stops when it encounters a symlink to the
      store.  And of course the store is supposed to be read-only.

commit f3ebd03bb1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jun 4 12:03:33 2007 +0000

    * Remove debug statement.

commit 40b6f06f09
Author: Armijn Hemel <armijn@gpl-violations.org>
Date:   Sat Jun 2 15:03:54 2007 +0000

    change default NIX_HASH_ALGO

commit b47da5ea21
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 16 22:07:39 2007 +0000

commit bddc83a148
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 16 16:17:04 2007 +0000

    * New builtin function "isFunction".  You're not supposed to use it
      ;-)
    * Channels: fix channels that are plain lists of derivations (like
      strategoxt-unstable) instead  of functions (like nixpkgs-unstable).
      This fixes the error message "error: the left-hand side of the
      function call is neither a function nor a primop (built-in
      operation) but a list".

commit ca00aa1171
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 15 12:14:37 2007 +0000

    * Allow empty argument lists in function definitions (e.g., `{}:
      bla').  Also allow trailing commas (`{x, y,}: ...') as a unintented
      consequence.  Hopefully the reduce/reduce conflict won't cause any
      problems.

commit 7046c35843
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon May 14 12:16:41 2007 +0000

    * Typo (reported by Marc Weber).

commit e5da9c8803
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon May 7 16:59:19 2007 +0000

    * Create the database directory if it doesn't exist.

commit 30beeb27a9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 2 19:38:02 2007 +0000

    * Set the right priorities when recovering from a directory
      collision.

commit 34d4c9388b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed May 2 16:06:04 2007 +0000

commit 93aefd9fc0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 1 23:16:38 2007 +0000

    * Give unpacked channels more sensible names than 0, 1, ...  They now
      get the basename of the channel URL (e.g., nixpkgs-unstable).  The
      top-level Nix expression of the channel is now an attribute set, the
      attributes of which are the individual channels (e.g.,
      {nixpkgs_unstable = ...; strategoxt_unstable = ...}).  This makes
      attribute paths ("nix-env -qaA" and "nix-env -iA") more sensible,
      e.g., "nix-env -iA nixpkgs_unstable.subversion".

commit a9d15d4f43
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 1 20:33:18 2007 +0000

    * nix-env -i: instead of breaking package ties by version, break them
      by priority and version install.  That is, if there are multiple
      packages with the same name, then pick the package with the highest
      priority, and only use the version if there are multiple packages
      with the same priority.

      This makes it possible to mark specific versions/variant in Nixpkgs
      more or less desirable than others.  A typical example would be a
      beta version of some package (e.g., "gcc-4.2.0rc1") which should not
      be installed even though it is the highest version, except when it
      is explicitly selected (e.g., "nix-env -i gcc-4.2.0rc1").

    * Idem for nix-env -u, only the semantics are a bit trickier since we
      also need to take into account the priority of the currently
      installed package (we never upgrade to a lower priority, unless
      --always is given).

commit cbfac2fdcc
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 1 15:16:17 2007 +0000

    * Set a terminate() handler to ensure that we leave the BDB
      environment cleanly even when an exception is thrown from a
      destructor.  We still crash, but we don't take all other Nix
      processes with us.

commit 644946feed
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 1 13:21:05 2007 +0000

    * Make --verify more interruptable.

commit bd1f66453a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue May 1 11:30:52 2007 +0000

    * `nix-env -q --xml --meta' to show all meta attributes.

commit e20f0da22c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 30 18:41:27 2007 +0000

    * Doh.

commit 89c1d2b202
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 27 23:48:14 2007 +0000

    * Package flag "keep" that prevents a package from being removed from
      a user environment by an install or upgrade action.  This is
      particularly useful if you have a version installed that you don't
      want to upgrade (e.g., because the newer versions are broken).
      Example:

        $ nix-env -u zapping --dry-run
        (dry run; not doing anything)
        upgrading `zapping-0.9.6' to `zapping-0.10cvs6'

        $ nix-env --set-flag keep true zapping

        $ nix-env -u zapping --dry-run
        (dry run; not doing anything)

      However, "-e" will still uninstall the package.  (Maybe we should
      require the keep flag to be explicitly set to false before it can be
      uninstalled.)

commit a46db5d013
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 27 23:28:44 2007 +0000

    * Package conflict resolution through priority levels.  If there is a
      user environment collission between two packages due to overlapping
      file names, then a package with a higher priority will overwrite the
      symlinks of a package with a lower priority.  E.g.,

        $ nix-env --set-flag priority 5 gcc
        $ nix-env --set-flag priority 10 binutils

      gives gcc a higher priority than binutils (higher number = lower
      priority).

commit 3d05166086
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Apr 27 22:40:59 2007 +0000

    * Allow conflicting packages to be kept in a user environment, and
      allow switching between them (NIX-80).

      Example: two versions of Pan:

        $ nix-env -q pan
        pan-0.128
        pan-0.14.2.91

        $ readlink $(which pan)
        /nix/store/l38jrbilw269drpjkx7kinhrxj6fjh59-pan-0.14.2.91/bin/pan

      At most one of them can be active any given time.  Assuming than
      0.14.2.91 is active, you can active 0.128 as follows:

        $ nix-env --set-flag active false pan-0.14.2.91
        $ nix-env --set-flag active true pan-0.128

        $ readlink $(which pan)
        /nix/store/nziqwnlzy7xl385kglxhg75pfl5i936n-pan-0.128/bin/pan

      More flags to follow.

commit b7f0f65c19
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Apr 26 14:20:31 2007 +0000

    * nix-env -q now has a flag --prebuilt-only (-b<) that causes nix-env
      to show only those derivations whose output is already in the Nix
      store or that can be substituted (i.e., downloaded from somewhere).
      In other words, it shows the packages that can be installed “quickly”,
      i.e., don’t need to be built from source.

commit 5dc05b76ab
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 16 16:08:44 2007 +0000

    * Updated dependency information.

commit 5f2492eaec
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 16 15:03:19 2007 +0000

    * New primop "throw <string>" to throw an error.  This is like abort,
      only thrown errors are caught by the top-level derivation evaluation
      in nix-env -qa / -i.

commit 0a8eeea9d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 16 14:45:25 2007 +0000

    * Remove a warning.

commit 2716f9bc5f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Apr 16 12:00:13 2007 +0000

    * It seems that svnversion prints a carriage return on Cygwin, so we
      get a invalid #define VERSION.  Use "svnversion -n" to leave out the
      newline.  Fix provided by Marc Weber.

commit ae7990cc88
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 30 13:24:35 2007 +0000

    * Work around a bug in Apple's GCC preprocessor.

commit 4caca58ff7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Mar 30 09:01:05 2007 +0000

    * Make the maximum patch size configurable.

commit 17b506c0c7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 28 15:46:21 2007 +0000

    * Handle ECONNRESET from the client.  Also, don't abort() if there are
      unexpected conditions in the SIGPOLL handler, since that messes up
      the Berkeley DB environment (which a client must never be able to
      trigger).

commit efd31139df
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 27 09:53:58 2007 +0000

    * Forgot a @bindir@.

commit d303b389a9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 26 21:05:17 2007 +0000

    * `nix-copy-closure --from': copy from a remote machine instead of to
      a remote machine.

commit 7edd2e2cd2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 26 20:49:22 2007 +0000

    * Refactoring.

commit f3584ff535
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 21 12:39:55 2007 +0000

    * Fix URL/description.

commit 803cb6e3b9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 20 22:04:25 2007 +0000

    * Override the setuid helper using NIX_SETUID_HELPER.

commit a8ea4cbcc8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 20 11:13:15 2007 +0000

    * Scan /proc/sys/kernel/modprobe for roots to prevent the kernel
      modules for the running kernel from being garbage-collected.  Idem
      for /proc/sys/kernel/fbsplash.

commit 8ab229ddf2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 19 12:48:45 2007 +0000

    * Terminate build hooks and substitutes with a TERM signal, not a KILL
      signal.  This is necessary because those processes may have joined
      the BDB environment, so they have to be given a chance to clean up.
      (NIX-85)

commit b2b6cf3fc8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Mar 19 09:16:47 2007 +0000

    * Undocumented option `gc-check-reachability' to allow reachability
      checking to be turned off on machines with way too many roots.

commit eb2dd4815c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Mar 13 11:30:57 2007 +0000

    * Remove old generations in all directories under
      /nix/var/nix/profiles, not just in that directory itself.  (NixOS
      puts profiles in /nix/var/nix/profiles/per-user.)

commit 917e06bf63
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Mar 7 15:53:11 2007 +0000

    * Delete the output paths before invoking the build hook.

commit df0283ae86
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 1 13:55:47 2007 +0000

    * Get rid of those stupid --login tricks, it's the responsibility of
      the remote system to make sure that Nix is in the $PATH.

commit 30394a4f3f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 1 13:49:20 2007 +0000

    * sh -> bash.

commit db1973d012
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 1 13:30:46 2007 +0000

    * Look for the openssl program at compile time.  If not found, call
      openssl through $PATH at runtime.

commit b4a040e52b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Mar 1 12:30:24 2007 +0000

    * Don't check the signature unless we have to.

commit 2ea3bebc23
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 27 23:18:57 2007 +0000

    * Doh!  The deriver can be empty.

commit 044b6482c1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 27 19:10:45 2007 +0000

    * Greatly reduced the amount of stack space used by the Nix expression
      evaluator.  This was important because the NixOS expressions started
      to hit 2 MB default stack size on Linux.

      GCC is really dumb about stack space: it just adds up all the local
      variables and temporaries of every scope into one huge stack frame.
      This is really bad for deeply recursive functions.  For instance,
      every `throw Error(format("error message"))' causes a format object
      of a few hundred bytes to be allocated on the stack.  As a result,
      every recursive call to evalExpr2() consumed 4680 bytes.  By
      splitting evalExpr2() and by moving the exception-throwing code out
      of the main functions, evalExpr2() now only consumes 40 bytes.
      Similar for evalExpr().

commit adce01a8d0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 27 17:28:51 2007 +0000

    * When NIX_SHOW_STATS=1, show the amount of stack space consumed by
      the Nix expression evaluator.

commit 363e307fd3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 26 23:32:10 2007 +0000

    * Error message to stdout.

commit ddde8e2f32
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 22 18:15:29 2007 +0000

    * Handle EINTR in select().

commit 27bb0ac7d2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 22 17:00:58 2007 +0000

    * /man -> /share/man

commit fa2be32034
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 22 16:42:01 2007 +0000

    * nix-copy-closure: force a login shell on the remote machine to make
      sure that nix-store is in the PATH.
    * nix-copy-closure: option --gzip to compress data.

commit 4c5e6d1a2f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Feb 22 15:48:20 2007 +0000

    * nix-copy-closure: option --sign.
    * nix-copy-closure: set SSH options through NIX_SSHOPTS..

commit 024a8ed382
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 23:14:53 2007 +0000

    * New command `nix-copy-closure' to copy a closure to a Nix store on
      another machine through ssh.  E.g.,

        $ nix-copy-closure xyzzy $(which svn)

      copies the closure of Subversion to machine `xyzzy'.  This is like
      `nix-pack-closure $(which svn) | ssh xyzzy', but it's much more
      efficient since it only copies those paths that are missing on the
      target machine.

commit 7f6161ab3a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 23:08:55 2007 +0000

    * Flush cout to show progress.

commit 0db450024d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 23:00:31 2007 +0000

    * Export/import many paths in one go.

commit 9da367b7d5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 22:45:10 2007 +0000

    * `nix-store -qR' and friends: print the paths sorted topologically
      under the references relation.  This is useful for commands that
      want to copy paths to another Nix store in the right order.

commit 881feb9698
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 17:57:59 2007 +0000

    * Flag `--print-invalid' in `nix-store --check-validity' to print out
      which paths specified on the command line are invalid (i.e., don't
      barf when encountering an invalid path, just print it).  This is
      useful for build-remote.pl to figure out which paths need to be
      copied to a remote machine.  (Currently we use rsync, but that's
      rather inefficient.)

commit 65f195f4c7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 17:51:10 2007 +0000

    * Check that the file containing the secret key is secret.

commit bdadb98de8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 17:34:02 2007 +0000

    * `nix-store --import' now also works in remote mode.  The worker
      always requires a signature on the archive.  This is to ensure that
      unprivileged users cannot add Trojan horses to the Nix store.

commit 0f5da8a83c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 16:34:00 2007 +0000

    * Support exportPath() in remote mode.

commit dc7d594776
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 16:23:25 2007 +0000

    * importPath(): set the deriver.
    * exportPath(): lock the path, use a transaction.

commit 43c4d18c6a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 15:45:32 2007 +0000

    * `nix-store --import': import an archive created by `nix-store
      --export' into the Nix store, and optionally check the cryptographic
      signatures against /nix/etc/nix/signing-key.pub.  (TODO: verify
      against a set of public keys.)

commit 46e0919ced
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 14:31:42 2007 +0000

    * `nix-store --export --sign': sign the Nix archive using the RSA key
      in /nix/etc/nix/signing-key.sec

commit 6c9fdb17fb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Feb 21 14:00:46 2007 +0000

    * Don't use $SHELL.

commit b824a1daee
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 20 23:17:20 2007 +0000

    * Start of `nix-store --export' operation for serialising a store
      path.  This is like `nix-store --dump', only it also dumps the
      meta-information of the store path (references, deriver).  Will add
      a `--sign' flag later to add a cryptographic signature, which we
      will use for exchanging store paths between build farm machines in a
      secure manner.

commit 3390c1be76
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 20 22:57:46 2007 +0000

    * Temporary notes on how we're going to use OpenSSL.

commit 8181a1c3bb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 20 22:49:08 2007 +0000

    * Close the file - just in case.

commit 46605fb4f5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Feb 6 20:03:53 2007 +0000

    * Fix 64-bit compiler warnings.

commit 52d03276dd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Feb 5 12:10:10 2007 +0000

    * Compatibility with docbook5-xsl.

commit 451dbf687f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Feb 2 01:52:42 2007 +0000

    * nix-env now maintains meta info (from the `meta' derivation
      attribute) about installed packages in user environments.  Thus, an
      operation like `nix-env -q --description' shows useful information
      not only on available packages but also on installed packages.

    * nix-env now passes the entire manifest as an argument to the Nix
      expression of the user environment builder (not just a list of
      paths), so that in particular the user environment builder has
      access to the meta attributes.

    * New operation `--set-flag' in nix-env to change meta info of
      installed packages.  This will be useful to pass per-package
      policies to the user environment builder (e.g., how to resolve
      collision or whether to disable a package (NIX-80)) or upgrade
      policies in nix-env (e.g., that a package should be "masked", that
      is, left untouched by upgrade actions).  Example:

      $ nix-env --set-flag enabled false ghc-6.4

commit f52de527c7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 15:55:49 2007 +0000

    * Doh!

commit b618fa6eb6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 15:51:37 2007 +0000

    * computeStorePathForText: take the references into account when
      computing the store path (NIX-77).  This is an important security
      property in multi-user Nix stores.

      Note that this changes the store paths of derivations (since the
      derivation aterms are added using addTextToStore), but not most
      outputs (unless they use builtins.toFile).

commit c558b1583c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 15:15:37 2007 +0000

    * Don't capitalise the primop functions.

commit 18e6096105
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 15:11:32 2007 +0000

    * Organise primops.cc a bit better.

commit 7349bd0176
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 14:23:09 2007 +0000

    New primitives:
    * `sub' to subtract two numbers.
    * `stringLength' to get the length of a string.
    * `substring' to get a substring of a string.  These should be enough
      to allow most string operations to be expressed.

commit 7dedbd896a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 29 13:32:50 2007 +0000

    * filterSource: pass strings to the predicate function instead of
      paths.  Paths can have unexpected semantics.

commit 84a84afb0e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Jan 24 13:31:20 2007 +0000

    * Nasty: Glibc clears the TMPDIR environment variable in setuid
      programs, so if a builder uses TMPDIR, then it will fail when
      executed through nix-setuid-helper.  In fact Glibc clears a whole
      bunch of variables (see sysdeps/generic/unsecvars.h in the Glibc
      sources), but only TMPDIR should matter in practice.  As a
      workaround, we reinitialise TMPDIR from NIX_BUILD_TOP.

commit fac63d6416
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 23 16:57:43 2007 +0000

    * exportReferencesGraph: work on paths within store paths as well.

commit bae75ca5a1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 23 16:50:19 2007 +0000

    * New kind of manifest object: "localPath", which denotes that a store
      path can be created by copying it from another location in the file
      system.  This is useful in the NixOS installation.

commit 36d9258c0d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Jan 23 16:05:59 2007 +0000

    * Successors have been gone for ages.

commit 7bc30e1ca8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 22 09:53:36 2007 +0000

    * nix-prefetch-url: change the default hash to SHA-256 (in base-32).

commit 71ceb1c161
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 15 14:50:25 2007 +0000

    * Handle multiple indirect symlinks when loading a Nix expression.

commit e4b0666f8e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 15 08:54:51 2007 +0000

    * builtins.filterSource: pass the type of the file ("regular",
      "directory", "symlink") as the second argument to the filter
      predicate.

commit 63f3ce6d9a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jan 14 17:28:30 2007 +0000

    * `nix-store --verify': revive checking the referrers table.  This is
      important to get garbage collection to work if there is any
      inconsistency in the database (because the referrer table is used to
      determine whether it is safe to delete a path).
    * `nix-store --verify': show some progress.

commit 8f67b35886
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jan 14 16:24:49 2007 +0000

    * Make the garbage collector more resilient to certain consistency
      errors: in-use paths now cause a warning, not a fatal error.

commit 8659edc098
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jan 14 12:33:04 2007 +0000

    * Don't forget the .flags files.

commit e418976107
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jan 14 12:32:44 2007 +0000

    * Option --argstr for passing string arguments easily. (NIX-75)

commit 4e329f173f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Jan 14 12:16:58 2007 +0000

    * Doh.

commit afe23b5f38
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 19:50:42 2007 +0000

    * nix-pack-closure: store the top-level store paths in the closure.
    * nix-unpack-closure: extract the top-level paths from the closure and
      print them on stdout.  This allows them to be installed, e.g.,
      "nix-env -i $(nix-unpack-closure)".  (NIX-64)

commit f25f900045
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 18:25:30 2007 +0000

    * Allow multiple --attr / -A arguments in nix-build / nix-instantiate
      (NIX-74).

commit 215505bb46
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 17:54:01 2007 +0000

    * Removed chroot support.

commit f23dcdd603
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 16:17:07 2007 +0000

    * Canonicalise ASTs in `nix-instantiate --eval': remove position
      info, sort attribute sets.

commit 05879db628
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 15:41:54 2007 +0000

    * Memoize strict evaluation.

commit 5011588459
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 15:11:10 2007 +0000

    * printTermAsXML: treat derivations specially; emit an element
      <derivation outPath=... drvPath=...> attrs </derivation>.  Only emit
      the attributes of any specific derivation only.  This prevents
      exponententially large XML output due to the absense of sharing.

commit 792878af91
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 14:48:41 2007 +0000

    * Make printing an expression as XML interruptible.

commit 11158028be
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Jan 13 14:21:49 2007 +0000

    * Cleanup.

commit 1b7840b949
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 11 19:28:28 2007 +0000

commit 69c8b5b8a7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Jan 11 16:19:45 2007 +0000

    * Install generate-patches into libexec.

commit 1f3722bd4a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 8 15:32:15 2007 +0000

    * Reject patches that are larger than a certain fraction of the full archive
      (currently 60%).  Large patches aren't very economical.

commit 50bdec410a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Jan 8 15:17:18 2007 +0000

    * Huge speedup in patch propagation (20 minutes or so to 3 seconds).

commit 4c63f9fe04
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 29 22:23:51 2006 +0000

    * Another great success.

commit 57969b95b3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 29 20:37:55 2006 +0000

    * Testing 1 2 3.

commit cafaceb707
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 15 21:27:26 2006 +0000

    * Handle weird cases when the server redirects us while setting a cookie.

commit 1073b1780a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 13 14:29:05 2006 +0000

    * Remove debug message.

commit a3e6415ba8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 12 23:05:01 2006 +0000

    * New primop builtins.filterSource, which can be used to filter files
      from a source directory.  All files for which a predicate function
      returns true are copied to the store.  Typical example is to leave
      out the .svn directory:

        stdenv.mkDerivation {
          ...
          src = builtins.filterSource
            (path: baseNameOf (toString path) != ".svn")
            ./source-dir;
          # as opposed to
          #   src = ./source-dir;
        }

      This is important because the .svn directory influences the hash in
      a rather unpredictable and variable way.

commit b438d37558
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 12 21:51:02 2006 +0000

    * In dumpPath(): pass a function object that allows files to be
      selectively in/excluded from the dump.

commit 3130f1f0fa
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 12 20:17:14 2006 +0000

    * Push.

commit 7ace29dae7
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 12 19:06:02 2006 +0000

    * New operation `nix-env --set' which sets a user environment to a
      single derivation specified by the argument.  This is useful when we
      want to have a profile for a single derivation, such as a server
      configuration.  Then we can just say (e.g.)

      $ nix-env -p /.../server-profile -f server.nix --set -A server

      We can't do queries or upgrades on such a profile, but we can do
      rollbacks.  The advantage over -i is that we don't have to worry
      about other packages having been installed in the profile
      previously; --set gets rid of them.

commit 1a7e88bbd9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 12 16:14:31 2006 +0000

    * New built-in function `builtins.attrNames' that returns the
      names of the attributes in an attribute set.

commit 5e6699188f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 9 23:14:55 2006 +0000

commit b17677462c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 9 20:02:27 2006 +0000

    * Use lchown() instead of chown() in canonicalisePathMetaData().  This
      matters when running as root, since then we don't use the setuid
      helper (which already used lchown()).

    * Also check for an obscure security problem on platforms that don't
      have lchown.  Then we can't change the ownership of symlinks, which
      doesn't matter *except* when the containing directory is writable by
      the owner (which is the case with the top-level Nix store directory).

commit 5f681988f2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 9 00:26:24 2006 +0000

    * Use deletePathWrapped() in more places.

commit fa33303146
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 8 18:41:48 2006 +0000

    * Goal cancellation inside the waitForInput() loop needs to be handled
      very carefully, since it can invalidate iterators into the
      `children' map.

commit 06c4929958
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 8 17:26:21 2006 +0000

    * Some refactoring.
    * Throw more exceptions as BuildErrors instead of Errors.  This
      matters when --keep-going is turned on.  (A BuildError is caught
      and terminates the goal in question, an Error terminates the
      program.)

commit 9dbfe242e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 8 15:44:00 2006 +0000

    * Kill a build if it has gone for more than a certain number of
      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.

commit d3fe6ab024
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 8 00:19:50 2006 +0000

    * Also for convenience, change the ownership of the build output even
      in case of failure.

commit 096194ab29
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 23:58:36 2006 +0000

    * Remove ancient terminology.

commit 6833e8bbe8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 23:27:40 2006 +0000

    * When keeping the temporary build directory (-K), change the owner
      back to the Nix account.

commit e24d0201c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 22:07:05 2006 +0000

    * Doh!

commit 2819eb36a4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 21:43:35 2006 +0000

    * Be less verbose.

commit 4ca01065c3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 20:47:30 2006 +0000

    * Rename all those main.cc files.

commit d03f0d4117
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 18:51:11 2006 +0000

    * Check for lchown.

commit c3286ec020
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 17:52:58 2006 +0000

    * Don't count on the Pid deconstructor to kill the child process,
      since if we're running a build user in non-root mode, we can't.  Let
      the setuid helper do it.

commit a82d80ddeb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 16:40:41 2006 +0000

    * Move setuidCleanup() to libutil.

commit f76fdb6d42
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 16:33:31 2006 +0000

    * If not running as root, let the setuid helper kill the build user's
      processes before and after the build.

commit ec23ecc64d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 15:54:52 2006 +0000

    * In the garbage collector, if deleting a path fails, try to fix its
      ownership, then try again.

commit a0a43c3206
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 15:18:14 2006 +0000

    * When not running as root, call the setuid helper to change the
      ownership of the build result after the build.

commit 6a07ff1ec0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 14:14:35 2006 +0000

    * Change the ownership of store paths to the Nix account before
      deleting them using the setuid helper.

commit 7d8cf316ee
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 11:27:32 2006 +0000

    * Pass the actual build user to the setuid helper.

commit a45c498e4e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 00:42:30 2006 +0000

    * If Nix is not running as root, call the setuid helper to start the
      builder under the desired build user.

commit 813a7c65c9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 00:19:27 2006 +0000

    * Sanity check.

commit 6a8e60913a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Dec 7 00:16:07 2006 +0000

    * Move killUser() to libutil so that the setuid helper can use it.

commit 79875c5e42
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 23:52:25 2006 +0000

    * Change the ownership of the current directory to the build user.

commit 62ab131412
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 23:15:26 2006 +0000

    * Verify that the desired target user is in the build users group (as
      specified in the setuid config file).

commit f07ac41656
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 22:45:41 2006 +0000

    * Check that the caller is allowed to call the setuid helper.  The
      allowed uid is specified in a configuration file in
      /etc/nix-setuid.conf.

commit 173d328351
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 20:19:25 2006 +0000

    * Urgh.

commit ef281b93c2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 20:18:29 2006 +0000

    * Fix the safety check.

commit a14d491f09
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 20:16:28 2006 +0000

    * Oops.

commit 6e5ec1029a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 20:00:15 2006 +0000

    * Get rid of `build-users'.  We'll just take all the members of
      `build-users-group'.  This makes configuration easier: you can just
      add users in /etc/group.

commit 751f6d2157
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 17:29:10 2006 +0000

    * nix-setuid-helper: allow running programs under a different uid.

commit 9f0efa6611
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Dec 6 01:24:02 2006 +0000

    * Start of the setuid helper (the program that performs the operations
      that have to be done as root: running builders under different uids,
      changing ownership of build results, and deleting paths in the store
      with the wrong ownership).

commit 2b558843a2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 19:01:19 2006 +0000

    * Be less chatty.

commit 44cad9630f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 18:28:15 2006 +0000

    * Urgh.  Do setgid() before setuid(), because the semantics of setgid()
      changes completely depending on whether you're root...

commit 6f0d050324
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 18:21:16 2006 +0000

    * Tricky: child processes should not send data to the client since
      that might mess up the protocol.  And besides, the socket file
      descriptor is probably closed.

commit 4c1c37d0b6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 18:07:46 2006 +0000

    * FreeBSD returns ESRCH when there are no processes to kill.

commit 8d1854c3f1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 17:44:19 2006 +0000

    * Oops!  In daemon mode, we can't run as root either if build-users is empty.

commit 99655245ae
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 17:21:42 2006 +0000

    * Use an explicit handler for SIGCHLD, since SIG_IGN doesn't do the
      right thing on FreeBSD 4 (it leaves zombies).

commit 62b0497c0f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 16:17:01 2006 +0000

    * Better message.

commit c808e6252f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 15:36:31 2006 +0000

    * Ugly hack to handle spurious SIGPOLLs.

commit fd4a9db91f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 14:15:51 2006 +0000

    * Some renaming.

commit fc1c20d11b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 13:57:35 2006 +0000

    * Redundant.

commit a9c4f66cfb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 02:18:46 2006 +0000

    * Allow unprivileged users to run the garbage collector and to do
      `nix-store --delete'.  But unprivileged users are not allowed to
      ignore liveness.
    * `nix-store --delete --ignore-liveness': ignore the runtime roots as
      well.

commit 29cf434a35
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 01:31:45 2006 +0000

    * The determination of the root set should be made by the privileged
      process, so forward the operation.
    * Spam the user about GC misconfigurations (NIX-71).
    * findRoots: skip all roots that are unreadable - the warnings with
      which we spam the user should be enough.

commit 8623256f48
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 00:48:36 2006 +0000

    * findRoots: return a map from the symlink (outside of the store) to
      the store path (inside the store).

commit d27a73b1a9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Dec 5 00:34:42 2006 +0000

    * In addPermRoot, check that the root that we just registered can be
      found by the garbage collector.  This addresses NIX-71 and is a
      particular concern in multi-user stores.

commit 74033a844f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 23:29:16 2006 +0000

    * Add indirect root registration to the protocol so that unprivileged
      processes can register indirect roots.  Of course, there is still
      the problem that the garbage collector can only read the targets of
      the indirect roots when it's running as root...

commit 0d40f6d7bb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 22:58:44 2006 +0000

    * Not every OS knows about SIGPOLL.

commit 7751160e9f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 19:10:23 2006 +0000

    * Don't redirect stderr.

commit 40c3529909
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 17:55:14 2006 +0000

    * Handle exceptions and stderr for all protocol functions.
    * SIGIO -> SIGPOLL (POSIX calls it that).
    * Use sigaction instead of signal to register the SIGPOLL handler.
      Sigaction is better defined, and a handler registered with signal
      appears not to interrupt fcntl(..., F_SETLKW, ...), which is bad.

commit 0130ef88ea
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 17:17:13 2006 +0000

    * Daemon mode (`nix-worker --daemon').  Clients connect to the server
      via the Unix domain socket in /nix/var/nix/daemon.socket.  The
      server forks a worker process per connection.
    * readString(): use the heap, not the stack.
    * Some protocol fixes.

commit 4740baf3a6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 14:21:39 2006 +0000

    * When NIX_REMOTE=daemon, connect to /nix/var/nix/daemon.socket
      instead of forking a worker.

commit f5f0cf423f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 13:28:14 2006 +0000

    * Refactoring.

commit 052b6fb149
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 13:15:29 2006 +0000

    * Pass the verbosity level to the worker.

commit 1e16d20655
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Dec 4 13:09:16 2006 +0000

    * Install the worker in bindir, not libexecdir.
    * Allow the worker path to be overriden through the NIX_WORKER
      environment variable.

commit 9322b399f3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 20:41:22 2006 +0000

    * Doh.

commit f4279bcde0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 16:25:19 2006 +0000

    * Don't run setuid root when build-users is empty.
    * Send startup errors to the client.

commit 35247c4c9f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 15:32:38 2006 +0000

    * Removed `build-allow-root'.
    * Added `build-users-group', the group under which builds are to be
      performed.
    * Check that /nix/store has 1775 permission and is owner by the
      build-users-group.

commit 84d6459bd5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 14:32:22 2006 +0000

    * Use setreuid if setresuid is not available.

commit a9f9241054
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 03:16:27 2006 +0000

    * Handle a subtle race condition: the client closing the socket
      between the last worker read/write and the enabling of the signal
      handler.

commit 3ed9e4ad9b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 03:03:36 2006 +0000

    * Some hardcore magic to handle asynchronous client disconnects.
      The problem is that when we kill the client while the worker is
      building, and the builder is not writing anything to stderr, then
      the worker never notice that the socket is closed on the other side,
      so it just continues indefinitely.  The solution is to catch SIGIO,
      which is sent when the far side of the socket closes, and simulate
      an normal interruption.  Of course, SIGIO is also sent every time
      the client sends data over the socket, so we only enable the signal
      handler when we're not expecting any data...

commit 4251f94b32
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 02:36:44 2006 +0000

    * Use a Unix domain socket instead of pipes.

commit 8c76df93e6
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 02:22:04 2006 +0000

    * Better error message if the worker doesn't start.

commit 363f40022f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 02:12:26 2006 +0000

    * Pid::kill() should be interruptable.

commit 7951c3c546
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 02:08:13 2006 +0000

    * Some hackery to propagate the worker's stderr and exceptions to the
      client.

commit 714fa24cfb
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sun Dec 3 00:52:27 2006 +0000

    * Run the worker in a separate session to prevent terminal signals
      from interfering.

commit e25fad691a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 16:41:36 2006 +0000

    * Move addTempRoot() to the store API, and add another function
      syncWithGC() to allow clients to register GC roots without needing
      write access to the global roots directory or the GC lock.

commit 30bf547f4f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 15:46:17 2006 +0000

    * Doh.

commit 536595b072
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 15:45:51 2006 +0000

    * Remove most of the old setuid code.
    * Much simpler setuid code for the worker in slave mode.

commit 9c9cdb06d0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 14:34:14 2006 +0000

    * Remove SwitchToOriginalUser, we're not going to need it anymore.

commit 626f8ee42f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 14:33:39 2006 +0000

    * Clear NIX_REMOTE in the tests.

commit 8ba5d32769
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Dec 2 14:27:24 2006 +0000

    * Remove queryPathHash().
    * Help for nix-worker.

commit fcd9900d74
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 1 21:00:39 2006 +0000

    * Replace read-only calls to addTextToStore.

commit a824d58b56
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 1 20:51:18 2006 +0000

    * Merge addToStore and addToStoreFixed.
    * addToStore now adds unconditionally, it doesn't use readOnlyMode.
      Read-only operation is up to the caller (who can call
      computeStorePathForPath).

commit ceb982a1be
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 1 18:02:05 2006 +0000

    * Right name.

commit b0d8e05be1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Dec 1 18:00:01 2006 +0000

    * More operations.
    * addToStore() and friends: don't do a round-trip to the worker if
      we're only interested in the path (i.e., in read-only mode).

commit 0565b5f2b3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 22:43:55 2006 +0000

    * More remote operations.
    * Added new operation hasSubstitutes(), which is more efficient than
      querySubstitutes().size() > 0.

commit aac547a8b3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 21:32:46 2006 +0000

    * Doh.

commit 0263279071
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 20:45:20 2006 +0000

    * More operations.

commit a711689368
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 20:13:59 2006 +0000

    * First remote operation: isValidPath().

commit 765bdfe542
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 19:54:43 2006 +0000

    * When NIX_REMOTE is set to "slave", fork off nix-worker in slave
      mode.  Presumably nix-worker would be setuid to the Nix store user.
      The worker performs all operations on the Nix store and database, so
      the caller can be completely unprivileged.

      This is already much more secure than the old setuid scheme, since
      the worker doesn't need to do Nix expression evaluation and so on.
      Most importantly, this means that it doesn't need to access any user
      files, with all resulting security risks; it only performs pure
      store operations.

      Once this works, it is easy to move to a daemon model that forks off
      a worker for connections established through a Unix domain socket.
      That would be even more secure.

commit 40b3f64b55
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 19:19:59 2006 +0000

    * Skeleton of the privileged worker program.
    * Some refactoring: put the NAR archive integer/string serialisation
      code in a separate file so it can be reused by the worker protocol
      implementation.

commit 9adc074dc3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 18:35:50 2006 +0000

    * Oops.

commit 9cf1948993
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 18:35:36 2006 +0000

    * Skeleton of remote store implementation.

commit 6ecb840fd1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 18:02:04 2006 +0000

    * Put building in the store API.

commit e2ef5e07fd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 17:43:04 2006 +0000

    * Refactoring.  There is now an abstract interface class StoreAPI
      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.

commit 5f0b9de6d8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 15:06:46 2006 +0000

    * Benchmarking Unix domain sockets.

commit fe15f991e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Nov 30 11:24:10 2006 +0000

    * Troubleshooting information on fixing a b0rked Berkeley DB database.

commit 80b742dd52
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 29 22:07:49 2006 +0000

    * Don't spam.

commit 92417600a1
Author: Roy van den Broek <rbroek@cs.uu.nl>
Date:   Wed Nov 29 21:58:09 2006 +0000

    * Example script to set permissions for setuid operation.

commit 71e867c5f5
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Wed Nov 29 21:06:58 2006 +0000

    * Remove --enable-setuid, --with-nix-user and --with-nix-group.
      Rather, setuid support is now always compiled in (at least on
      platforms that have the setresuid system call, e.g., Linux and
      FreeBSD), but it must enabled by chowning/chmodding the Nix
      binaries.

commit c6a97e3b74
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 24 20:24:14 2006 +0000

    * Doh!  Path sizes need to be computed recursively of course.
      (NIX-70)

commit a76efaeb3f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 24 20:07:30 2006 +0000

    * Dead files.

commit d941186289
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Nov 18 19:03:45 2006 +0000

    * Show more progress.

commit 0541ddc7e3
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Nov 18 18:56:30 2006 +0000

    * Turn off synchronisation between C and C++ I/O functions.  This
      gives a huge speedup in operations that read or write from standard
      input/output.  (So libstdc++'s I/O isn't that bad, you just have to
      call std::ios::sync_with_stdio(false).)  For instance, `nix-store
      --register-substitutes' went from 1.4 seconds to 0.1 seconds on a
      certain input.  Another victory for Valgrind.

commit 471749ca7e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 14 19:18:52 2006 +0000

    * Grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...

commit 17d18b1a9c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 14 19:11:36 2006 +0000

    * Doh!

commit 0ddaee756e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 14 19:08:46 2006 +0000

    * Doh.

commit bce9ff7ece
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 14 15:36:27 2006 +0000

    * Use the patched ATerm library.

commit 745e354b19
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 14 10:23:21 2006 +0000

    * Push.

commit f459a5bb3a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 13 18:19:05 2006 +0000

    * Remove the undocumented `noscan' feature.  It's no longer necessary
      now that reference scanning is sufficiently streamy.

commit e2a70b7ec0
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 13 18:18:13 2006 +0000

    * Magic attribute `exportReferencesGraph' that allows the references
      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).

commit e40d4a5604
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 13 16:48:27 2006 +0000

    * Option `--reregister' in `nix-store --register-validity'.  We need
      this in the NixOS installer (or in the buildfarm) to ensure that the
      cryptographic hash of the path contents still matches the actual
      contents.

commit e790404318
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Nov 13 14:54:18 2006 +0000

    * Don't use the result of `uname -p' on x86_64 as it gives wacky
      results on some machines. (NIX-69)

commit 983c5e3fce
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Nov 7 14:51:28 2006 +0000

    * Fix the locking patch for Berkeley DB 4.5.

commit 7e85a2af5f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Nov 3 16:17:39 2006 +0000

    * Fix importing of derivation outputs.

commit b3f916995a
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 31 18:45:17 2006 +0000

    * Oops, `nix-build --no-out-link' was broken.

commit 005eecfc4d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 30 16:29:05 2006 +0000

    * Release notes.

commit 8478cd260f
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 30 11:56:09 2006 +0000

    * readFile: don't overflow the stack on large files.

commit 8d17265ac4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 28 22:07:09 2006 +0000

    * Don't use EPSV.

commit ae6fb27f18
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Sat Oct 28 16:33:54 2006 +0000

    * `nix-store --read-log / -l PATH' shows the build log of PATH, if
      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.

commit 99b0ea7c67
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 26 23:06:47 2006 +0000

    * Typo reported by Arie Middelkoop.
    * Left out close-quote in example.

commit dd300fb48d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 23 16:45:19 2006 +0000

    * Some better error messages.

commit 1d694eef4c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 19:20:18 2006 +0000

    * Require Perl 5.8.0 or newer.  I mean, it *is* more than four years
      old...

commit 7a4497d98c
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 17:44:51 2006 +0000

    * Checks for allowedReferences and some other features.
    * Use nix-build in a test.

commit 17f4883bfe
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 17:43:58 2006 +0000

    * Better message.

commit 9bd93f7606
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 17:39:02 2006 +0000

    * toFile: maintain the references.

commit b3d3700e11
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 17:30:09 2006 +0000

    * nix-build: check the exit status of `nix-store -r'.

commit 6a67556f71
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Thu Oct 19 16:09:24 2006 +0000

    * Special derivation attribute `allowedReferences' that causes Nix to
      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.

commit daa8f85fcd
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 14:13:15 2006 +0000

    * Backwards compatibility hack for user environments made by Nix <= 0.10.

commit 24737f279e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 14:01:45 2006 +0000

    * Backwards compatibility with old user environment manifests.

commit 4bd5cdb90b
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 14:01:28 2006 +0000

    * Print out the offending path.

commit 58ff6939f4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 12:58:42 2006 +0000

    * An awful backwards compatibility hack.

commit 3059df0f1e
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 12:34:13 2006 +0000

    * baseNameOf: paths don't have to be absolute.

commit 822dba2210
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 12:15:15 2006 +0000

    * Maintain the references for the user environment properly.

commit dfc042a0c1
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 11:16:02 2006 +0000

    * Another test.

commit 9e30694f98
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 11:08:59 2006 +0000

    * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and
      the semantic changes.

commit be1961c9f8
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 11:07:11 2006 +0000

    * toPath: should be the identity on paths.

commit cba913c521
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 11:05:34 2006 +0000

    * dirOf: return a path if the argument is a path.

commit cf705eaf78
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 10:58:12 2006 +0000

    * toString: don't copy paths.  So toString can be used to pass
      non-store paths to a builder.

commit 7de5fe2fc2
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 10:57:25 2006 +0000

    * Do the path check on the normal form.

commit 46b631b6c4
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Tue Oct 17 10:15:42 2006 +0000

    * Don't generate an empty drvPath attribute in the manifest.

commit d7efd76394
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Mon Oct 16 15:55:34 2006 +0000

    * Big cleanup of the semantics of paths, strings, contexts, string
      concatenation and string coercion.  This was a big mess (see
      e.g. NIX-67).  Contexts are now folded into strings, so that they
      don't cause evaluation errors when they're not expected.  The
      semantics of paths has been clarified (see nixexpr-ast.def).
      toString() and coerceToString() have been merged.

      Semantic change: paths are now copied to the store when they're in a
      concatenation (and in most other situations - that's the
      formalisation of the meaning of a path).  So

        "foo " + ./bla

      evaluates to "foo /nix/store/hash...-bla", not "foo
      /path/to/current-dir/bla".  This prevents accidental impurities, and
      is more consistent with the treatment of derivation outputs, e.g.,
      `"foo " + bla' where `bla' is a derivation.  (Here `bla' would be
      replaced by the output path of `bla'.)

commit 4c9aa821b9
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 13 14:08:14 2006 +0000

    * Fix version.

commit 142863a89d
Author: Eelco Dolstra <e.dolstra@tudelft.nl>
Date:   Fri Oct 13 12:11:30 2006 +0000

    * Use Berkeley DB 4.5.

commit