Op 02-03-2023 om 15:36 schreef Josselin Poiret: > Hi Maxime, > > Maxime Devos writes: > >> In unknown file: >> 3 (primitive-load-path "gnu/packages/xfce" #) >> In gnu/packages/xfce.scm: >> 1156:19 2 (_) >> In ice-9/boot-9.scm: >> 1685:16 1 (raise-exception _ #:continuable? _) >> 1685:16 0 (raise-exception _ #:continuable? _) >> >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> error: mate-polkit: unbound variable > > This is the same kind of issue as [1]: both xfce and mate require each > other (the second through mate -> freedesktop -> kde-frameworks -> > kde-plasma -> display-managers -> xfce), and depending on the order in > which they're loaded, mate-polkit-for-xfce might get defined before > mate-polkit is. The solution I suggested there was to define the > variant in the same file as the original package, but here I'm not sure > if this is the right call. > > In general, I'd much rather try to get rid of those pesky module cycles, > as they cause general headaches for guix pull. I remember Julien > using (guix modules) to do some analysis at the Guix days, maybe we > could get some pointers on how to handle this specific situation? > > WDYT? > > [1] https://issues.guix.gnu.org/61885 > (mid: F29B8BFE-A175-4128-8093-4A810681E235@winter.cafe) I haven't gone to Guix days so I can't comment on that, but I'd like to note that there are some simple patches for breaking up lots of package cycles at (*). In particular, #:use-module -> #:autoload appears promising (^). Basically, you can consider a module reference to be 'strong' if its of the form (define stuff (package (inherit reference)) ...), and 'weak' if its just a package input (or more generally, something thunked). 'Strong' cycles are problematic, but 'weak' cycles should be resolvable by delaying loading the required modules until needed. I don't know if these patches would solve this particular 'mate-polkit' issue -- if the 'mate -> freedesktop -> ... -> xfce' cycle is 'weak', something like those patches should work, but if it isn't, those patches would be insufficient. (*) Beware of https://issues.guix.gnu.org/54539#63 though; looks like I made some mistakes in hurd.scm and image.scm. Greetings, Maxime.