Hi,

below are my current findings.

As of commit
    87045f0982 (gnu: paritwine: Update to 0.2.1., 2025-01-17)
guile-rsvg depends on a version of guile-cairo different from the one I get by simply building guile-cairo:

    $ ./pre-inst-env guix build guile-cairo
    ⇒ /gnu/store/k4kglplg98098y78flnw0f9wjyyc9zk2-guile-cairo-1.11.2

whereas

    $ guix gc --references "$(./pre-inst-env guix build guile-rsvg)" | grep 
guile-cairo
    ⇒ /gnu/store/lz8cv73yzzrbwrhafzadixnwgmspz2cg-guile-cairo-1.11.2

(gnu build svg) loads both (rsvg) and (cairo) which causes two different libguile-cairo.so's to be loaded (interestingly enough the order matters: loading (cairo) first would hide the issue):
--8<---------------cut here---------------start------------->8---
./pre-inst-env guix shell --no-cwd -C guile guile-cairo guile-rsvg -- \
    guile -s /dev/stdin <<EOF | grep libguile-cairo

(begin
 (use-modules (ice-9 textual-ports)
              ;; order matters!
              (rsvg)
                    (cairo))

(display (call-with-input-file "/proc/self/maps" get-string-all)))
EOF
--8<---------------cut here---------------end--------------->8---
shows two different libguile-cairo.so's. The only difference between the two guile-cairo derivation is that they graft cairo to different derivations, which in turn differ only in grafting fontconfig-minimal to different versions which finally only graft glibc and expat in different order.

All this confirms the hypothesis Mark expressed in [0].

My guess is that the change to rust-ring somehow changes how it interacts with grafting. Perhaps it is added / not added to some hashtable, causing iteration order to change?

0: https://issues.guix.gnu.org/47115#23



Reply via email to