aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-08-06 10:22:57 +0100
committerChristopher Baines <mail@cbaines.net>2019-08-06 10:22:57 +0100
commit3849bb79c5453fb10f66549a0a226a4fe4749fdb (patch)
tree5a6644e52466b4abf24b8103dc4a0e7cb2b31919
parent36a16d356f526bcc3425147ffc6a36df1c1a1782 (diff)
downloaddata-service-3849bb79c5453fb10f66549a0a226a4fe4749fdb.tar
data-service-3849bb79c5453fb10f66549a0a226a4fe4749fdb.tar.gz
Support filtering by systems and targets when comparing derivations
-rw-r--r--guix-data-service/comparison.scm42
-rw-r--r--guix-data-service/web/controller.scm4
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