profiles: Add 'properties' field to manifest entries.

* guix/profiles.scm (<manifest-entry>)[properties]: New field.
(manifest->gexp)[entry->gexp]: Serialize it.
(sexp->manifest)[sexp->manifest-entry]: Deserialize it.
master
Ludovic Courtès 2018-05-13 18:48:22 +02:00
parent c423ae8918
commit f6f2346f9b
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 13 additions and 6 deletions

View File

@ -78,6 +78,7 @@
manifest-entry-dependencies
manifest-entry-search-paths
manifest-entry-parent
manifest-entry-properties
manifest-pattern
manifest-pattern?
@ -181,7 +182,9 @@
(search-paths manifest-entry-search-paths ; search-path-specification*
(default '()))
(parent manifest-entry-parent ; promise (#f | <manifest-entry>)
(default (delay #f))))
(default (delay #f)))
(properties manifest-entry-properties ; list of symbol/value pairs
(default '())))
(define-record-type* <manifest-pattern> manifest-pattern
make-manifest-pattern
@ -320,18 +323,20 @@ denoting a specific output of a package."
(define (entry->gexp entry)
(match entry
(($ <manifest-entry> name version output (? string? path)
(deps ...) (search-paths ...))
(deps ...) (search-paths ...) _ (properties ...))
#~(#$name #$version #$output #$path
(propagated-inputs #$(map entry->gexp deps))
(search-paths #$(map search-path-specification->sexp
search-paths))))
search-paths))
(properties . #$properties)))
(($ <manifest-entry> name version output package
(deps ...) (search-paths ...))
(deps ...) (search-paths ...) _ (properties ...))
#~(#$name #$version #$output
(ungexp package (or output "out"))
(propagated-inputs #$(map entry->gexp deps))
(search-paths #$(map search-path-specification->sexp
search-paths))))))
search-paths))
(properties . #$properties)))))
(match manifest
(($ <manifest> (entries ...))
@ -394,7 +399,9 @@ procedure is here for backward-compatibility and will eventually vanish."
(dependencies deps*)
(search-paths (map sexp->search-path-specification
search-paths))
(parent parent))))
(parent parent)
(properties (or (assoc-ref extra-stuff 'properties)
'())))))
entry))))
(match sexp