~ruther/guix-local

d6a3818761736449a27eb44938537798f6f4e85b — Ludovic Courtès 1 year, 11 months ago 69b8fea
build-system/channel: Add support for additional channels.

Until now, ‘channel-build-system’ would assume a single channel, the
‘guix’ channel.  This change lets users specify additional channels
using the #:channels parameter.

* guix/build-system/channel.scm (build-channels): Add #:channels and
honor it.
(channel-build-system): In ‘lower’, add #:channels and honor it.
* doc/guix.texi (Build Systems): Document it.

Change-Id: I36c1d19cbeee02a4d1144de089b78df0390774a0
2 files changed, 9 insertions(+), 3 deletions(-)

M doc/guix.texi
M guix/build-system/channel.scm
M doc/guix.texi => doc/guix.texi +4 -1
@@ 10466,7 10466,10 @@ field (@pxref{Channels}); alternatively, its source can be a directory
name, in which case an additional @code{#:commit} argument must be
supplied to specify the commit being built (a hexadecimal string).

The resulting package is a Guix instance of the given channel, similar
Optionally, a @code{#:channels} argument specifying additional channels
can be provided.

The resulting package is a Guix instance of the given channel(s), similar
to how @command{guix time-machine} would build it.
@end defvar


M guix/build-system/channel.scm => guix/build-system/channel.scm +5 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 37,6 37,7 @@

(define* (build-channels name inputs
                         #:key source system commit
                         (channels '())
                         (authenticate? #t)
                         #:allow-other-keys)
  (mlet* %store-monad ((instances


@@ 44,7 45,7 @@
                               (return (list source)))
                              ((channel? source)
                               (latest-channel-instances*
                                (list source)
                                (cons source channels)
                                #:authenticate? authenticate?))
                              ((string? source)
                               ;; If SOURCE is a store file name, as is the


@@ 64,12 65,14 @@
(define channel-build-system
  ;; Build system used to "convert" a channel instance to a package.
  (let ((lower (lambda* (name #:key system source commit (authenticate? #t)
                              (channels '())
                              #:allow-other-keys)
                 (bag
                   (name name)
                   (system system)
                   (build build-channels)
                   (arguments `(#:source ,source
                                #:channels ,channels
                                #:authenticate? ,authenticate?
                                #:commit ,commit))))))
    (build-system (name 'channel)