about summary refs log tree commit diff
path: root/src/nix-store
AgeCommit message (Collapse)AuthorFilesLines
2012-07-23 optimiseStore(): Use a content-addressed file store in /nix/store/.linksEelco Dolstra1-8/+2
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.
2012-07-18 Use "#pragma once" to prevent repeated header file inclusionEelco Dolstra2-8/+2
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 Dolstra2-9/+34
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-04-04 Include --keep-going in --helpEelco Dolstra1-0/+2
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 Dolstra2-1/+26
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 Dolstra2-5/+11
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 Dolstra6-4/+101
2010-05-31 Add XML output to `nix-store'.Ludovic Courtès5-3/+100
* 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-31 Comment out dead code in `nix-store'.Ludovic Courtès1-1/+1
* src/nix-store/dotgraph.cc (pathLabel): Move within #if 0 section.
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 (no commit message)Eelco Dolstra1-0/+3
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-04-19 * Drop the dependency on the ATerm library.Eelco Dolstra1-2/+2
2010-03-02 * When using the included sqlite/aterm libraries, build withEelco Dolstra1-2/+2
--enable-shared. * In libutil/libstore/libexpr etc., link against sqlite and aterm. * Some more header file hygiene.
2010-02-24 * `helpText' is now zero-terminated.Eelco Dolstra1-1/+1
2010-02-24 * ADDITIONAL_NETWORK_LIBS -> LIBS.Eelco Dolstra1-1/+1
2010-02-24 * Add ${sqlite_lib} everywhere. Just adding it in `libstore' doesn'tEelco Dolstra1-1/+1
work on x86_64 when sqlite is compiled statically.
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 Dolstra2-31/+31
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-11-06 * Remove support for old (before Nix 0.12pre12020) databases.Eelco Dolstra1-2/+2
2009-10-08 Added optional parameter which adds -lnsl -lsocket to make the Nix package ↵Sander van der Burg1-1/+1
manager work on OpenSolaris
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-11-11 * Typo.Eelco Dolstra1-1/+1
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.