From 8635a5561b23b362babee9e0b3a04ccb79612972 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Mon, 10 Mar 2025 08:20:43 +0000 Subject: [PATCH] Add mechanism to fix derivation inputs Some derivations are missing inputs, I don't know why, but this should allow for manually fixing the affected derivations. --- guix-data-service/model/derivation.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index 4cb8db4..215b46f 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -55,6 +55,7 @@ select-fixed-output-package-derivations-in-revision select-derivation-outputs-in-revision fix-derivation-output-details-hash-encoding + fix-derivation-inputs insert-derivation-sources insert-derivation-source-file-nar insert-placeholder-derivation-source-file-nar @@ -974,6 +975,28 @@ LOCK TABLE ONLY derivation_output_details ;; Recurse in case there are more to fix (loop (find-old-derivations-and-hashes conn)))))))) +(define (fix-derivation-inputs conn drv) + (define (derivation-missing-inputs? conn drv-id) + (let ((inputs (select-derivation-inputs-by-derivation-id + conn + drv-id))) + ;; TODO Detect missing inputs, as well as them all missing + (null? inputs))) + + (with-postgresql-transaction + conn + (lambda (conn) + (match (select-derivation-by-file-name conn (derivation-file-name drv)) + ((drv-id rest ...) + (if (derivation-missing-inputs? conn drv-id) + (begin + (insert-derivation-inputs + conn + (vector drv-id) + (vector drv)) + #t) + #f)))))) + (define (derivation-output-details->derivation-output-details-ids conn derivation-output-details)