aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArtemis Tosini <me@artem.ist>2024-07-07 18:06:08 +0000
committerArtemis Tosini <me@artem.ist>2024-07-07 18:06:08 +0000
commitd461cc1d7b2f489c3886f147166ba5b5e0e37541 (patch)
treede58b03389fda19903ba74ebafee9e3cca321df5 /src
parent55a32f24d3285c0b4f6866e16a4c8aeac6345c02 (diff)
libstore: make LocalDerivationGoal::needsHashRewrite virtual
This rather simple function existed just to check some flags, but the response varies by platform. This is a perfect case for our subclasses. Change-Id: Ieb1732a8d024019236e0d0028ad843a24ec3dc59
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build/local-derivation-goal.cc7
-rw-r--r--src/libstore/build/local-derivation-goal.hh2
-rw-r--r--src/libstore/platform/darwin.hh7
3 files changed, 9 insertions, 7 deletions
diff --git a/src/libstore/build/local-derivation-goal.cc b/src/libstore/build/local-derivation-goal.cc
index 6a298e6eb..d523ef51f 100644
--- a/src/libstore/build/local-derivation-goal.cc
+++ b/src/libstore/build/local-derivation-goal.cc
@@ -117,14 +117,9 @@ LocalDerivationGoal::~LocalDerivationGoal() noexcept(false)
}
-inline bool LocalDerivationGoal::needsHashRewrite()
+bool LocalDerivationGoal::needsHashRewrite()
{
-#if __linux__
return !useChroot;
-#else
- /* Darwin requires hash rewriting even when sandboxing is enabled. */
- return true;
-#endif
}
diff --git a/src/libstore/build/local-derivation-goal.hh b/src/libstore/build/local-derivation-goal.hh
index 727a7f406..4ac18b974 100644
--- a/src/libstore/build/local-derivation-goal.hh
+++ b/src/libstore/build/local-derivation-goal.hh
@@ -206,7 +206,7 @@ struct LocalDerivationGoal : public DerivationGoal
/**
* Whether we need to perform hash rewriting if there are valid output paths.
*/
- bool needsHashRewrite();
+ virtual bool needsHashRewrite();
/**
* The additional states.
diff --git a/src/libstore/platform/darwin.hh b/src/libstore/platform/darwin.hh
index 70e8a8587..111d50d87 100644
--- a/src/libstore/platform/darwin.hh
+++ b/src/libstore/platform/darwin.hh
@@ -52,6 +52,13 @@ private:
* Set process flags to enter or leave rosetta, then execute the builder
*/
void execBuilder(std::string builder, Strings args, Strings envStrs) override;
+
+ /**
+ * Whether we need to rewrite output hashes.
+ * Always true on Darwin since Darwin requires hash rewriting
+ * even when sandboxing is enabled.
+ */
+ bool needsHashRewrite() override { return true; };
};
}