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

View file

@ -120,7 +120,7 @@ public:
EvalState();
~EvalState();
void addToSearchPath(const string & s);
void addToSearchPath(const string & s, bool warn = false);
/* Parse a Nix expression from the specified file. */
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('=');
string prefix;
@ -624,7 +624,8 @@ void EvalState::addToSearchPath(const string & s)
if (pathExists(path)) {
debug(format("adding path `%1%' to the search path") % 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);
}