Subject: Re: bug#39425: On <https://guix.gnu.org/packages/>, package source links are broken.

From: Ludovic Courtès <[email-masked]>
Date: Sat, 21 Mar 2020 00:08:36 +0100

Hi!

Alex ter Weele <[email-masked]> skribis:

> For example, <https://guix.gnu.org/packages/unicode-emoji-12.0/> links
> to
> <https://git.savannah.gnu.org/cgit/guix.git/tree//gnu/store/wfk1qhx56qsyyi03s98ihy9370298xfm-guix-module-union/share/guile/site/3.0/gnu/packages/unicode.scm#n64>,
> which 404s.
>
> Relevant discussion from #guix:
> <http://logs.guix.gnu.org/guix/2020-02-04.log#175447>.

This should be fixed by f2b24f01f42c1bad3ddffd140194de1aec38a5f8.

The change of behavior was presumably caused by
09238d618a511de80de189ff3ff18bfa0f280bb9, which removed a layer of
‘canonicalize-path’, which in turn prevented relative file name
canonicalization in ‘package-field-location’ to work:

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> (search-path %load-path "gnu/packages/base.scm")
$1 = "/gnu/store/sy9sh0m6nam63iny9xcsrmn2q7pp4sik-guix-module-union/share/guile/site/3.0/gnu/packages/base.scm"
scheme@(guix-user)> (call-with-input-file $1 port-filename)
$2 = "/gnu/store/sy9sh0m6nam63iny9xcsrmn2q7pp4sik-guix-module-union/share/guile/site/3.0/gnu/packages/base.scm"
scheme@(guix-user)> (fluid-set! %file-port-name-canonicalization 'relative)
scheme@(guix-user)> (call-with-input-file $1 port-filename)
$3 = "/gnu/store/sy9sh0m6nam63iny9xcsrmn2q7pp4sik-guix-module-union/share/guile/site/3.0/gnu/packages/base.scm"
scheme@(guix-user)> %load-path
$4 = ("/gnu/store/sy9sh0m6nam63iny9xcsrmn2q7pp4sik-guix-module-union/share/guile/site/3.0" "/home/ludo/.guix-profile/share/guile/site/3.0" "/run/current-system/profile/share/guile/site/2.2" "/home/ludo/.guix-profile/share/guile/site/3.0" "/run/current-system/profile/share/guile/site/2.2" "/home/ludo/.guix-profile/share/guile/site/3.0" "/run/current-system/profile/share/guile/site/2.2" "/gnu/store/0awhym5h0m890n0wq87y0dxznh14rk88-guile-next-3.0.1/share/guile/3.0" "/gnu/store/0awhym5h0m890n0wq87y0dxznh14rk88-guile-next-3.0.1/share/guile/site/3.0" "/gnu/store/0awhym5h0m890n0wq87y0dxznh14rk88-guile-next-3.0.1/share/guile/site" "/gnu/store/0awhym5h0m890n0wq87y0dxznh14rk88-guile-next-3.0.1/share/guile")
scheme@(guix-user)> (canonicalize-path $3)
$5 = "/gnu/store/1xyinzzh924fpn79mmc279n7hzwzsn8l-guix-5e78a87bb-modules/share/guile/site/3.0/gnu/packages/base.scm"
--8<---------------cut here---------------end--------------->8---

Since ‘scm_i_relativize_path’ in Guile starts by calling
‘canonicalize-path’, it would then search for
/gnu/store/1xyin…-guix-5e78a87bb-modules in ‘%load-path’, but it’s not
there as such.

Anyway, the web site should be fixed on the next update, within an hour.

Thanks,
Ludo’.