Skip to content
Snippets Groups Projects
user avatar
Mathieu Othacehe authored
When a new evaluation is triggered by a single channel update, the
matching specification can have other channels that are not updated. In that
case, "db-get-checkouts" will only return the checkout corresponding to the
channel update.

This cause "channel-instances->profile" to fail this way:

In guix/channels.scm:
   911:32  3 (channel-instances->derivation _)
   871:36  2 (channel-instances->manifest (#<<channel-instance> cha?>))
    759:6  1 (channel-instance-derivations (#<<channel-instance> ch?>))
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
ERROR:
  1. &message: "'guix' channel is lacking"
  2. &fix-hint: "Make sure your list of channels\ncontains one channel named @code{guix} providing the core of Guix."
  3. &error-location: #<<location> file: "guix/channels.scm" line: 557 column: 18>

Introduce a db-get-latest-checkout procedure that returns the last checkout of
a given channel. Use it to request the checkouts of all the channels before
creating the profile.

* src/cuirass/database.scm (db-get-latest-checkout): New procedure.
* tests/database.scm ("db-get-latest-checkout"): New test.
* src/cuirass/scripts/evaluate.scm (latest-checkouts): New procedure.
(cuirass-evaluate): Use it.
f5a2eeae
History
Code owners
Assign users and groups as approvers for specific file changes. Learn more.