aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/derivations.cc
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2020-07-12 15:26:30 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-07-12 15:40:14 +0000
commit18152406ce9db9491385f2e67da6f7f78e8d98d5 (patch)
treeab5d8caa50780fd47805aece9e92f00faea1dc3b /src/libstore/derivations.cc
parent5d0b75e5b6a1c70203257fecc25743e5a1e009cb (diff)
String .drv suffix to create derivation name
Diffstat (limited to 'src/libstore/derivations.cc')
-rw-r--r--src/libstore/derivations.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc
index 97fd21885..a85a70c0a 100644
--- a/src/libstore/derivations.cc
+++ b/src/libstore/derivations.cc
@@ -218,7 +218,7 @@ Derivation Store::readDerivation(const StorePath & drvPath)
{
auto accessor = getFSAccessor();
try {
- return parseDerivation(*this, accessor->readFile(printStorePath(drvPath)), std::string(drvPath.name()));
+ return parseDerivation(*this, accessor->readFile(printStorePath(drvPath)), Derivation::nameFromPath(drvPath));
} catch (FormatError & e) {
throw Error("error parsing derivation '%s': %s", printStorePath(drvPath), e.msg());
}
@@ -465,6 +465,15 @@ StringSet BasicDerivation::outputNames() const
}
+std::string_view BasicDerivation::nameFromPath(const StorePath & drvPath) {
+ auto nameWithSuffix = drvPath.name();
+ constexpr std::string_view extension = ".drv";
+ assert(hasSuffix(nameWithSuffix, extension));
+ nameWithSuffix.remove_suffix(extension.size());
+ return nameWithSuffix;
+}
+
+
Source & readDerivation(Source & in, const Store & store, BasicDerivation & drv, std::string_view name)
{
drv.name = name;