about summary refs log tree commit diff
path: root/src/nix-store/nix-store.cc
AgeCommit message (Collapse)AuthorFilesLines
2012-06-27 nix-store -r: do substitutions in parallelEelco Dolstra1-7/+5
I.e. when multiple non-derivation arguments are passed to ‘nix-store -r’ to be substituted, do them in parallel.
2012-05-30 "nix-store -l": support compressed logsEelco Dolstra1-8/+33
2012-05-29 Reserve some disk space for the garbage collectorEelco Dolstra1-1/+1
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.
2012-03-26 Remove the --max-links GC optionEelco Dolstra1-1/+0
We don't need this anymore now that current filesystems support more than 32,000 files in a directory.
2012-02-09 Use data() instead of c_str() where appropriateEelco Dolstra1-1/+1
2012-01-17 * Added a command ‘nix-store --print-env $drvpath’ that prints out theEelco Dolstra1-0/+35
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.
2011-12-30 * Support multiple outputs in nix-store (specifically the ‘--query’Eelco Dolstra1-43/+63
and ‘--realise’ actions).
2011-12-16 * importPath() -> importPaths(). Because of buffering of the inputEelco Dolstra1-6/+4
stream it's now necessary for the daemon to process the entire sequence of exported paths, rather than letting the client do it.
2011-12-02 * Move parseHash16or32 into libutil, and use in nix-hash.Eelco Dolstra1-8/+0
2011-11-23 * Add an API function exportPaths() that provides the functionality ofEelco Dolstra1-5/+1
‘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.)
2011-09-06 * Added a command ‘nix-store --verify-paths PATHS’ to check whetherEelco Dolstra1-1/+25
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.
2011-08-31 * Eliminate all uses of the global variable ‘store’ from libstore.Eelco Dolstra1-13/+13
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.
2010-11-17 * Add an operation `nix-store -q --size'.Eelco Dolstra1-4/+9
2010-11-16 * Store the size of a store path in the database (to be precise, theEelco Dolstra1-5/+7
size of the NAR serialisation of the path, i.e., `nix-store --dump PATH'). This is useful for Hydra.
2010-11-16 * Sync with the trunk.Eelco Dolstra1-3/+3
2010-10-04 * Make sure that config.h is included before the system headers,Eelco Dolstra1-3/+3
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.
2010-06-21 * Sync with the trunk.Eelco Dolstra1-2/+12
2010-05-31 Add XML output to `nix-store'.Ludovic Courtès1-2/+12
* 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.
2010-05-04 * Allow unprivileged users to do `nix-store --clear-failed-paths' andEelco Dolstra1-2/+2
`nix-store --query-failed-paths'.
2010-04-26 * Added a command `nix-store --clear-failed-paths <PATHS>' to clearEelco Dolstra1-1/+11
the "failed" status of the given store paths. The special value `*' clears all failed paths.
2010-04-26 * Add an command `nix-store --query-failed-paths' to list the cachedEelco Dolstra1-3/+14
failed paths (when using the `build-cache-failure' option).
2010-02-24 * `helpText' is now zero-terminated.Eelco Dolstra1-1/+1
2010-01-25 * Made `nix-store -qR --include-outputs' much faster if there areEelco Dolstra1-38/+2
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).
2009-11-24 * Templatise getIntArg / string2Int.Eelco Dolstra1-3/+3
2009-11-23 * A command `nix-store --query --roots <paths>' to find the garbageEelco Dolstra1-24/+23
collector roots that point (directly or indirectly) to the given paths.
2009-11-23 * `nix-store --gc --print-roots': also print the path of the actualEelco Dolstra1-7/+16
root symlink, not just its target. E.g.: /nix/var/nix/profiles/system-99-link -> /nix/store/76kwf88657nq7wgk1hx3l1z5q91zb9wd-system
2009-11-20 * Remove the --use-atime / --max-atime garbage collector flags. ManyEelco Dolstra1-5/+0
(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.
2009-03-26 * Don't use ULLONG_MAX in maxFreed - use 0 to mean "no limit".Eelco Dolstra1-1/+4
18446744073709551615ULL breaks on GCC 3.3.6 (`integer constant is too large for "long" type').
2009-03-22 * Better error message when nix-store --import is applied to garbageEelco Dolstra1-1/+1
(previously it would likely say "implementation cannot deal with > 32-bit integers").
2009-03-22 * NAR archives: handle files larger than 2^32 bytes. Previously itEelco Dolstra1-3/+6
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.
2008-12-12 * Simplify deleting .lock files in /nix/store: just don't delete themEelco Dolstra1-1/+1
if they belong a path that's currently being built. This gets rid of some Cygwin-specific code.
2008-12-03 * Pass HashType values instead of strings.Eelco Dolstra1-3/+3
2008-12-03 * Unify the treatment of sources copied to the store, and recursiveEelco Dolstra1-1/+4
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).
2008-11-19 * nix-store --dump-db: be more streamy.Eelco Dolstra1-3/+3
2008-09-17 * GC option `--max-atime' that specifies an upper limit to the lastEelco Dolstra1-1/+7
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")
2008-09-17 * nix-store --gc / --delete: show how many store paths were deleted.Eelco Dolstra1-1/+2
2008-09-17 * Garbage collector: added an option `--use-atime' to delete paths inEelco Dolstra1-17/+10
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().
2008-08-04 * `nix-store --realise': print what paths will be built/downloaded,Eelco Dolstra1-13/+16
just like nix-env. * `nix-store --realise': --dry-run option.
2008-06-18 * Garbage collector: option `--max-freed' to stop after at least NEelco Dolstra1-1/+7
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).
2008-06-18 * Some refactoring: put the GC options / results in separate structs.Eelco Dolstra1-28/+29
* The garbage collector now also prints the number of blocks freed.
2008-06-09 * Merged the no-bdb branch (-r10900:HEADEelco Dolstra1-12/+12
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
2008-01-29 * nix-store --dump-db / --load-db to dump/load the Nix DB.Eelco Dolstra1-11/+46
* nix-store --register-validity: option to supply the content hash of each path. * Removed compatibility with Nix <= 0.7 stores.
2007-11-29 * nix-env -e: support uninstalling by path, so that one can sayEelco Dolstra1-24/+12
$ 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.
2007-11-16 * nix-store --import: add a flag --require-signature.Eelco Dolstra1-2/+7
2007-10-10 * Doh.Eelco Dolstra1-1/+1
2007-10-10 * nix-store --optimise: flag "--dry-run" to just query what the diskEelco Dolstra1-2/+5
savings would be.
2007-10-09 * New command `nix-store --optimise' to reduce Nix store disk spaceEelco Dolstra1-3/+49
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).
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra1-64/+2
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).
2007-06-12 * Support queryDeriver() in multi-user installations.Eelco Dolstra1-2/+2
2007-02-21 * Flush cout to show progress.Eelco Dolstra1-1/+1