From 0f017f5f138c4760ba27b8aa5cc79d23e0c665e1 Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Mon, 17 Feb 2025 22:57:24 -0600 Subject: [PATCH] use sets and fixup multihost cache build --- pkgs/oizys/src/oizys/nix.nim | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/oizys/src/oizys/nix.nim b/pkgs/oizys/src/oizys/nix.nim index c2f0183..857c7e5 100644 --- a/pkgs/oizys/src/oizys/nix.nim +++ b/pkgs/oizys/src/oizys/nix.nim @@ -224,7 +224,7 @@ proc getSystemPathInputDrvs*(): seq[string] = for inputDrv, _ in drv.inputDrvs: inputDrv -proc missingDrvNixEvalJobs*(): seq[NixEvalOutput] = +proc missingDrvNixEvalJobs*(): HashSet[NixEvalOutput] = ## get all derivations not cached using nix-eval-jobs var cmd = "nix-eval-jobs" cmd.addArgs "--flake", "--check-cache-status" @@ -232,27 +232,28 @@ proc missingDrvNixEvalJobs*(): seq[NixEvalOutput] = for host in getHosts(): let (o, _) = runCmdCaptWithSpinner( - cmd & (getFlake() & "#systemPaths." & host), + fmt"{cmd} {getFlake()}#systemPaths.{host}", bb"running [b]nix-eval-jobs[/] for system path: " & host.bb("bold") ) output.add o - var cached: seq[NixEvalOutput] - var ignored: seq[NixEvalOutput] + var cached: HashSet[NixEvalOutput] + var ignored: HashSet[NixEvalOutput] for line in output.strip().splitLines(): let output = line.fromJson(NixEvalOutput) if output.isCached: - cached.add output + cached.incl output elif output.name.isIgnored(): - ignored.add output + ignored.incl output else: - result.add output + result.incl output debug "cached derivations: ", bb($cached.len, "yellow") debug "ignored derivations: ", bb($ignored.len, "yellow") - result = result.toSet().toSeq() +func fmtDrvsForNix*(drvs: HashSet[NixEvalOutput]): string {.inline.} = + drvs.mapIt(it.drvPath & "^*").join(" ") func fmtDrvsForNix*(drvs: seq[NixEvalOutput]): string {.inline.} = drvs.mapIt(it.drvPath & "^*").join(" ")