From 096ed8ff1c86271e292959b6414942da0f4abc7b Mon Sep 17 00:00:00 2001 From: Richard Date: Sat, 3 Feb 2024 07:31:57 +0000 Subject: [PATCH] Workaround for fetching git submodules for flakes If a flake URI contains 'submodules=1' in the query part then any submodules should be fetched/initialized. At present, hydra-eval-jobset uses the 'url' field of the flake metadata as the flake URI. This URI is missing the 'submodules=1' query, which is present elsewhere in the metadata. This PR appends "&submodules=1" if the flake metadata indicates submodules are used (specifically, if the resolved.submodules field is true). --- src/script/hydra-eval-jobset | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/script/hydra-eval-jobset b/src/script/hydra-eval-jobset index 7ed7ebe8..fb377254 100755 --- a/src/script/hydra-eval-jobset +++ b/src/script/hydra-eval-jobset @@ -645,10 +645,16 @@ sub checkJobsetWrapped { if (defined $flakeRef) { (my $res, my $json, my $stderr) = captureStdoutStderr( 600, "nix", "flake", "metadata", "--refresh", "--json", "--", $flakeRef); + die "'nix flake metadata' returned " . ($res & 127 ? "signal $res" : "exit code " . ($res >> 8)) . ":\n" . ($stderr ? decode("utf-8", $stderr) : "(no output)\n") if $res; - $flakeRef = decode_json($json)->{'url'}; + my $decoded = decode_json($json); + my $url = $decoded->{'url'}; # Doesn't have the &submodules=1, so add it back if needed + if ($decoded->{'resolved'}->{'submodules'}) { + $url = $url . "&submodules=1"; + } + $flakeRef = $url; } Net::Statsd::increment("hydra.evaluator.checkouts");