diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-09-06 23:14:07 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-09-06 23:22:10 +0200 |
commit | 01afdab89c6a91f4cd05d3c4f4ff95a0402703eb (patch) | |
tree | 7be146245b7b7053532f38476399e5b8f5b2f9c4 /guix/packages.scm | |
parent | 03763d6473bcd6c7a84bcc3a6aa7bc2d1ee1e44f (diff) |
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.scm | 14 |
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." |