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
This commit is contained in:
		
							parent
							
								
									69b8feabcf
								
							
						
					
					
						commit
						d6a3818761
					
				
					 2 changed files with 9 additions and 3 deletions
				
			
		| 
						 | 
					@ -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
 | 
					name, in which case an additional @code{#:commit} argument must be
 | 
				
			||||||
supplied to specify the commit being built (a hexadecimal string).
 | 
					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.
 | 
					to how @command{guix time-machine} would build it.
 | 
				
			||||||
@end defvar
 | 
					@end defvar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; 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.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (build-channels name inputs
 | 
					(define* (build-channels name inputs
 | 
				
			||||||
                         #:key source system commit
 | 
					                         #:key source system commit
 | 
				
			||||||
 | 
					                         (channels '())
 | 
				
			||||||
                         (authenticate? #t)
 | 
					                         (authenticate? #t)
 | 
				
			||||||
                         #:allow-other-keys)
 | 
					                         #:allow-other-keys)
 | 
				
			||||||
  (mlet* %store-monad ((instances
 | 
					  (mlet* %store-monad ((instances
 | 
				
			||||||
| 
						 | 
					@ -44,7 +45,7 @@
 | 
				
			||||||
                               (return (list source)))
 | 
					                               (return (list source)))
 | 
				
			||||||
                              ((channel? source)
 | 
					                              ((channel? source)
 | 
				
			||||||
                               (latest-channel-instances*
 | 
					                               (latest-channel-instances*
 | 
				
			||||||
                                (list source)
 | 
					                                (cons source channels)
 | 
				
			||||||
                                #:authenticate? authenticate?))
 | 
					                                #:authenticate? authenticate?))
 | 
				
			||||||
                              ((string? source)
 | 
					                              ((string? source)
 | 
				
			||||||
                               ;; If SOURCE is a store file name, as is the
 | 
					                               ;; If SOURCE is a store file name, as is the
 | 
				
			||||||
| 
						 | 
					@ -64,12 +65,14 @@
 | 
				
			||||||
(define channel-build-system
 | 
					(define channel-build-system
 | 
				
			||||||
  ;; Build system used to "convert" a channel instance to a package.
 | 
					  ;; Build system used to "convert" a channel instance to a package.
 | 
				
			||||||
  (let ((lower (lambda* (name #:key system source commit (authenticate? #t)
 | 
					  (let ((lower (lambda* (name #:key system source commit (authenticate? #t)
 | 
				
			||||||
 | 
					                              (channels '())
 | 
				
			||||||
                              #:allow-other-keys)
 | 
					                              #:allow-other-keys)
 | 
				
			||||||
                 (bag
 | 
					                 (bag
 | 
				
			||||||
                   (name name)
 | 
					                   (name name)
 | 
				
			||||||
                   (system system)
 | 
					                   (system system)
 | 
				
			||||||
                   (build build-channels)
 | 
					                   (build build-channels)
 | 
				
			||||||
                   (arguments `(#:source ,source
 | 
					                   (arguments `(#:source ,source
 | 
				
			||||||
 | 
					                                #:channels ,channels
 | 
				
			||||||
                                #:authenticate? ,authenticate?
 | 
					                                #:authenticate? ,authenticate?
 | 
				
			||||||
                                #:commit ,commit))))))
 | 
					                                #:commit ,commit))))))
 | 
				
			||||||
    (build-system (name 'channel)
 | 
					    (build-system (name 'channel)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue