Hi!

l...@gnu.org (Ludovic Courtès) skribis:

> I had an idea to use a ‘superseded’ entry in ‘properties’ that would
> tell ‘guix package’ et al. to upgrade to the new package:
>
>   (package
>     (name "attic")
>     ;; …
>     (properties `((superseded . ,borg))))

This is now implemented both at the package lookup level and in ‘guix
package -u’ (the code is in 01afdab89c6a91f4cd05d3c4f4ff95a0402703eb and
an example is in 967cfd18f666f24ae9cbad14ea8e6921c10cba81):

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build paredit -n
guix build: package 'paredit' has been superseded by 'emacs-paredit'
The following derivation would be built:
   /gnu/store/ccrv0j30a7yfs2g1n14p0bh737bcjz0y-emacs-paredit-24.drv
The following files would be downloaded:
   /gnu/store/732iy20nybnrf0kas8zyg3xs6fq30p4d-module-import
   /gnu/store/15hg2356x0jygwm3359mlxjiyhmls9wy-paredit-24.el
   /gnu/store/2a1bdv6sby9vsmhjzs1yw8bbhpxmiarh-module-import-compiled
   /gnu/store/x8w0fxa1w23fsa8x5m8wrvc8i83cxc6f-emacs-minimal-24.5
$ ./pre-inst-env guix package -u paredit -n
guix package: package 'paredit' has been superseded by 'emacs-paredit'
The following package would be removed:
   paredit      24      /gnu/store/d2dx7ba1ml4ykl3825df80h64dkqs21i-paredit-24

The following package would be installed:
   emacs-paredit        24      
/gnu/store/nm927dpid524p5zdksga44xf78k3vpc0-emacs-paredit-24

The following derivations would be built:
   /gnu/store/7mphabn67n0kdl242d4nby34krsf7iba-profile.drv
   /gnu/store/w0aa524wr0y89pi5l9qj0gjdiwfy451i-info-dir.drv
   /gnu/store/nlvmpmfmgib6k3y357s391shf0qznx29-fonts-dir.drv
   /gnu/store/niqnq338ndnf0k2xacd53mwkk43nwycy-ca-certificate-bundle.drv
   /gnu/store/9a2677pzx58b9vilhn8gmkvlgms19vf1-gtk-icon-themes.drv
   /gnu/store/5h7lzi5dk4yh5yvx5zkm2hp911x2cgh8-xdg-mime-database.drv
   /gnu/store/ccrv0j30a7yfs2g1n14p0bh737bcjz0y-emacs-paredit-24.drv
The following files would be downloaded:
   /gnu/store/sppd07krb4w0bbbwyykwg05dcjn9p2kd-module-import-compiled
   /gnu/store/732iy20nybnrf0kas8zyg3xs6fq30p4d-module-import
   /gnu/store/15hg2356x0jygwm3359mlxjiyhmls9wy-paredit-24.el
   /gnu/store/2a1bdv6sby9vsmhjzs1yw8bbhpxmiarh-module-import-compiled
   /gnu/store/x8w0fxa1w23fsa8x5m8wrvc8i83cxc6f-emacs-minimal-24.5
--8<---------------cut here---------------end--------------->8---

It is still possible to install/build a deprecated package if one
insists:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build -e '(@ (gnu packages emacs) paredit/old-name)' -n
The following derivation would be built:
   /gnu/store/hl48ab4ifjq01id3xpaqv7q0fjdmlx8w-paredit-24.drv
The following files would be downloaded:
   /gnu/store/732iy20nybnrf0kas8zyg3xs6fq30p4d-module-import
   /gnu/store/2a1bdv6sby9vsmhjzs1yw8bbhpxmiarh-module-import-compiled
   /gnu/store/x8w0fxa1w23fsa8x5m8wrvc8i83cxc6f-emacs-minimal-24.5
--8<---------------cut here---------------end--------------->8---

The downside of the current implementation of upgrades is that it is in
(guix scripts package), so the Emacs UI does not benefit from it.  I’d
like to see if I can generalize it a bit and move it to (guix profiles).

Comments welcome!

Ludo’.

Reply via email to