Commit graph

  • 1ecc97b6bd * Add a Nix expression search path feature. Paths between angle brackets, e.g. Eelco Dolstra 2011-08-06 16:05:24 +0000
  • 54945a2950 * Refactoring: move parseExprFromFile() and parseExprFromString() into the EvalState class. Eelco Dolstra 2011-08-06 13:02:55 +0000
  • c8606664ab * Don't allow derivations with fixed and non-fixed outputs. Eelco Dolstra 2011-07-20 18:26:00 +0000
  • b2027f70d9 * 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. Eelco Dolstra 2011-07-20 18:10:47 +0000
  • d2bfe1b071 * 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. Eelco Dolstra 2011-07-20 12:15:40 +0000
  • 4bdb51e621 * Refactoring. Eelco Dolstra 2011-07-20 11:50:13 +0000
  • 0243eea4b9 * Create a symlink to /nix/var/nix/manifests in /nix/var/nix/gcroots if it doesn't exist. Eelco Dolstra 2011-07-20 11:47:00 +0000
  • d329c3ea9d * Support multiple outputs. A derivation can declare multiple outputs by setting the ‘outputs’ attribute. For example: Eelco Dolstra 2011-07-18 23:31:03 +0000
  • d9a5959139 * Show the default for --with-store-dir (Nix/211). Eelco Dolstra 2011-07-13 15:57:44 +0000
  • d5d4dcd4c9 * Allow attribute names to be strings. Based on the allow-arbitrary-strinsg-in-names patch by Marc Weber. Eelco Dolstra 2011-07-13 15:53:24 +0000
  • e649f3168b * 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. Eelco Dolstra 2011-07-13 14:05:54 +0000
  • 0a623a10c7 * Allow a default value in attribute selection by writing Eelco Dolstra 2011-07-13 12:19:57 +0000
  • 2b9e29b1c8 * Change the right-hand side of the ‘.’ operator from an attribute to an attribute path. This is a refactoring to support default values. Eelco Dolstra 2011-07-06 12:28:57 +0000
  • 5580f3817c * Test case. Eelco Dolstra 2011-07-06 10:58:53 +0000
  • 5637037802 * 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’. Eelco Dolstra 2011-07-06 10:58:17 +0000
  • 34f4b91820 Eelco Dolstra 2011-07-04 14:44:53 +0000
  • 1ea6e06445 doc: Fix typo. Ludovic Courtès 2011-06-30 15:48:40 +0000
  • 5c9e9f732d Add support for the build-timeout' and --timeout' options. Ludovic Courtès 2011-06-30 15:19:13 +0000
  • 9c99aa2620 Eelco Dolstra 2011-06-27 09:01:09 +0000
  • e4d8148585 Eelco Dolstra 2011-06-27 08:04:54 +0000
  • 4891b21f34 * Use SQLite 3.7.6.2. Eelco Dolstra 2011-05-03 16:17:24 +0000
  • d94cb02bfe * 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. Eelco Dolstra 2011-04-19 10:52:35 +0000
  • 8c69dac8a1 * Handle error messages from the Nix worker containing the `%' character. (Nix/216) Eelco Dolstra 2011-04-19 10:44:44 +0000
  • 4ba6afaf48 * 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'. Eelco Dolstra 2011-04-11 16:27:05 +0000
  • 412914d004 * 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. Eelco Dolstra 2011-04-11 13:16:54 +0000
  • 08c8971498 * Lock the database during updates. Eelco Dolstra 2011-04-11 12:40:13 +0000
  • b2c11b9ed0 Eelco Dolstra 2011-04-11 10:23:15 +0000
  • 3cbf680f5d * 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. Eelco Dolstra 2011-04-11 10:13:53 +0000
  • 83252b4ca9 * 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). Eelco Dolstra 2011-04-11 08:21:30 +0000
  • b1882c3ef7 * Create $manifestDir if it doesn't exist. Eelco Dolstra 2011-04-11 08:06:14 +0000
  • 5591fcc529 * 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. Eelco Dolstra 2011-04-10 23:22:46 +0000
  • 1e7e4f21ba * Remove the localPaths feature in manifests since it's no longer used and redundant anyway. Eelco Dolstra 2011-04-06 09:16:22 +0000
  • 0423d0692a * Print a better error message. Eelco Dolstra 2011-03-16 15:55:57 +0000
  • 48bdbbf070 * Fix a bug in the documentation (reported by Olexiy Buyanskyy, Nix/215). Eelco Dolstra 2011-03-15 13:12:59 +0000
  • 802c2651c8 Eelco Dolstra 2011-02-17 15:08:33 +0000
  • e945b52a31 * nix-push: handle the case where the hash is not set in the DB. Eelco Dolstra 2011-02-17 13:26:33 +0000
  • c3cee5395b * Build for Ubuntu 10.04. Eelco Dolstra 2011-02-14 14:56:02 +0000
  • 8fcaf3e9c6 make nix-mode provide 'nix-mode Florian Friesdorf 2011-02-14 03:11:56 +0000
  • 538b7caab0 * 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. Eelco Dolstra 2011-02-10 14:31:04 +0000
  • 5a6b039802 * Don't call GC_expand_hp unless we're actually using the garbage collector. Eelco Dolstra 2011-02-09 22:59:50 +0000
  • f1462c208b Use $BDW_GC_LIBS instead of a custom variable. Ludovic Courtès 2011-02-09 21:23:13 +0000
  • 1876ab764f * A better fix. $boehmgc isn't set anywhere, we should use the flags returned by pkg-config. Eelco Dolstra 2011-02-09 14:13:09 +0000
  • dfc4117e90 * The GC library can't be found on Solaris (http://hydra.nixos.org/build/890714), so don't build with GC support for now. Eelco Dolstra 2011-02-09 14:08:32 +0000
  • d159ea1b7e * Urgh, FreeBSD doesn't have a "seq" command. Eelco Dolstra 2011-02-09 14:03:16 +0000
  • 3087b3f751 * Obsolete. Eelco Dolstra 2011-02-09 12:48:54 +0000
  • eb94581d39 * Remove obsolete directory. Eelco Dolstra 2011-02-09 12:43:44 +0000
  • 7bba67c401 * Remove obsolete file. Eelco Dolstra 2011-02-09 12:42:15 +0000
  • d0eda1f3e9 * Merged the SQLite branch. Eelco Dolstra 2011-02-09 12:41:54 +0000
  • 543988572e * Sync with the trunk. Eelco Dolstra 2011-02-09 12:25:53 +0000
  • c0340eec5a Eelco Dolstra 2011-02-08 12:30:28 +0000
  • 0304fda3cf * Propagate the CC setting. Eelco Dolstra 2011-02-05 16:40:15 +0000
  • aeae0beba4 * Clang compatibility fix. Clang actually checks template definitions when they are defined Eelco Dolstra 2011-02-05 16:29:10 +0000
  • 3854fc9b42 Remove useless <config.h> inclusion from public header. Ludovic Courtès 2011-01-14 13:55:58 +0000
  • 9db190eb31 * builtins.substring: if "start" is beyond the end of the string, return the empty string. Eelco Dolstra 2011-01-14 12:47:10 +0000
  • d6c8b995c5 * 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. Eelco Dolstra 2010-12-22 10:32:32 +0000
  • c931a7aec5 * Do a short sleep after SQLITE_BUSY. Eelco Dolstra 2010-12-17 17:23:15 +0000
  • b1eb252172 * Propagate the "100" exit status for failed builds through the Nix daemon. Eelco Dolstra 2010-12-17 11:28:26 +0000
  • eac93d6efe * Use the right `make'. Eelco Dolstra 2010-12-17 09:28:51 +0000
  • a0be433fec * Disable X11 forwarding, it's not needed. Eelco Dolstra 2010-12-15 14:25:54 +0000
  • f1a6b97639 * 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.) Eelco Dolstra 2010-12-15 08:39:37 +0000
  • 3dd02580e3 * I forgot to catch SQLiteBusy in registerValidPaths(). So registerValidPaths() now handles busy errors and registerValidPath() is simply a wrapper around it. Eelco Dolstra 2010-12-14 13:25:20 +0000
  • d787285af9 * 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. Eelco Dolstra 2010-12-13 16:53:23 +0000
  • 5833243c92 * Create /nix/var/nix/db if it's missing. Eelco Dolstra 2010-12-13 13:42:34 +0000
  • 100becf8d1 * createDirs(path): if path already exists, make sure it's a directory. * Provide a C++ wrapper around lstat(). Eelco Dolstra 2010-12-13 13:32:58 +0000
  • d7ca6f44eb * Update some comments. Eelco Dolstra 2010-12-13 13:19:46 +0000
  • 542fc69062 * When doing a query (e.g. nix-store -r --dry-run'), don't make a lot of expensive calls to nix-store --check-validity'. Eelco Dolstra 2010-12-13 08:39:10 +0000
  • 4d57776813 * Use SQLite 3.7.4. Eelco Dolstra 2010-12-10 11:45:56 +0000
  • e4720b1a79 * Ignore the result of sqlite3_reset(). Eelco Dolstra 2010-12-08 18:19:15 +0000
  • 7d0444e244 * Bad things happen when a filehandle has the same name as a module. Eelco Dolstra 2010-12-07 12:33:42 +0000
  • 8062d3af30 * `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. Eelco Dolstra 2010-12-06 15:29:38 +0000
  • de79d23f76 * 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. Eelco Dolstra 2010-12-05 18:23:19 +0000
  • 365f3028dd * Use CamelCase for the Perl modules. Eelco Dolstra 2010-12-05 17:50:29 +0000
  • f42a505ab7 * Add a script `nix-generate-patches'. * Fix the binary patching test. Eelco Dolstra 2010-12-05 17:36:02 +0000
  • 77f7a6d591 * 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. Eelco Dolstra 2010-11-29 17:07:04 +0000
  • d3bba0c2d8 * Move the patch generator into a module. Eelco Dolstra 2010-11-29 15:26:28 +0000
  • 9737a7eba0 * Don't generate patches if the system type differs. Eelco Dolstra 2010-11-29 09:26:05 +0000
  • bd48fd97f6 * 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. Eelco Dolstra 2010-11-29 09:15:45 +0000
  • 703e5a2ce2 * Sync with the trunk. Eelco Dolstra 2010-11-25 14:09:13 +0000
  • 812fae424e * DrvInfo contains pointers to expressions, so DrvInfos should be traced by the garbage collector. Otherwise "nix-env -u" can crash randomly. Eelco Dolstra 2010-11-25 13:47:34 +0000
  • d92ccbf1ac * Test whether sequences of patches work. Eelco Dolstra 2010-11-17 18:01:37 +0000
  • 1a211d812f * Oops. Eelco Dolstra 2010-11-17 17:54:49 +0000
  • a4f0365b2d * 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). Eelco Dolstra 2010-11-17 17:41:59 +0000
  • 3d38a49840 * In the download size indication, take binary patches into account. Hopefully this doesn't slow things down too much. Eelco Dolstra 2010-11-17 17:32:25 +0000
  • f69626ed3e Eelco Dolstra 2010-11-17 15:45:09 +0000
  • a07c68f05e * Finally, a test for the binary patch functionality. Eelco Dolstra 2010-11-17 15:30:07 +0000
  • bf658f016f * Test that download sizes are shown correctly. Eelco Dolstra 2010-11-17 14:39:02 +0000
  • 1e24cbaba3 * Fix the test. Eelco Dolstra 2010-11-17 14:35:14 +0000
  • bdf089f463 * Before a build, show the disk space that the downloaded store paths will approximately require. Eelco Dolstra 2010-11-17 14:31:42 +0000
  • 06699d4219 * Store the NAR size in the manifest. Eelco Dolstra 2010-11-17 12:57:52 +0000
  • 5693b8a7e2 * nix-push: no need to compute the NAR hash, since the Nix database already has it (`nix-store -q --hash'). Eelco Dolstra 2010-11-17 12:51:54 +0000
  • e60c962fb8 * Add an operation `nix-store -q --size'. Eelco Dolstra 2010-11-17 12:40:52 +0000
  • 1db6259076 * Implement RemoteStore::queryPathInfo(). Eelco Dolstra 2010-11-17 12:08:01 +0000
  • a3883cbd28 * 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. Eelco Dolstra 2010-11-16 17:11:46 +0000
  • fb9368b5a0 * Sync with the trunk. Eelco Dolstra 2010-11-16 12:49:47 +0000
  • 4aced7f8d0 * Merge the GC branch. Eelco Dolstra 2010-10-29 15:04:39 +0000
  • 26def5392f * Document Boehm GC support. Eelco Dolstra 2010-10-29 14:44:02 +0000
  • 3d71c8013e * Use pkgconfig to locate the Boehm GC (as suggested by Ludo), if --enable-gc is given. Eelco Dolstra 2010-10-29 14:00:47 +0000
  • 14fbf85380 * Set libgc's initial heap size to 384 MiB to prevent garbage collection in most cases (and therefore its performance overhead). Eelco Dolstra 2010-10-29 13:11:50 +0000
  • 0c4828ea05 * new(UseGC) is inexplicably slower than GC_MALLOC, so prefer the latter. Eelco Dolstra 2010-10-28 12:50:01 +0000
  • e11e6fb1c6 * Handle out of memory condition. Eelco Dolstra 2010-10-28 12:29:40 +0000