guix-register: Allow the initial directory creation to proceed.
This fixes a bug whereby 'guix-register' would bail out when trying to create NIX_STORE_DIR/.links when NIX_STORE_DIR is read-only. * nix/guix-register/guix-register.cc (parse_opt): Initialize 'settings.nixStore' to PREFIX + NIX_STORE_DIR. (main): Change 'settings.nixStore' once the 'LocalStore' has been instantiated.
This commit is contained in:
parent
9d3c4daed3
commit
923206f79b
|
@ -75,7 +75,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
|
||||||
case 'p':
|
case 'p':
|
||||||
{
|
{
|
||||||
prefix = canonPath (arg);
|
prefix = canonPath (arg);
|
||||||
settings.nixStore = NIX_STORE_DIR;
|
settings.nixStore = prefix + NIX_STORE_DIR;
|
||||||
settings.nixDataDir = prefix + NIX_DATA_DIR;
|
settings.nixDataDir = prefix + NIX_DATA_DIR;
|
||||||
settings.nixLogDir = prefix + NIX_LOG_DIR;
|
settings.nixLogDir = prefix + NIX_LOG_DIR;
|
||||||
settings.nixStateDir = prefix + NIX_STATE_DIR;
|
settings.nixStateDir = prefix + NIX_STATE_DIR;
|
||||||
|
@ -169,7 +169,15 @@ main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argp_parse (&argp, argc, argv, 0, 0, 0);
|
argp_parse (&argp, argc, argv, 0, 0, 0);
|
||||||
|
|
||||||
|
/* Instantiate the store. This creates any missing directories among
|
||||||
|
'settings.nixStore', 'settings.nixDBPath', etc. */
|
||||||
LocalStore store;
|
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;
|
||||||
|
|
||||||
register_validity (&store, *input);
|
register_validity (&store, *input);
|
||||||
}
|
}
|
||||||
catch (std::exception &e)
|
catch (std::exception &e)
|
||||||
|
|
Loading…
Reference in New Issue