[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/10: guix package: Support package transformation options.
From: |
Ludovic Courtès |
Subject: |
06/10: guix package: Support package transformation options. |
Date: |
Mon, 01 Feb 2016 09:13:00 +0000 |
civodul pushed a commit to branch master
in repository guix.
commit b8638f03471a0c45f441caef1acf2dad7c457661
Author: Ludovic Courtès <address@hidden>
Date: Sun Jan 31 21:33:08 2016 +0100
guix package: Support package transformation options.
* guix/scripts/package.scm (show-help): Call
'show-transformation-options-help'.
(%options): Append %TRANSFORMATION-OPTIONS.
(process-actions)[transform, transform-entry]: New procedures.
* doc/guix.texi (Invoking guix package): Mention package
transformations.
(Package Transformation Options): Mention 'guix package'.
---
doc/guix.texi | 19 +++++++++++++------
guix/scripts/package.scm | 16 +++++++++++++---
2 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 10ca9b7..dcced79 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1643,7 +1643,13 @@ Consequently, this command must be used with care.
Finally, since @command{guix package} may actually start build
processes, it supports all the common build options (@pxref{Common Build
-Options}).
+Options}). It also support package transformation options, such as
address@hidden (@pxref{Package Transformation Options}).
+However, note that package transformations are lost when upgrading; to
+preserve transformation across upgrades, you should define your own
+package variant in a Guile module and add it to @code{GUIX_PACKAGE_PATH}
+(@pxref{Defining Packages}).
+
@node Substitutes
@section Substitutes
@@ -3946,11 +3952,12 @@ the parsed command-line options.
@cindex package variants
Another set of command-line options supported by @command{guix build}
-are @dfn{package transformation options}. These are options that allow,
-from the command-line, to define @dfn{package variants}---for instance,
-packages built from different source code. This is a convenient way to
-create customized packages on the fly without having to type in the
-definitions of package variants (@pxref{Defining Packages}).
+and also @command{guix package} are @dfn{package transformation
+options}. These are options that allow you to define @dfn{package
+variants}---for instance, packages built from different source code.
+This is a convenient way to create customized packages on the fly
+without having to type in the definitions of package variants
+(@pxref{Defining Packages}).
@table @code
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 02eb600..b93ffb0 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -379,6 +379,8 @@ Install, remove, or upgrade packages in a single
transaction.\n"))
(newline)
(show-build-options-help)
(newline)
+ (show-transformation-options-help)
+ (newline)
(display (_ "
-h, --help display this help and exit"))
(display (_ "
@@ -511,7 +513,8 @@ kind of search path~%")
result)
#f)))
- %standard-build-options))
+ (append %transformation-options
+ %standard-build-options)))
(define (options->upgrade-predicate opts)
"Return a predicate based on the upgrade/do-not-upgrade regexps in OPTS
@@ -789,6 +792,12 @@ processed, #f otherwise."
(define bootstrap? (assoc-ref opts 'bootstrap?))
(define substitutes? (assoc-ref opts 'substitutes?))
(define profile (or (assoc-ref opts 'profile) %current-profile))
+ (define transform (options->transformation opts))
+
+ (define (transform-entry entry)
+ (manifest-entry
+ (inherit entry)
+ (item (transform store (manifest-entry-item entry)))))
;; First, process roll-backs, generation removals, etc.
(for-each (match-lambda
@@ -803,8 +812,9 @@ processed, #f otherwise."
(let* ((manifest (profile-manifest profile))
(install (options->installable opts manifest))
(remove (options->removable opts manifest))
- (transaction (manifest-transaction (install install)
- (remove remove)))
+ (transaction (manifest-transaction
+ (install (map transform-entry install))
+ (remove remove)))
(new (manifest-perform-transaction manifest transaction)))
(unless (and (null? install) (null? remove))
- branch master updated (e3f755f -> 47c0f92), Ludovic Courtès, 2016/02/01
- 02/10: install: Make it clear that we refer to the root by label., Ludovic Courtès, 2016/02/01
- 01/10: build: Use the right section and source for man pages., Ludovic Courtès, 2016/02/01
- 06/10: guix package: Support package transformation options.,
Ludovic Courtès <=
- 07/10: build: Really enable Guile warnings., Ludovic Courtès, 2016/02/01
- 08/10: build: Remove semicolons from Guile warnings., Ludovic Courtès, 2016/02/01
- 05/10: guix build: Separate transformation options., Ludovic Courtès, 2016/02/01
- 04/10: doc: Add subsections to 'Invoking guix build'., Ludovic Courtès, 2016/02/01
- 03/10: guix build: Transformations operate on single objects., Ludovic Courtès, 2016/02/01
- 09/10: build-system/python: Use 'ensure-keyword-arguments'., Ludovic Courtès, 2016/02/01
- 10/10: guix build: Add '--with-input'., Ludovic Courtès, 2016/02/01