diff options
author | Mark H Weaver <mhw@netris.org> | 2015-01-06 12:57:15 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2015-01-06 12:57:15 -0500 |
commit | 23800e47361304682914314b99cfd4f3926f28e3 (patch) | |
tree | e67d984ab5961a81c8b8c6396c79cb218fecda85 /nix/libstore/derivations.cc | |
parent | 9b1bf33081652210502c6ef34506e27a9bc60f06 (diff) | |
parent | aebb05b09502be00fb121f9c6cd74a190fb12a1c (diff) | |
download | guix-23800e47361304682914314b99cfd4f3926f28e3.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'nix/libstore/derivations.cc')
-rw-r--r-- | nix/libstore/derivations.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/nix/libstore/derivations.cc b/nix/libstore/derivations.cc index d91e42784c..b452aa2caf 100644 --- a/nix/libstore/derivations.cc +++ b/nix/libstore/derivations.cc @@ -48,7 +48,7 @@ static Path parsePath(std::istream & str) { string s = parseString(str); if (s.size() == 0 || s[0] != '/') - throw Error(format("bad path `%1%' in derivation") % s); + throw FormatError(format("bad path `%1%' in derivation") % s); return s; } @@ -62,7 +62,7 @@ static StringSet parseStrings(std::istream & str, bool arePaths) } -Derivation parseDerivation(const string & s) +static Derivation parseDerivation(const string & s) { Derivation drv; std::istringstream str(s); @@ -112,6 +112,16 @@ Derivation parseDerivation(const string & s) } +Derivation readDerivation(const Path & drvPath) +{ + try { + return parseDerivation(readFile(drvPath)); + } catch (FormatError & e) { + throw Error(format("error parsing derivation `%1%': %2%") % drvPath % e.msg()); + } +} + + static void printString(string & res, const string & s) { res += '"'; @@ -240,7 +250,7 @@ Hash hashDerivationModulo(StoreAPI & store, Derivation drv) Hash h = drvHashes[i->first]; if (h.type == htUnknown) { assert(store.isValidPath(i->first)); - Derivation drv2 = parseDerivation(readFile(i->first)); + Derivation drv2 = readDerivation(i->first); h = hashDerivationModulo(store, drv2); drvHashes[i->first] = h; } |