diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2020-08-19 15:54:50 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2020-08-19 15:54:50 +0000 |
commit | d5af5763cff2811f6f8c0786c5bf9dd6a61b8669 (patch) | |
tree | bfccbcbe91a99e3f081f64c746ff2916b43448b0 /src/libstore/builtins/fetchurl.cc | |
parent | 02639716eae1af1c2cbbb1760a14d055f23d1ff5 (diff) | |
parent | 1c8b550e34414d0f4cb0fa20322a2dfe06ce2de0 (diff) |
Merge branch 'master' of github.com:NixOS/nix into remove-storetype-delegate-regStore
Diffstat (limited to 'src/libstore/builtins/fetchurl.cc')
-rw-r--r-- | src/libstore/builtins/fetchurl.cc | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/libstore/builtins/fetchurl.cc b/src/libstore/builtins/fetchurl.cc index e630cf6f1..4fb5d8a06 100644 --- a/src/libstore/builtins/fetchurl.cc +++ b/src/libstore/builtins/fetchurl.cc @@ -58,17 +58,14 @@ void builtinFetchurl(const BasicDerivation & drv, const std::string & netrcData) } }; - /* We always have one output, and if it's a fixed-output derivation (as - checked below) it must be the only output */ - auto & output = drv.outputs.begin()->second; - /* Try the hashed mirrors first. */ - if (output.hash && output.hash->method == FileIngestionMethod::Flat) + if (getAttr("outputHashMode") == "flat") for (auto hashedMirror : settings.hashedMirrors.get()) try { if (!hasSuffix(hashedMirror, "/")) hashedMirror += '/'; - auto & h = output.hash->hash; - fetch(hashedMirror + printHashType(*h.type) + "/" + h.to_string(Base16, false)); + std::optional<HashType> ht = parseHashTypeOpt(getAttr("outputHashAlgo")); + Hash h = newHashAllowEmpty(getAttr("outputHash"), ht); + fetch(hashedMirror + printHashType(h.type) + "/" + h.to_string(Base16, false)); return; } catch (Error & e) { debug(e.what()); |