1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-04 15:31:47 +02:00

* The environment variable NIX_ROOT can now be set to execute Nix in a

chroot() environment.
* A operation `--validpath' to register path validity.  Useful for
  bootstrapping in a pure Nix environment.
* Safety checks: ensure that files involved in store operations are in
  the store.
This commit is contained in:
Eelco Dolstra 2004-02-14 21:44:18 +00:00
parent 6f5a5ea5ea
commit 76c0e85929
4 changed files with 70 additions and 12 deletions

View file

@ -9,8 +9,10 @@ Operations:
--add / -A: copy a path to the Nix store
--query / -q: query information
--successor: register a successor expression
--substitute: register a substitute expression
--successor: register a successor expression (dangerous!)
--substitute: register a substitute expression (dangerous!)
--validpath: register path validity (dangerous!)
--isvalid: check path validity
--dump: dump a path as a Nix archive
--restore: restore a path from a Nix archive

View file

@ -185,6 +185,30 @@ static void opSubstitute(Strings opFlags, Strings opArgs)
}
static void opValidPath(Strings opFlags, Strings opArgs)
{
if (!opFlags.empty()) throw UsageError("unknown flag");
Transaction txn;
createStoreTransaction(txn);
for (Strings::iterator i = opArgs.begin();
i != opArgs.end(); ++i)
registerValidPath(txn, *i);
txn.commit();
}
static void opIsValid(Strings opFlags, Strings opArgs)
{
if (!opFlags.empty()) throw UsageError("unknown flag");
for (Strings::iterator i = opArgs.begin();
i != opArgs.end(); ++i)
if (!isValidPath(*i))
throw Error(format("path `%1%' is not valid") % *i);
}
/* A sink that writes dump output to stdout. */
struct StdoutSink : DumpSink
{
@ -273,6 +297,10 @@ void run(Strings args)
op = opSuccessor;
else if (arg == "--substitute")
op = opSubstitute;
else if (arg == "--validpath")
op = opValidPath;
else if (arg == "--isvalid")
op = opIsValid;
else if (arg == "--dump")
op = opDump;
else if (arg == "--restore")
@ -292,7 +320,8 @@ void run(Strings args)
if (!op) throw UsageError("no operation specified");
openDB();
if (op != opDump && op != opRestore) /* !!! hack */
openDB();
op(opFlags, opArgs);
}