From acd9dbfc556daef89ea1bf593027cda0d3ee7750 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 13 Oct 2025 16:00:27 -0400 Subject: [PATCH] Update dummy store JSON format to include derivations --- src/libstore-tests/data/dummy-store/empty.json | 1 + .../data/dummy-store/one-derivation.json | 18 ++++++++++++++++++ .../data/dummy-store/one-flat-file.json | 1 + src/libstore-tests/dummy-store.cc | 10 ++++++++++ src/libstore/dummy-store.cc | 11 +++++++++++ 5 files changed, 41 insertions(+) create mode 100644 src/libstore-tests/data/dummy-store/one-derivation.json diff --git a/src/libstore-tests/data/dummy-store/empty.json b/src/libstore-tests/data/dummy-store/empty.json index b22902334..976a05843 100644 --- a/src/libstore-tests/data/dummy-store/empty.json +++ b/src/libstore-tests/data/dummy-store/empty.json @@ -1,5 +1,6 @@ { "build-trace": {}, "contents": {}, + "derivations": {}, "store-dir": "/nix/store" } diff --git a/src/libstore-tests/data/dummy-store/one-derivation.json b/src/libstore-tests/data/dummy-store/one-derivation.json new file mode 100644 index 000000000..201418db6 --- /dev/null +++ b/src/libstore-tests/data/dummy-store/one-derivation.json @@ -0,0 +1,18 @@ +{ + "build-trace": {}, + "contents": {}, + "derivations": { + "rlqjbbb65ggcx9hy577hvnn929wz1aj0-foo.drv": { + "args": [], + "builder": "", + "env": {}, + "inputDrvs": {}, + "inputSrcs": [], + "name": "foo", + "outputs": {}, + "system": "", + "version": 4 + } + }, + "store-dir": "/nix/store" +} diff --git a/src/libstore-tests/data/dummy-store/one-flat-file.json b/src/libstore-tests/data/dummy-store/one-flat-file.json index 035accb78..d98990baa 100644 --- a/src/libstore-tests/data/dummy-store/one-flat-file.json +++ b/src/libstore-tests/data/dummy-store/one-flat-file.json @@ -30,5 +30,6 @@ } } }, + "derivations": {}, "store-dir": "/nix/store" } diff --git a/src/libstore-tests/dummy-store.cc b/src/libstore-tests/dummy-store.cc index 2429bdc2b..36a0c3019 100644 --- a/src/libstore-tests/dummy-store.cc +++ b/src/libstore-tests/dummy-store.cc @@ -115,6 +115,16 @@ INSTANTIATE_TEST_SUITE_P(DummyStoreJSON, DummyStoreJsonTest, [] { HashAlgorithm::SHA256); return store; }(), + }, + std::pair{ + "one-derivation", + [&] { + auto store = writeCfg->openDummyStore(); + Derivation drv; + drv.name = "foo"; + store->writeDerivation(drv); + return store; + }(), }); }()); diff --git a/src/libstore/dummy-store.cc b/src/libstore/dummy-store.cc index 0057783a9..ba74ba826 100644 --- a/src/libstore/dummy-store.cc +++ b/src/libstore/dummy-store.cc @@ -422,6 +422,8 @@ ref adl_serializer>::from_json(const json & json) }(); for (auto & [k, v] : getObject(valueAt(obj, "contents"))) res->contents.insert({StorePath{k}, v}); + for (auto & [k, v] : getObject(valueAt(obj, "derivations"))) + res->derivations.insert({StorePath{k}, v}); for (auto & [k0, v] : getObject(valueAt(obj, "build-trace"))) { for (auto & [k1, v2] : getObject(v)) { auto vref = make_ref(v2); @@ -449,6 +451,15 @@ void adl_serializer>::to_json(json & json, const ref }); return obj; }()}, + {"derivations", + [&] { + auto obj = json::object(); + val->derivations.cvisit_all([&](const auto & kv) { + auto & [k, v] = kv; + obj[k.to_string()] = v; + }); + return obj; + }()}, {"build-trace", [&] { auto obj = json::object();