From 3849bb79c5453fb10f66549a0a226a4fe4749fdb Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 6 Aug 2019 10:22:57 +0100 Subject: Support filtering by systems and targets when comparing derivations --- guix-data-service/comparison.scm | 42 ++++++++++++++++++++++++++++++------ guix-data-service/web/controller.scm | 4 +++- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/guix-data-service/comparison.scm b/guix-data-service/comparison.scm index 18f7c35..19551a6 100644 --- a/guix-data-service/comparison.scm +++ b/guix-data-service/comparison.scm @@ -15,9 +15,37 @@ package-data-version-changes package-data-derivation-changes)) -(define (package-differences-data conn base_guix_revision_id target_guix_revision_id) +(define* (package-differences-data conn + base_guix_revision_id + target_guix_revision_id + #:key + (systems #f) + (targets #f)) + (define extra-constraints + (string-append + (if systems + (string-append + " AND package_derivations.system IN (" + (string-join (map + (lambda (s) + (string-append "'" s "'")) + systems) + ", ") + ")") + "") + (if targets + (string-append + " AND package_derivations.target IN (" + (string-join (map + (lambda (s) + (string-append "'" s "'")) + targets) + ", ") + ")") + ""))) + (define query - " + (string-append " WITH base_packages AS ( SELECT packages.*, derivations.file_name, package_derivations.system, package_derivations.target @@ -30,8 +58,8 @@ WITH base_packages AS ( SELECT guix_revision_package_derivations.package_derivation_id FROM guix_revision_package_derivations WHERE revision_id = $1 - ) -), target_packages AS ( + )" extra-constraints +"), target_packages AS ( SELECT packages.*, derivations.file_name, package_derivations.system, package_derivations.target FROM packages @@ -43,8 +71,8 @@ WITH base_packages AS ( SELECT guix_revision_package_derivations.package_derivation_id FROM guix_revision_package_derivations WHERE revision_id = $2 - ) -) + )" extra-constraints +") SELECT base_packages.name, base_packages.version, base_packages.package_metadata_id, base_packages.file_name, base_packages.system, base_packages.target, @@ -62,7 +90,7 @@ WHERE target_packages.id IS NULL OR base_packages.id != target_packages.id OR base_packages.file_name != target_packages.file_name -ORDER BY base_packages.name DESC, base_packages.version, target_packages.name, target_packages.version") +ORDER BY base_packages.name DESC, base_packages.version, target_packages.name, target_packages.version")) (exec-query conn query (list base_guix_revision_id target_guix_revision_id))) diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 8c4530f..2d1fc72 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -433,7 +433,9 @@ ((data (package-differences-data conn (commit->revision-id conn base-commit) - (commit->revision-id conn target-commit))) + (commit->revision-id conn target-commit) + #:systems systems + #:targets targets)) (names-and-versions (package-data->names-and-versions data))) (let-values -- cgit v1.2.3