From 76c0e85929dc747288a8fe66a7bb77673cf2aa7e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 14 Feb 2004 21:44:18 +0000 Subject: * 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. --- src/nix-store/main.cc | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/nix-store/main.cc') diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc index 078618a5db34..4be8e8f4495b 100644 --- a/src/nix-store/main.cc +++ b/src/nix-store/main.cc @@ -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); } -- cgit 1.4.1