From 88bd0c25f2f0fda6502653f40e88c6d377bc4617 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sat, 27 Sep 2025 16:03:43 -0400 Subject: [PATCH] `Store::registerDrvOutput` make pure virtual It should be the responsibility of implementations that don't implement it to say so. See also PR #9799, and issue #5729 --- src/libstore/dummy-store.cc | 5 +++++ src/libstore/include/nix/store/legacy-ssh-store.hh | 7 ++++++- src/libstore/include/nix/store/store-api.hh | 5 +---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/libstore/dummy-store.cc b/src/libstore/dummy-store.cc index 4b485ca66..43c575263 100644 --- a/src/libstore/dummy-store.cc +++ b/src/libstore/dummy-store.cc @@ -258,6 +258,11 @@ struct DummyStore : virtual Store return path; } + void registerDrvOutput(const Realisation & output) override + { + unsupported("registerDrvOutput"); + } + void narFromPath(const StorePath & path, Sink & sink) override { bool visited = contents.cvisit(path, [&](const auto & kv) { diff --git a/src/libstore/include/nix/store/legacy-ssh-store.hh b/src/libstore/include/nix/store/legacy-ssh-store.hh index 75751e2d1..c91f88a84 100644 --- a/src/libstore/include/nix/store/legacy-ssh-store.hh +++ b/src/libstore/include/nix/store/legacy-ssh-store.hh @@ -109,7 +109,7 @@ struct LegacySSHStore : public virtual Store unsupported("addToStore"); } - virtual StorePath addToStoreFromDump( + StorePath addToStoreFromDump( Source & dump, std::string_view name, FileSerialisationMethod dumpMethod = FileSerialisationMethod::NixArchive, @@ -121,6 +121,11 @@ struct LegacySSHStore : public virtual Store unsupported("addToStore"); } + void registerDrvOutput(const Realisation & output) override + { + unsupported("registerDrvOutput"); + } + public: BuildResult buildDerivation(const StorePath & drvPath, const BasicDerivation & drv, BuildMode buildMode) override; diff --git a/src/libstore/include/nix/store/store-api.hh b/src/libstore/include/nix/store/store-api.hh index 6d3f6b8d0..1131ec975 100644 --- a/src/libstore/include/nix/store/store-api.hh +++ b/src/libstore/include/nix/store/store-api.hh @@ -598,10 +598,7 @@ public: * floating-ca derivations and their dependencies as there's no way to * retrieve this information otherwise. */ - virtual void registerDrvOutput(const Realisation & output) - { - unsupported("registerDrvOutput"); - } + virtual void registerDrvOutput(const Realisation & output) = 0; virtual void registerDrvOutput(const Realisation & output, CheckSigsFlag checkSigs) {