Commit graph

  • c16be6ac92 * Remove write permission from store objects after they have been added to the store. Bug reported by Martin. Eelco Dolstra 2004-09-09 21:19:20 +0000
  • 47f87072ad * A very dirty hack to make setuid installations a bit nicer to use. Previously there was the problem that all files read by nix-env etc. should be reachable and readable by the Nix user. So for instance building a Nix expression in your home directory meant that the home directory should have at least g+x or o+x permission so that the Nix user could reach the Nix expression. Now we just switch back to the original user just prior to reading sources and the like. The places where this happens are somewhat arbitrary, however. Any scope that has a live SwitchToOriginalUser object in it is executed as the original user. Eelco Dolstra 2004-09-09 21:12:53 +0000
  • 5396304c73 * Use setre[ug]id() instead of setres[ug]id(), since the former is more common than the latter (which exists only on Linux and FreeBSD). We don't really care about dropping the saved IDs since there apparently is no way to quiry them in any case, so it can't influence the build (unlike the effective IDs which are checked by Perl for instance). Eelco Dolstra 2004-09-09 15:55:31 +0000
  • e043fc7d0b * Set the umask to known value (0022). This is important in a setuid installation, since the calling user may have a more fascist umask (say, 0077), which would cause the store objects built by Nix to be unreadable to anyone other than the Nix user. Eelco Dolstra 2004-09-09 14:16:02 +0000
  • 550d960586 * Hack for perl(readmanifest) dependency. Eelco Dolstra 2004-09-08 12:07:19 +0000
  • 17c8252fc9 * Spec file options to create the Nix user and group in the RPM pre-install script. By default this is turned off; you should edit the spec file to enable it. Eelco Dolstra 2004-09-06 10:05:21 +0000
  • fb28cfc86d * Add some variability to RPM spec files: allow setuid options to be set on the rpmbuild command line. Eelco Dolstra 2004-09-06 08:17:55 +0000
  • 5c443b6550 * Main the `substitutes-rev' table again, but now in a way that doesn't take \Theta(n^2) space/time complexity. Eelco Dolstra 2004-08-31 16:13:10 +0000
  • c25f2883b1 * Quadruple the Berkeley DB locking limits to get rid of out of memory errors while running `nix-store --verify'. Eelco Dolstra 2004-08-31 10:50:08 +0000
  • fe122c5a15 * Removed nrWaitees field. It was redundant with waitees.size() and could get out of sync if multiple input derivations mapped to the same closure expression (since waitees is a set). Eelco Dolstra 2004-08-30 11:51:36 +0000
  • eb233e728f * --min-age' flag in nix-store and nix-collect-garbage to only delete unreachable paths that haven't been used for N hours. For instance, nix-collect-garbage --min-age 168' only deletes paths that haven't been accessed in the last week. Eelco Dolstra 2004-08-25 16:54:08 +0000
  • fdec72c6cc * nix-collect-garbage' now actually performs a garbage collection, it doesn't just print the set of paths that should be deleted. So there is no more need to pipe the result into nix-store --delete' (which doesn't even exist anymore). Eelco Dolstra 2004-08-25 15:39:13 +0000
  • 818047881e * Put the garbage collector in nix-store: operation --gc', suboperations --print-live', --print-dead', and --delete'. The roots are not determined by nix-store; they are read from standard input. This is to make it easy to customise what the roots are. Eelco Dolstra 2004-08-25 11:43:49 +0000
  • 9994c1dd9f * Validate derivation names. In particular don't allow spaces. * Drop support for the outPath attribute in derivations. Eelco Dolstra 2004-08-24 11:46:05 +0000
  • 8f58733ef1 * The gid should also match. Eelco Dolstra 2004-08-20 15:47:58 +0000
  • 1c90fabccc * Unbreak programs that are not setuid (such as nix-hash). Eelco Dolstra 2004-08-20 15:31:46 +0000
  • e77fbe0fa2 * On systems that have the setresuid() and setresgid() system calls to set the real uid and gid to the effective uid and gid, the Nix binaries can be installed as owned by the Nix user and group instead of root, so no root involvement of any kind is necessary. Eelco Dolstra 2004-08-20 15:22:33 +0000
  • 2d35116c13 * Setuid support for sharing a Nix installation between multiple users. Eelco Dolstra 2004-08-20 14:49:05 +0000
  • 8f1dcdfc0a * Make sure that no build hook is set by default in the tests. * Don't use `seq' - some primitive, obsolete operating systems (Darwin) don't have it. Eelco Dolstra 2004-08-19 09:09:09 +0000
  • 1eddee59f2 * The default verbosity level of all Nix commands is now lvlInfo. * Builder output is written to standard error by default. * The option -B' is gone. * The option -Q' suppresses builder output. Eelco Dolstra 2004-08-18 12:19:06 +0000
  • 937ce0cd21 * Flag `--no-link' suppresses symlinking to the output path. * Handle multiple derivations correctly. Eelco Dolstra 2004-08-18 12:11:31 +0000
  • 966bd9d19f * WTF? More canonical system name problems ("athlon-linux" instead of "i686-linux"). Eelco Dolstra 2004-08-13 09:57:51 +0000
  • 62fe5c4a22 * The predecessor of a successor need not be present. This in particular happens on distributed builds or when using push/pull. Eelco Dolstra 2004-08-11 19:03:13 +0000
  • ae1a1efa41 * Clean up the temporary directory for hook communication (and don't print out incorrect "build failed" messages). Eelco Dolstra 2004-08-05 14:53:27 +0000
  • d8989b1fb4 * Every real language has a `map' function. Eelco Dolstra 2004-08-04 11:27:53 +0000
  • bbfdd64741 * Allow primops with more that 1 arguments. Eelco Dolstra 2004-08-04 10:59:20 +0000
  • e3a50f7e25 * Creating a file nix-support/no-scan in the output path of a derivation disables scanning for dependencies. Use at your own risk. This is a quick hack to speed up UML image generation (image are very big, say 1 GB). Eelco Dolstra 2004-08-04 09:25:21 +0000
  • 18ebd7b030 * Doh! Eelco Dolstra 2004-07-30 14:18:48 +0000
  • 5373aed1a8 * Use ATerm 2.2. * Include bootstrap.sh in dist. Eelco Dolstra 2004-07-30 14:17:05 +0000
  • 16c8b4c8e5 * A script to generate the Auto* stuff. Eelco Dolstra 2004-07-30 13:45:13 +0000
  • e8a95108c0 * Nix-build places a symlink `result' in the current directory to the store object just built. Eelco Dolstra 2004-07-28 13:32:45 +0000
  • 9bf7a5f516 * Don't pass `--with-system'. Eelco Dolstra 2004-07-18 21:08:24 +0000
  • 39eaecbc98 * Slightly better heuristic for picking the canonical system type. Now SuSE and Red Hat should yield the same type (i686-linux'). Mac OS X should now give powerpc-darwin' (i.e., the version number is gone). Eelco Dolstra 2004-07-18 21:07:27 +0000
  • 064a36cb54 * Hardcode the system id to be `i686-linux'. Eelco Dolstra 2004-07-09 13:06:12 +0000
  • c1a18f543e * Fixed format string error. Eelco Dolstra 2004-07-06 11:21:34 +0000
  • 056cd1d3b7 * Don't go into a (sometimes infinite) loop calling the build hook. Eelco Dolstra 2004-07-01 16:24:35 +0000
  • 638ce339a5 * Nix-instantiate now accepts sets of derivations (just like nix-env). Eelco Dolstra 2004-07-01 14:25:26 +0000
  • 292d6468ec * Nix-env operations now by default filter out any derivations for system types other than the current system. I.e., nix-env -i' won't install derivations for other system types, and nix-env -q' won't show them. The flag --system-filter SYSTEM' can be used to override the system type used for filtering (but not for building!). The value *' can be used not to filter anything. Eelco Dolstra 2004-07-01 13:56:56 +0000
  • 8f6254e823 * Align the columns in the output of `nix-env -q'. Eelco Dolstra 2004-07-01 13:35:10 +0000
  • 593bc23d8b * Allow the system attribute of derivations to be queried in nix-env -q'. * Queries can now be combined, e.g., nix-env -q --status --system'. Eelco Dolstra 2004-07-01 13:13:37 +0000
  • b584253af4 * Include some missing headers. Eelco Dolstra 2004-07-01 11:11:16 +0000
  • f5d5ffe536 * Write build logs to disk again. Eelco Dolstra 2004-06-29 09:41:50 +0000
  • 00aadf478b * Use ATerm 2.1. Eelco Dolstra 2004-06-28 14:51:42 +0000
  • 151e61fa5a * By default, nix-env -i' now deletes previously installed derivations with names matching the derivations being installed. The option --preserve-installed / -P' overrides this behaviour. Eelco Dolstra 2004-06-28 14:40:26 +0000
  • 4d2946c516 * In a realisation goal, check the result of the corresponding normalisation goal. Eelco Dolstra 2004-06-28 13:51:24 +0000
  • 24286e15c9 * `nix-env -u' now allows a specific version to be specified when upgrading. Eelco Dolstra 2004-06-28 13:37:05 +0000
  • 2746a879e2 * Typo. Eelco Dolstra 2004-06-28 12:07:07 +0000
  • 91dc023665 * Added a switch `--fallback'. From the manual: Eelco Dolstra 2004-06-28 10:42:57 +0000
  • b113edeab7 * A flag --keep-going / -k' to keep building goals if one fails, as much as possible. (This is similar to GNU Make's -k' flag.) Eelco Dolstra 2004-06-25 15:36:09 +0000
  • e4883211f9 * Don't throw an exception when a build fails. Just terminate the goal and allow the problem to be handled elsewhere (e.g., at top-level). Eelco Dolstra 2004-06-25 10:21:44 +0000
  • 795d9f8b08 * Obsolete. Eelco Dolstra 2004-06-24 14:36:50 +0000
  • a29c8ac51c * Add a test to check that when we cannot realise a closure expression, we should invalidate it and go back to the derivation for which it is a successor. Eelco Dolstra 2004-06-24 14:35:01 +0000
  • ec32627621 * Multiple and/or failing substitutes now work. Eelco Dolstra 2004-06-24 13:40:38 +0000
  • 8052aef486 * A test for multiple and/or failing substitutes. Eelco Dolstra 2004-06-24 12:56:24 +0000
  • 66c7f34759 * Arghhhhhh Eelco Dolstra 2004-06-22 17:07:32 +0000
  • 05a5362d63 * Some more diagnostics changes. Eelco Dolstra 2004-06-22 17:04:10 +0000
  • d051cd40e1 * Nix-instantiate can return multiple store expressions. Eelco Dolstra 2004-06-22 15:17:04 +0000
  • 3093af58a7 * A utility script `nix-build' that builds Nix expressions and prints their output paths (and only that) on standard output. Eelco Dolstra 2004-06-22 15:12:34 +0000
  • b302e5f63b * We don't really need this here. Eelco Dolstra 2004-06-22 15:06:43 +0000
  • 83ae1723da * Well, it's better than printf. Eelco Dolstra 2004-06-22 15:01:01 +0000
  • 72bc9a522f * Started making Nix's diagnostic messages a bit more useful. Eelco Dolstra 2004-06-22 14:48:59 +0000
  • 5e2cf44a4d * Put WEXITSTATUS stuff somewhere else. Eelco Dolstra 2004-06-22 11:03:41 +0000
  • 84007a0958 * Reduce gratuitous cut & pasting. Eelco Dolstra 2004-06-22 10:21:44 +0000
  • c9fbd2dfd5 * Wrapper class around pids. Eelco Dolstra 2004-06-22 09:51:44 +0000
  • 155d7c8dfa * Substitutes should occupy a build slot. Eelco Dolstra 2004-06-22 09:00:31 +0000
  • c4cb6ea2bc * Refactoring. Eelco Dolstra 2004-06-22 08:50:25 +0000
  • 88fb4f6e53 * Missing files added to `make dist'. Eelco Dolstra 2004-06-21 12:20:47 +0000
  • 2db9748221 * Remove debug output. Eelco Dolstra 2004-06-21 10:01:17 +0000
  • 37ee6cef99 * Adapted nix-pull to use the new substitute mechanism. Eelco Dolstra 2004-06-21 09:51:23 +0000
  • 3f3a3ae87b * Acquire a lock on the output path when running a substitute. Also delete obstructing invalid paths. Eelco Dolstra 2004-06-21 09:35:50 +0000
  • 72c857f0eb * Ugh, nasty Heisenbug due to an uninitialiased variable. The bug only caused a crash if the program was *not* invoked with a high verbosity level. Eelco Dolstra 2004-06-21 08:51:55 +0000
  • be1a917beb * Remove obstructing invalid store paths add[Text]ToStore(). Eelco Dolstra 2004-06-21 07:46:02 +0000
  • daf0a923c7 * Wrap calls to registerSubstitute() in a single transaction to improve throughput. * Don't build the `substitute-rev' table for now, since it caused Theta(N^2) time and log file consumption when adding N substitutes. Maybe we can do without it. Eelco Dolstra 2004-06-21 07:38:17 +0000
  • 15c60ca1b6 * Disable calls to fsync() since Berkeley DB's DB_TXN_WRITE_NOSYNC flag doesn't seem to work as advertised. Eelco Dolstra 2004-06-21 07:36:01 +0000
  • 112ee89501 * Re-enable support for substitutes in the normaliser. Eelco Dolstra 2004-06-20 19:17:54 +0000
  • bafb2357d1 * README for the Emacs mode (written a while ago, but forgot to commit). Eelco Dolstra 2004-06-20 19:08:59 +0000
  • 85ae781765 * Refactoring. Eelco Dolstra 2004-06-20 13:37:51 +0000
  • 23bb902d1f * Re-enable build hooks. Eelco Dolstra 2004-06-19 21:45:04 +0000
  • 41ec982f31 * Big refactoring. Move to a much more explicitly state machine based approach. This makes it much easier to add extra complexity in the normaliser / realiser (e.g., build hooks, substitutes). Eelco Dolstra 2004-06-18 18:09:32 +0000
  • 3454c685ee * This is also useful. Eelco Dolstra 2004-06-18 16:52:31 +0000
  • 6ba26f27c3 * Shared (garbage collecting) pointers. Copied from Boost. Eelco Dolstra 2004-06-18 09:20:51 +0000
  • 0b70231b9d * Refactoring. Eelco Dolstra 2004-06-15 13:49:42 +0000
  • 1bc6afefac * Cleanup. Eelco Dolstra 2004-06-08 13:21:03 +0000
  • e8411948ff * A Nix mode for Emacs. Eelco Dolstra 2004-06-04 14:31:57 +0000
  • 5e4a2272bf * Drain the output of the build hook to show error messages. Ugly hack. Eelco Dolstra 2004-05-18 14:52:35 +0000
  • 19479899fb * Don't set the rpath here --- it's not portable. Eelco Dolstra 2004-05-18 12:57:26 +0000
  • 1d08093b48 * Go back to the old way of generating the system name, and allow it to be specified in configure (using `--with-system=SYSTEM'). Eelco Dolstra 2004-05-18 09:45:46 +0000
  • 8e9fd57ef9 * setpgrp() is not POSIX (and on Mac OS X it's different than on Linux), so use setpgid(). Eelco Dolstra 2004-05-18 09:45:18 +0000
  • ace8872706 * execl() requires a terminating 0. * When a fast build wakes up a goal, try to start that goal in the same iteration of the startBuild() loop of run(). Otherwise no job might be started until the next job terminates. Eelco Dolstra 2004-05-14 12:24:29 +0000
  • 4fc00cbec1 * Distributed builds and load balancing now seem to work pretty well. (Though the `build-remote.pl' script has a gigantic race condition). Eelco Dolstra 2004-05-13 22:52:37 +0000
  • 2fa3304933 * Set the executable bit. Eelco Dolstra 2004-05-13 20:28:20 +0000
  • 25db622454 * Load balancing. `build-remote.pl' will only execute up to a per-machine maximum number of parallel jobs on a remote machine. Eelco Dolstra 2004-05-13 19:35:46 +0000
  • 3426d19547 * Perform all tests. Eelco Dolstra 2004-05-13 19:16:48 +0000
  • a8306cb98f * The build hooks used to implement distributed builds can now be run in parallel. Hooks are more efficient: locks on output paths are only acquired when the hook says that it is willing to accept a build job. Hooks now work in two phases. First, they should first tell Nix whether they are willing to accept a job. Nix guarantuees that no two hooks will ever be in the first phase at the same time (this simplifies the implementation of hooks, since they don't have to perform locking (?)). Second, if they accept a job, they are then responsible for building it (on the remote system), and copying the result back. These can be run in parallel with other hooks and locally executed jobs. Eelco Dolstra 2004-05-13 19:14:49 +0000
  • 5087c8f645 * Use `-j0'. Eelco Dolstra 2004-05-12 14:30:57 +0000
  • efa5fa1a91 * A switch `-j NUMBER' to set the maximum number of parallel jobs (0 = no limit). * Add missing file to distribution. Eelco Dolstra 2004-05-12 14:20:32 +0000
  • 1f48aa0be7 * Broken test. Eelco Dolstra 2004-05-12 13:49:10 +0000
  • aa5a5084e4 * Pass to the build hook all sorts of information useful for distributing a build action to another machine. In particular, the paths in the input closures, the output paths, and successor mapping for sub-derivations. Eelco Dolstra 2004-05-12 13:32:26 +0000
  • 8c0b42f857 * An quick and dirty hack to support distributed builds. Eelco Dolstra 2004-05-12 09:35:51 +0000
  • c8d3882cdc * True parallel builds. Nix can now run as many build jobs in parallel as possible (similar to GNU Make's `-j' switch). This is useful on SMP systems, but it is especially useful for doing builds on multiple machines. The idea is that a large derivation is initiated on one master machine, which then distributes sub-derivations to any number of slave machines. This should not happen synchronously or in lock-step, so the master must be capable of dealing with multiple parallel build jobs. We now have the infrastructure to support this. Eelco Dolstra 2004-05-11 18:05:44 +0000