profiles: Add lowerable <profile> record type.
* guix/profiles.scm (<profile>): New record type. * tests/profiles.scm ("<profile>"): New test.
This commit is contained in:
parent
1408e2abeb
commit
ef674a24c5
@ -125,6 +125,15 @@
|
||||
profile-derivation
|
||||
profile-search-paths
|
||||
|
||||
profile
|
||||
profile?
|
||||
profile-name
|
||||
profile-content
|
||||
profile-hooks
|
||||
profile-locales?
|
||||
profile-allow-collisions?
|
||||
profile-relative-symlinks?
|
||||
|
||||
generation-number
|
||||
generation-profile
|
||||
generation-numbers
|
||||
@ -1656,6 +1665,33 @@ are cross-built for TARGET."
|
||||
. ,(length
|
||||
(manifest-entries manifest))))))))
|
||||
|
||||
;; Declarative profile.
|
||||
(define-record-type* <profile> profile make-profile
|
||||
profile?
|
||||
(name profile-name (default "profile")) ;string
|
||||
(content profile-content) ;<manifest>
|
||||
(hooks profile-hooks ;list of procedures
|
||||
(default %default-profile-hooks))
|
||||
(locales? profile-locales? ;Boolean
|
||||
(default #t))
|
||||
(allow-collisions? profile-allow-collisions? ;Boolean
|
||||
(default #f))
|
||||
(relative-symlinks? profile-relative-symlinks? ;Boolean
|
||||
(default #f)))
|
||||
|
||||
(define-gexp-compiler (profile-compiler (profile <profile>) system target)
|
||||
"Compile PROFILE to a derivation."
|
||||
(match profile
|
||||
(($ <profile> name manifest hooks
|
||||
locales? allow-collisions? relative-symlinks?)
|
||||
(profile-derivation manifest
|
||||
#:name name
|
||||
#:hooks hooks
|
||||
#:locales? locales?
|
||||
#:allow-collisions? allow-collisions?
|
||||
#:relative-symlinks? relative-symlinks?
|
||||
#:system system #:target target))))
|
||||
|
||||
(define* (profile-search-paths profile
|
||||
#:optional (manifest (profile-manifest profile))
|
||||
#:key (getenv (const #f)))
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@ -223,6 +223,17 @@
|
||||
(string=? (dirname (readlink bindir))
|
||||
(derivation->output-path guile))))))
|
||||
|
||||
(test-assertm "<profile>"
|
||||
(mlet* %store-monad
|
||||
((entry -> (package->manifest-entry %bootstrap-guile))
|
||||
(profile -> (profile (hooks '()) (locales? #f)
|
||||
(content (manifest (list entry)))))
|
||||
(drv (lower-object profile))
|
||||
(profile -> (derivation->output-path drv))
|
||||
(bindir -> (string-append profile "/bin"))
|
||||
(_ (built-derivations (list drv))))
|
||||
(return (file-exists? (string-append bindir "/guile")))))
|
||||
|
||||
(test-assertm "profile-derivation relative symlinks, one entry"
|
||||
(mlet* %store-monad
|
||||
((entry -> (package->manifest-entry %bootstrap-guile))
|
||||
|
Loading…
Reference in New Issue
Block a user