summaryrefslogtreecommitdiff
path: root/guix/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-09-06 23:14:07 +0200
committerLudovic Courtès <ludo@gnu.org>2016-09-06 23:22:10 +0200
commit01afdab89c6a91f4cd05d3c4f4ff95a0402703eb (patch)
tree7be146245b7b7053532f38476399e5b8f5b2f9c4 /guix/packages.scm
parent03763d6473bcd6c7a84bcc3a6aa7bc2d1ee1e44f (diff)
downloadgnu-guix-01afdab89c6a91f4cd05d3c4f4ff95a0402703eb.tar
gnu-guix-01afdab89c6a91f4cd05d3c4f4ff95a0402703eb.tar.gz
packages: Add 'package-superseded' and associated support.
This provides a way to mark a package as superseded by another one. Upgrades replace superseded packages with their replacement. * guix/packages.scm (package-superseded, deprecated-package): New procedures. * gnu/packages.scm (%find-package): Check for 'package-superseded'. * guix/scripts/package.scm (transaction-upgrade-entry)[supersede]: New procedure. Call it when 'package-superseded' is true. * tests/guix-build.sh: Add test for a superseded package. * tests/packages.scm ("package-superseded") ("transaction-upgrade-entry, superseded package"): New tests.
Diffstat (limited to 'guix/packages.scm')
-rw-r--r--guix/packages.scm14
1 files changed, 14 insertions, 0 deletions
diff --git a/guix/packages.scm b/guix/packages.scm
index d544c34cf8..afbafc70a7 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -83,6 +83,8 @@
package-location
hidden-package
hidden-package?
+ package-superseded
+ deprecated-package
package-field-location
package-direct-sources
@@ -306,6 +308,18 @@ user interfaces, ignores."
interfaces."
(assoc-ref (package-properties p) 'hidden?))
+(define (package-superseded p)
+ "Return the package the supersedes P, or #f if P is still current."
+ (assoc-ref (package-properties p) 'superseded))
+
+(define (deprecated-package old-name p)
+ "Return a package called OLD-NAME and marked as superseded by P, a package
+object."
+ (package
+ (inherit p)
+ (name old-name)
+ (properties `((superseded . ,p)))))
+
(define (package-field-location package field)
"Return the source code location of the definition of FIELD for PACKAGE, or
#f if it could not be determined."