Warn about missing -I paths

Fixes #121.  Note that we don't warn about missing $NIX_PATH entries
because it's intended that some may be missing (cf. the default
$NIX_PATH on NixOS, which includes paths like /etc/nixos/nixpkgs for
backward compatibility).
This commit is contained in:
Eelco Dolstra 2014-02-26 15:21:56 +01:00
parent 733214144a
commit f14ef84a51
3 changed files with 6 additions and 5 deletions

View File

@ -13,7 +13,7 @@ bool parseOptionArg(const string & arg, Strings::iterator & i,
if (arg != "--arg" && arg != "--argstr") return false; if (arg != "--arg" && arg != "--argstr") return false;
UsageError error(format("`%1%' requires two arguments") % arg); UsageError error(format("`%1%' requires two arguments") % arg);
if (i == argsEnd) throw error; if (i == argsEnd) throw error;
string name = *i++; string name = *i++;
if (i == argsEnd) throw error; if (i == argsEnd) throw error;
@ -39,7 +39,7 @@ bool parseSearchPathArg(const string & arg, Strings::iterator & i,
{ {
if (arg != "-I") return false; if (arg != "-I") return false;
if (i == argsEnd) throw UsageError(format("`%1%' requires an argument") % arg);; if (i == argsEnd) throw UsageError(format("`%1%' requires an argument") % arg);;
state.addToSearchPath(*i++); state.addToSearchPath(*i++, true);
return true; return true;
} }

View File

@ -120,7 +120,7 @@ public:
EvalState(); EvalState();
~EvalState(); ~EvalState();
void addToSearchPath(const string & s); void addToSearchPath(const string & s, bool warn = false);
/* Parse a Nix expression from the specified file. */ /* Parse a Nix expression from the specified file. */
Expr * parseExprFromFile(const Path & path); Expr * parseExprFromFile(const Path & path);

View File

@ -608,7 +608,7 @@ Expr * EvalState::parseExprFromString(const string & s, const Path & basePath)
} }
void EvalState::addToSearchPath(const string & s) void EvalState::addToSearchPath(const string & s, bool warn)
{ {
size_t pos = s.find('='); size_t pos = s.find('=');
string prefix; string prefix;
@ -624,7 +624,8 @@ void EvalState::addToSearchPath(const string & s)
if (pathExists(path)) { if (pathExists(path)) {
debug(format("adding path `%1%' to the search path") % path); debug(format("adding path `%1%' to the search path") % path);
searchPath.insert(searchPathInsertionPoint, std::pair<string, Path>(prefix, path)); searchPath.insert(searchPathInsertionPoint, std::pair<string, Path>(prefix, path));
} } else if (warn)
printMsg(lvlError, format("warning: Nix search path entry `%1%' does not exist, ignoring") % path);
} }