diff mbox series

[bug#52532] ci: Restrict substitute search to guix jobset.

Message ID CAPE069f4Lxz_hEh=8_UeiB4i_HBq6n7MQ6TtU-oDAVHCF3WyFA@mail.gmail.com
State Accepted
Headers show
Series [bug#52532] ci: Restrict substitute search to guix jobset. | expand

Commit Message

Andrew Whatson Dec. 16, 2021, 1:14 a.m. UTC
Hi!

I've been using channel-with-substitutes-available recently, and
noticed that at one point it's returned a commit from the staging
branch instead of master.  On further investigation, it seems the API
needs a jobset parameter to restrict the results to only main guix
builds.

eg. http://ci.guix.gnu.org/api/latestbuilds?nr=5&job=guix.x86_64-linux
vs. http://ci.guix.gnu.org/api/latestbuilds?nr=5&job=guix.x86_64-linux&jobset=guix

Hopefully the above shows the problem, the first link includes builds
with jobset "staging" which probably shouldn't be returned as a
suitable guix revision for guix pull.

This patch adds a jobset parameter to restrict the substitute search.

Cheers,
Andrew

Comments

Mathieu Othacehe Dec. 19, 2021, 3:30 p.m. UTC | #1
Hey Andrew,

> Hopefully the above shows the problem, the first link includes builds
> with jobset "staging" which probably shouldn't be returned as a
> suitable guix revision for guix pull.

Oh I guess it picked the "guix" package from the staging specification
which has noting to do with the "guix" package from the "guix"
specification. Hard to follow, naming could probably be improved here
:).

The first one is the package from (gnu packages package-management)
while the second is the guix modular package from the (build-self)
module.

Anyway your patch should prevent this problem from happening. Pushed as
11334d15d590073c631c574436d2110aa1ea2142.

Thanks,

Mathieu
diff mbox series

Patch

commit 2206caf8851068109078a48bd6651f4a9b0d7ef3
Author: Andrew Whatson <whatson@gmail.com>
Date:   Thu Dec 16 11:00:35 2021 +1000

    ci: Restrict substitute search to guix jobset.
    
    * guix/ci.scm (latest-builds): Add jobset keyword.
    (find-latest-commit-with-substitutes): Pass jobset "guix".

diff --git a/guix/ci.scm b/guix/ci.scm
index 01b493b3af..88b80f781d 100644
--- a/guix/ci.scm
+++ b/guix/ci.scm
@@ -208,7 +208,7 @@  (define* (queued-builds url #:optional (limit %query-limit))
     (map json->build (vector->list queue))))
 
 (define* (latest-builds url #:optional (limit %query-limit)
-                        #:key evaluation system job status)
+                        #:key evaluation system job jobset status)
   "Return the latest builds performed by the CI server at URL.  If EVALUATION
 is an integer, restrict to builds of EVALUATION.  If SYSTEM is true (a system
 string such as \"x86_64-linux\"), restrict to builds for SYSTEM."
@@ -218,6 +218,7 @@  (define* (latest-builds url #:optional (limit %query-limit)
                  `("evaluation" ,evaluation)
                  `("system" ,system)
                  `("job" ,job)
+                 `("jobset" ,jobset)
                  `("status" ,status))))
     ;; Note: Hydra does not provide a "derivation" field for entries in
     ;; 'latestbuilds', but Cuirass does.
@@ -286,6 +287,7 @@  (define (find-latest-commit-with-substitutes url)
   (let* ((job-name (string-append "guix." (%current-system)))
          (build (match (latest-builds url 1
                                       #:job job-name
+                                      #:jobset "guix"
                                       #:status 0) ;success
                   ((build) build)
                   (_ #f)))