aboutsummaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-01-11 16:55:04 +0100
committerLudovic Courtès <ludo@gnu.org>2014-01-24 00:01:49 +0100
commit349fd3b11f320453ad8eeb3031621d0ffcaf078d (patch)
tree31cabce1d4fc986e2b43cb0af94844a3b6db90f7 /nix
parent5674a3fdb6b4b0f744e2339167d415d8a7a265a0 (diff)
downloadguix-349fd3b11f320453ad8eeb3031621d0ffcaf078d.tar
guix-349fd3b11f320453ad8eeb3031621d0ffcaf078d.tar.gz
guix-register: Support registration in the current store, without '--prefix'.
* nix/guix-register/guix-register.cc (register_validity): Leave 'info.path' unmodified when PREFIX is empty. (main): Call 'settings.processEnvironment' early on. Leave 'settings.nixStore' unmodified when PREFIX is empty.
Diffstat (limited to 'nix')
-rw-r--r--nix/guix-register/guix-register.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/nix/guix-register/guix-register.cc b/nix/guix-register/guix-register.cc
index 14478f6a13..324673f346 100644
--- a/nix/guix-register/guix-register.cc
+++ b/nix/guix-register/guix-register.cc
@@ -1,5 +1,5 @@
/* GNU Guix --- Functional package management for GNU
- Copyright (C) 2013 Ludovic Courtès <ludo@gnu.org>
+ Copyright (C) 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012,
2013 Eelco Dolstra <eelco.dolstra@logicblox.com>
@@ -133,10 +133,13 @@ register_validity (LocalStore *store, std::istream &input,
if (info.path == "")
break;
- /* Rewrite the input to refer final name, as if we were in a chroot
- under PREFIX. */
- std::string final_prefix (NIX_STORE_DIR "/");
- info.path = final_prefix + baseNameOf (info.path);
+ if (!prefix.empty ())
+ {
+ /* Rewrite the input to refer to the final name, as if we were in a
+ chroot under PREFIX. */
+ std::string final_prefix (NIX_STORE_DIR "/");
+ info.path = final_prefix + baseNameOf (info.path);
+ }
/* Keep its real path to canonicalize it and compute its hash. */
std::string real_path;
@@ -165,6 +168,9 @@ register_validity (LocalStore *store, std::istream &input,
int
main (int argc, char *argv[])
{
+ /* Honor the environment variables, and initialize the settings. */
+ settings.processEnvironment ();
+
try
{
argp_parse (&argp, argc, argv, 0, 0, 0);
@@ -173,10 +179,11 @@ main (int argc, char *argv[])
'settings.nixStore', 'settings.nixDBPath', etc. */
LocalStore store;
- /* Under the --prefix tree, the final name of the store will be
- NIX_STORE_DIR. Set it here so that the database uses file names
- prefixed by NIX_STORE_DIR and not PREFIX + NIX_STORE_DIR. */
- settings.nixStore = NIX_STORE_DIR;
+ if (!prefix.empty ())
+ /* Under the --prefix tree, the final name of the store will be
+ NIX_STORE_DIR. Set it here so that the database uses file names
+ prefixed by NIX_STORE_DIR and not PREFIX + NIX_STORE_DIR. */
+ settings.nixStore = NIX_STORE_DIR;
register_validity (&store, *input);
}