bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
The bordeaux build farm depends on computing the derivations on one machine, then potentially building them on a different machine. Some of the build machines don't have a new enough guix-daemon that understands builtin:git-download, so derivations that use this are sometimes failing (e.g. [1]) 1: https://bordeaux.guix.gnu.org/build/10cc5622-6b1f-4f28-ad9a-41cf796d7a15 One potential approach to address this is somehow have the data service indicate that it wants compatible derivations when computing them, rather than to have guix do feature detection against the guix-daemon that is being used at the point the derivations are being computed. signature.asc Description: PGP signature
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Hi Chris, On Fri, 17 Nov 2023 at 21:39, Christopher Baines wrote: > The bordeaux build farm depends on computing the derivations on one > machine, then potentially building them on a different machine. > > Some of the build machines don't have a new enough guix-daemon that > understands builtin:git-download, so derivations that use this are > sometimes failing (e.g. [1]) Do you mean that the drv file is generated using a new daemon then this drv file is “offloaded” to another machine using an older daemon and thus fails to build it? > One potential approach to address this is somehow have the data service > indicate that it wants compatible derivations when computing them, > rather than to have guix do feature detection against the guix-daemon > that is being used at the point the derivations are being computed. Other solutions are: downgrade the daemon of one of the machine or update the daemon of other machines, no? Why would the latter not be possible? Cheers simon
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Simon Tournier writes: > Hi Chris, > > On Fri, 17 Nov 2023 at 21:39, Christopher Baines wrote: > >> The bordeaux build farm depends on computing the derivations on one >> machine, then potentially building them on a different machine. >> >> Some of the build machines don't have a new enough guix-daemon that >> understands builtin:git-download, so derivations that use this are >> sometimes failing (e.g. [1]) > > Do you mean that the drv file is generated using a new daemon then this > drv file is “offloaded” to another machine using an older daemon and > thus fails to build it? Roughly, yep. >> One potential approach to address this is somehow have the data service >> indicate that it wants compatible derivations when computing them, >> rather than to have guix do feature detection against the guix-daemon >> that is being used at the point the derivations are being computed. > > Other solutions are: downgrade the daemon of one of the machine or > update the daemon of other machines, no? > > Why would the latter not be possible? It's possible, just difficult. Because with the current guix-daemon, the build coordinator can only build things that can be GC'd, some machines deliberately run older daemons to allow building newer things without hitting this issue. signature.asc Description: PGP signature
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Hi, Christopher Baines skribis: > The bordeaux build farm depends on computing the derivations on one > machine, then potentially building them on a different machine. > > Some of the build machines don't have a new enough guix-daemon that > understands builtin:git-download, so derivations that use this are > sometimes failing (e.g. [1]) > > 1: https://bordeaux.guix.gnu.org/build/10cc5622-6b1f-4f28-ad9a-41cf796d7a15 > > One potential approach to address this is somehow have the data service > indicate that it wants compatible derivations when computing them, > rather than to have guix do feature detection against the guix-daemon > that is being used at the point the derivations are being computed. Would it work for you if we added a keyword argument to ‘open-connection’ in (guix store) that would let you select which builtins to use? As in: (open-connection #:assume-available-builtin-builders '("download")) Ludo’.
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Hi, On Wed, 22 Nov 2023 at 11:19, Ludovic Courtès wrote: > As in: > > (open-connection > #:assume-available-builtin-builders '("download")) Instead, why not check in ’git-fetch’? Currently, the test is done against the local daemon, right? --8<---cut here---start->8--- (define* (git-fetch ref hash-algo hash #:optional name #:key (system (%current-system)) guile git) "Return a fixed-output derivation that fetches REF, a object. The output is expected to have recursive hash HASH of type HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." (mlet %store-monad ((builtins (built-in-builders*))) (if (member "git-download" builtins) (git-fetch/built-in ref hash-algo hash name #:system system) (git-fetch/in-band ref hash-algo hash name #:system system #:guile guile #:git git --8<---cut here---end--->8--- For example, why not a test as: (if (and SOMETHING (member "git-download" builtins)) And this SOMETHING could be a global variable, as %assume-builtin-builder, set to true by default and turn to false with an environment variable, as GUIX_ASSUME_BUILTIN. Cheers, simon
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Ludovic Courtès writes: > Hi, > > Christopher Baines skribis: > >> The bordeaux build farm depends on computing the derivations on one >> machine, then potentially building them on a different machine. >> >> Some of the build machines don't have a new enough guix-daemon that >> understands builtin:git-download, so derivations that use this are >> sometimes failing (e.g. [1]) >> >> 1: https://bordeaux.guix.gnu.org/build/10cc5622-6b1f-4f28-ad9a-41cf796d7a15 >> >> One potential approach to address this is somehow have the data service >> indicate that it wants compatible derivations when computing them, >> rather than to have guix do feature detection against the guix-daemon >> that is being used at the point the derivations are being computed. > > Would it work for you if we added a keyword argument to > ‘open-connection’ in (guix store) that would let you select which > builtins to use? > > As in: > > (open-connection > #:assume-available-builtin-builders '("download")) Yep, that would at least allow freezing the available builtins going forward and separating it from the running daemon. signature.asc Description: PGP signature
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Christopher Baines writes: > Ludovic Courtès writes: > >> Hi, >> >> Christopher Baines skribis: >> >>> The bordeaux build farm depends on computing the derivations on one >>> machine, then potentially building them on a different machine. >>> >>> Some of the build machines don't have a new enough guix-daemon that >>> understands builtin:git-download, so derivations that use this are >>> sometimes failing (e.g. [1]) >>> >>> 1: https://bordeaux.guix.gnu.org/build/10cc5622-6b1f-4f28-ad9a-41cf796d7a15 >>> >>> One potential approach to address this is somehow have the data service >>> indicate that it wants compatible derivations when computing them, >>> rather than to have guix do feature detection against the guix-daemon >>> that is being used at the point the derivations are being computed. >> >> Would it work for you if we added a keyword argument to >> ‘open-connection’ in (guix store) that would let you select which >> builtins to use? >> >> As in: >> >> (open-connection >> #:assume-available-builtin-builders '("download")) > > Yep, that would at least allow freezing the available builtins going > forward and separating it from the running daemon. I've now sent some patches which add this option to #71038. signature.asc Description: PGP signature
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Simon Tournier writes: > On Wed, 22 Nov 2023 at 11:19, Ludovic Courtès wrote: > >> As in: >> >> (open-connection >> #:assume-available-builtin-builders '("download")) > > Instead, why not check in ’git-fetch’? Currently, the test is done > against the local daemon, right? > > --8<---cut here---start->8--- > (define* (git-fetch ref hash-algo hash > #:optional name > #:key (system (%current-system)) > guile git) > "Return a fixed-output derivation that fetches REF, a > object. The output is expected to have recursive hash HASH of type > HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." > (mlet %store-monad ((builtins (built-in-builders*))) > (if (member "git-download" builtins) > (git-fetch/built-in ref hash-algo hash name > #:system system) > (git-fetch/in-band ref hash-algo hash name >#:system system >#:guile guile >#:git git > --8<---cut here---end--->8--- > > For example, why not a test as: > > (if (and SOMETHING > (member "git-download" builtins)) > > And this SOMETHING could be a global variable, as > %assume-builtin-builder, set to true by default and turn to false with > an environment variable, as GUIX_ASSUME_BUILTIN. I can think of a couple of reasons not to do this via an environment variable. Having the logic in git-fetch via an environment variable would mean that if other builtins are added, the code generating derivations using them would also have to check the environment variable. Specifying the builtin's that are available on a store connection would work automatically in the case of new builtins being added.. There's also trade-offs in control when using environment variables, or deciding when to take the value from an environment variable and switch to passing the value around through arguments or other means. Consider the case where you have a single process which has multiple store connections open and it wants to specify different available builtin's on particular store connections. This would become quite difficult when using an environment variable, but work easily when specifying the builtins available on the store connection. signature.asc Description: PGP signature
bug#67250: builtin:git-download capability detection not working for the bordeaux build farm
Christopher Baines skribis: > I've now sent some patches which add this option to #71038. These were committed as f002371767df04238e3fc6dfacb6930f5529144b. Closing, Ludo’.