aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2020-06-17 15:39:10 +0200
committerregnat <rg@regnat.ovh>2020-06-17 15:41:17 +0200
commit56d75bf4fcb06da1a577c6e381f4afef57f30243 (patch)
tree10f3c803328c994d19fc0f4e66424edcd900f732 /src/libstore
parentccbea8255cf52413938d994a69222fd953b08659 (diff)
Reserve the `__contentAddressed` derivation parameter
Not implementing anything here, just throwing an error if a derivation sets `__contentAddressed = true` without `--experimental-features content-addressed-paths` (and also with it as there's nothing implemented yet)
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc11
-rw-r--r--src/libstore/parsed-derivations.cc5
-rw-r--r--src/libstore/parsed-derivations.hh2
3 files changed, 18 insertions, 0 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 53a0958aa..9b72175c7 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -809,6 +809,9 @@ private:
/* Whether this is a fixed-output derivation. */
bool fixedOutput;
+ /* Whether this is a content adressed derivation */
+ bool contentAddressed = false;
+
/* Whether to run the build in a private network namespace. */
bool privateNetwork = false;
@@ -1195,6 +1198,14 @@ void DerivationGoal::haveDerivation()
parsedDrv = std::make_unique<ParsedDerivation>(drvPath, *drv);
+ contentAddressed = parsedDrv->contentAddressed();
+
+ if (this->contentAddressed) {
+ settings.requireExperimentalFeature("content-addressed-paths");
+ throw Error("content-addressed-paths isn't implemented yet");
+ }
+
+
/* We are first going to try to create the invalid output paths
through substitutes. If that doesn't work, we'll build
them. */
diff --git a/src/libstore/parsed-derivations.cc b/src/libstore/parsed-derivations.cc
index 24f848e46..c7797b730 100644
--- a/src/libstore/parsed-derivations.cc
+++ b/src/libstore/parsed-derivations.cc
@@ -117,4 +117,9 @@ bool ParsedDerivation::substitutesAllowed() const
return getBoolAttr("allowSubstitutes", true);
}
+bool ParsedDerivation::contentAddressed() const
+{
+ return getBoolAttr("__contentAddressed", false);
+}
+
}
diff --git a/src/libstore/parsed-derivations.hh b/src/libstore/parsed-derivations.hh
index 7621342d7..d24d1eb4f 100644
--- a/src/libstore/parsed-derivations.hh
+++ b/src/libstore/parsed-derivations.hh
@@ -34,6 +34,8 @@ public:
bool willBuildLocally() const;
bool substitutesAllowed() const;
+
+ bool contentAddressed() const;
};
}