aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2017-05-02 03:39:23 -0400
committerMark H Weaver <mhw@netris.org>2017-05-02 04:19:09 -0400
commitbedba064267490f2d9f7ee44e5ec103aacc82611 (patch)
treead51c20343ac4243c94c39bdaa6f2a8ded252340
parentee3401d0186f68f91ef4455e8e1df8a477a2c26a (diff)
downloadguix-bedba064267490f2d9f7ee44e5ec103aacc82611.tar
guix-bedba064267490f2d9f7ee44e5ec103aacc82611.tar.gz
Add package/inherit.
* guix/packages.scm (package/inherit): New public macro.
-rw-r--r--guix/packages.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/guix/packages.scm b/guix/packages.scm
index 44f2c32fb7..8ead950739 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;;
@@ -105,6 +105,7 @@
package-cross-derivation
package-output
package-grafts
+ package/inherit
transitive-input-references
@@ -789,6 +790,16 @@ package and returns its new name after rewrite."
(package-mapping rewrite (cut assq <> replacements)))
+(define-syntax-rule (package/inherit p overrides ...)
+ "Like (package (inherit P) OVERRIDES ...), except that the same
+transformation is done to the package replacement, if any. P must be a bare
+identifier, and will be bound to either P or its replacement when evaluating
+OVERRIDES."
+ (let loop ((p p))
+ (package (inherit p)
+ overrides ...
+ (replacement (and=> (package-replacement p) loop)))))
+
;;;
;;; Package derivations.