diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-26T14·21+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-26T14·21+0100 |
commit | f14ef84a51e211b3924f59333d98d838ab500740 (patch) | |
tree | 92499d194fcaaac9638ed77ddc610f362cd2285d | |
parent | 733214144a7a910001c1c82683db780853bac9b1 (diff) |
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).
-rw-r--r-- | src/libexpr/common-opts.cc | 4 | ||||
-rw-r--r-- | src/libexpr/eval.hh | 2 | ||||
-rw-r--r-- | src/libexpr/parser.y | 5 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/libexpr/common-opts.cc b/src/libexpr/common-opts.cc index 0ee889a995ef..9b3421f6c4bc 100644 --- a/src/libexpr/common-opts.cc +++ b/src/libexpr/common-opts.cc @@ -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; } diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index 5ae5a1e3cf24..6da89c58a6ae 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -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); diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index 8a084fea0697..dc995db00d59 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -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); } |