about summary refs log tree commit diff
path: root/src/nix-env/main.cc
AgeCommit message (Collapse)AuthorFilesLines
2005-01-14 * Shorten SHA-256 hashes used in store path name generation to 160Eelco Dolstra1-6/+2
bits, then encode them in a radix-32 representation (using digits and letters except e, o, u, and t). This produces store paths like /nix/store/4i0zb0z7f88mwghjirkz702a71dcfivn-aterm-2.3.1. The nice thing about this is that the hash part of the file name is still 32 characters, as before with MD5. (Of course, shortening SHA-256 to 160 bits makes it no better than SHA-160 in theory, but hopefully it's a bit more resistant to attacks; it's certainly a lot slower.)
2005-01-14 * Start move towards SHA-256 hashes instead of MD5.Eelco Dolstra1-1/+1
* Start cleaning up unique store path generation (they weren't always unique; in particular the suffix ("-aterm-2.2", "-builder.sh") was not part of the hash, therefore changes to the suffix would cause multiple store objects with the same hash).
2005-01-13 * Refactoring to support SHA-1.Eelco Dolstra1-0/+4
2004-11-03 * string2ATerm -> overloaded toATerm.Eelco Dolstra1-17/+17
2004-10-29 * Drop ATmake / ATMatcher also in handling store expressions.Eelco Dolstra1-5/+7
2004-10-27 * Turn on read-only mode in queries. This prevents redundant store I/O.Eelco Dolstra1-0/+2
2004-10-26 * Don't use ATmake / ATmatch anymore, nor the ATMatcher class.Eelco Dolstra1-33/+30
Instead we generate data bindings (build and match functions) for the constructors specified in `constructors.def'. In particular this removes the conversions between AFuns and strings, and Nix expression evaluation now seems 3 to 4 times faster.
2004-10-14 * In `nix-env -q', sort derivations by name *without* caseEelco Dolstra1-1/+9
sensitivity.
2004-09-10 * Operation `--delete-generations' to delete generations of aEelco Dolstra1-3/+46
profile. Arguments are either generation number, or `old' to delete all non-current generations. Typical use: $ nix-env --delete-generations old $ nix-collect-garbage * istringstream -> string2Int.
2004-09-09 * A very dirty hack to make setuid installations a bit nicer to use.Eelco Dolstra1-0/+3
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. * Back out r1385. setreuid() sets the saved uid to the new real/effective uid, which prevents us from switching back to the original uid. setresuid() doesn't have this problem (although the manpage has a bug: specifying -1 for the saved uid doesn't leave it unchanged; an explicit value must be specified).
2004-08-18 * The default verbosity level of all Nix commands is now lvlInfo.Eelco Dolstra1-3/+0
* Builder output is written to standard error by default. * The option `-B' is gone. * The option `-Q' suppresses builder output. The result of this is that most Nix invocations shouldn't need any flags w.r.t. logging.
2004-07-01 * Nix-env operations now by default filter out any derivations forEelco Dolstra1-9/+28
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.
2004-07-01 * Align the columns in the output of `nix-env -q'.Eelco Dolstra1-4/+36
2004-07-01 * Allow the system attribute of derivations to be queried inEelco Dolstra1-37/+50
`nix-env -q'. * Queries can now be combined, e.g., `nix-env -q --status --system'.
2004-06-28 * By default, `nix-env -i' now deletes previously installedEelco Dolstra1-3/+21
derivations with names matching the derivations being installed. The option `--preserve-installed / -P' overrides this behaviour.
2004-06-28 * `nix-env -u' now allows a specific version to be specified whenEelco Dolstra1-4/+7
upgrading. This fixes a bug reported by Martin: $ nix-env -i foo-1.0 $ nix-env -u foo-1.0 upgrading foo-1.0 to foo-1.1
2004-06-28 * Added a switch `--fallback'. From the manual:Eelco Dolstra1-2/+1
Whenever Nix attempts to realise a derivation for which a closure is already known, but this closure cannot be realised, fall back on normalising the derivation. The most common scenario in which this is useful is when we have registered substitutes in order to perform binary distribution from, say, a network repository. If the repository is down, the realisation of the derivation will fail. When this option is specified, Nix will build the derivation instead. Thus, binary installation falls back on a source installation. This option is not the default since it is generally not desirable for a transient failure in obtaining the substitutes to lead to a full build from source (with the related consumption of resources).
2004-06-20 * Re-enable support for substitutes in the normaliser.Eelco Dolstra1-1/+1
* A better substitute mechanism. Instead of generating a store expression for each store path for which we have a substitute, we can have a single store expression that builds a generic program that is invoked to build the desired store path, which is passed as an argument. This means that operations like `nix-pull' only produce O(1) files instead of O(N) files in the store when registering N substitutes. (It consumes O(N) database storage, of course, but that's not a performance problem). * Added a test for the substitute mechanism. * `nix-store --substitute' reads the substitutes from standard input, instead of from the command line. This prevents us from running into the kernel's limit on command line length.
2004-05-12 * An quick and dirty hack to support distributed builds.Eelco Dolstra1-1/+1
2004-04-21 * Recurse into attribute sets and lists when getting derivations fromEelco Dolstra1-0/+4
an expression.
2004-04-05 * When something goes wrong in the evaluation of a Nix expression,Eelco Dolstra1-10/+29
print a nice backtrace of the stack, rather than vomiting a gigantic (and useless) aterm on the screen. Example: error: while evaluating file `.../pkgs/system/test.nix': while evaluating attribute `subversion' at `.../pkgs/system/all-packages-generic.nix', line 533: while evaluating function at `.../pkgs/applications/version-management/subversion/default.nix', line 1: assertion failed at `.../pkgs/applications/version-management/subversion/default.nix', line 13 Since the Nix expression language is lazy, the trace may be misleading. The purpose is to provide a hint as to the location of the problem.
2004-02-11 * When creating a new generation, also make the normal form of theEelco Dolstra1-1/+1
derivation (i.e., the closure store expression) a root of the garbage collector. This ensures that running `nix-collect-garbage --no-successors' is safe.
2004-02-10 * Print what generation we are switching to; honour --dry-run flag.Eelco Dolstra1-0/+5
2004-02-09 * In `--upgrade': added flags `--lt', `--leq', `--always' to specifyEelco Dolstra1-24/+64
whether we want to upgrade if the current version is less than the available version (default), when it is less or equal, or always. * Added a flag `--dry-run' to show what would happen in `--install', `--uninstall', and `--upgrade', without actually performing the operation.
2004-02-08 * A command `--switch-generation' to switch to a specific generationEelco Dolstra1-0/+59
of the current profile, e.g., $ nix-env --list-generations ... 39 2004-02-02 17:53:53 40 2004-02-02 17:55:18 41 2004-02-02 17:55:41 42 2004-02-02 17:55:50 (current) $ nix-env --switch-generation 39 $ ls -l /nix/var/nix/profiles/default ... default -> default-39-link * Also a command `--rollback' which is just a convenience operation to rollback to the oldest generation younger than the current one. Note that generations properly form a tree. E.g., if after switching to generation 39, we perform an installation action, a generation 43 is created which is a descendant of 39, not 42. So a rollback from 43 ought to go back to 39. This is not currently implemented; generations form a linear sequence.
2004-02-06 * In `--list-generations', show what the current generation is.Eelco Dolstra1-3/+5
2004-02-06 * A command `--list-generations' to show all generations for aEelco Dolstra1-5/+29
profile.
2004-02-06 * More refactoring.Eelco Dolstra1-56/+1
2004-02-06 * Refactoring.Eelco Dolstra1-130/+1
2004-02-06 * Use the profile pointed to by ~/.nix-profile if no --profileEelco Dolstra1-6/+11
argument is specified.
2004-02-06 * Improvements to profiles. Generations are now per-profile, e.g.,Eelco Dolstra1-42/+46
default -> default-94-link default-82-link -> /nix/store/cc4480... default-83-link -> /nix/store/caeec8... ... default-94-link -> /nix/store/2896ca... experimental -> experimental-2-link experimental-1-link -> /nix/store/cc4480... experimental-2-link -> /nix/store/a3148f... * `--profile' / `-p' -> `--switch-profile' / `-S' * `--link' / `-l' -> `--profile' / `-p' * The default profile is stored in $prefix/var/nix/profiles. $prefix/var/nix/links is gone. Profiles can be stored anywhere. * The current profile is now referenced from ~/.nix-profile, not ~/.nix-userenv. * The roots to the garbage collector now have extension `.gcroot', not `.id'.
2004-02-04 * Use a map to lookup primops.Eelco Dolstra1-2/+3
* Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.).
2004-02-02 * Sort `nix-env -q' output by derivation name.Eelco Dolstra1-10/+23
* `--version' flag for all commands. * Manual updates.
2004-01-21 * Extra bit `S' in `--query --status' output: show whether there areEelco Dolstra1-1/+3
any substitutes for the derivation.
2004-01-20 * Absolutise the specified path in `--import' and `--profile'.Eelco Dolstra1-2/+2
2004-01-15 * In `nix-env --query --status', determine the `I' bit by looking atEelco Dolstra1-1/+7
the output path of a derivation, not the path of its store expression. This ensures that changes that affect the path of the store expression but not the output path, do not affect the `installed' state of a derivation.
2004-01-05 * Implemented Eelco V.'s `nix-env -I' command to specify the defaultEelco Dolstra1-20/+49
path of the Nix expression to be used with the import, upgrade, and query commands. For instance, $ nix-env -I ~/nixpkgs/pkgs/system/i686-linux.nix $ nix-env --query --available [aka -qa] sylpheed-0.9.7 bison-1.875 pango-1.2.5 subversion-0.35.1 ... $ nix-env -i sylpheed $ nix-env -u subversion There can be only one default at a time. * If the path to a Nix expression is a symlink, follow the symlink prior to resolving relative path references in the expression.
2004-01-05 * Implemented Eelco V.'s `-p' command to switch profiles. It switchesEelco Dolstra1-0/+22
the symlink ~/.nix-userenv to the given argument (which defaults to .../links/current). /etc/profile.d/nix-profile creates this symlink if it doesn't exist yet. Example use: $ nix-env -l my_profile -i foo.nix subversion quake $ nix-env -p my_profile I don't like the term "profile". Let's deprecate it :-)
2003-12-23 * Fixed a bug in the upgrade operation.Eelco Dolstra1-11/+13
2003-12-22 * GCC 2.95 compatibility.Eelco Dolstra1-0/+2
2003-12-22 * Upgrade operation in `nix-env'. For instance, you can sayEelco Dolstra1-23/+163
nix-env -u foo.nix strategoxt to replace the installed `strategoxt' derivation with the one from `foo.nix', if the latter has a higher version number. This is a no-op if `strategoxt' is not installed. Wildcards are also accepted, so nix-env -u foo.nix '*' will replace any installed derivation with newer versions from `foo.nix', if available. The notion of "version number" is somewhat ad hoc, but should be useful in most cases, as evidenced by the following unit tests for the version comparator: TEST("1.0", "2.3", -1); TEST("2.1", "2.3", -1); TEST("2.3", "2.3", 0); TEST("2.5", "2.3", 1); TEST("3.1", "2.3", 1); TEST("2.3.1", "2.3", 1); TEST("2.3.1", "2.3a", 1); TEST("2.3pre1", "2.3", -1); TEST("2.3pre3", "2.3pre12", -1); TEST("2.3a", "2.3c", -1); TEST("2.3pre1", "2.3c", -1); TEST("2.3pre1", "2.3q", -1); (-1 = less, 0 = equal, 1 = greater) * A new verbosity level `lvlInfo', between `lvlError' and `lvlTalkative'. This is the default for `nix-env', so without any `-v' flags users should get useful output, e.g., $ nix-env -u foo.nix strategoxt upgrading `strategoxt-0.9.2' to `strategoxt-0.9.3'
2003-12-21 * Version numbers can be omitted in install/uninstall. E.g.,Eelco Dolstra1-32/+103
nix-env -i foo.nix subversion The version number part of a derivation name is defined as everything following the first dash not followed by a letter.
2003-12-21 * `-u' -> `-e'.Eelco Dolstra1-38/+56
* `--link' / `-l' flag to specify the switch symlink to use (by default, /nix/var/nix/links/current).
2003-12-02 * Regression fix: query flags (e.g., "-qsf") were broken.Eelco Dolstra1-0/+2
2003-12-01 * Help text for all (non-script) programs, so no more:Eelco Dolstra1-4/+7
$ nix-instantiate --help error: unknown flag `--help` Try `nix-instantiate --help' for more information. :-)
2003-11-24 * Allow the top-level expression to be a derivation.Eelco Dolstra1-13/+18
* Hack: `nix-env -i *' installs all available derivations.
2003-11-22 * Don't use a hard-coded path.Eelco Dolstra1-1/+1
2003-11-22 * Fix the garbage collector.Eelco Dolstra1-1/+3
2003-11-21 * Uninstallation.Eelco Dolstra1-3/+8
2003-11-20 * Uninstall command (doesn't work yet).Eelco Dolstra1-36/+81