Subject: bug#61885: bug#61911: error: mate-polkit: unbound variable

From: Maxime Devos <[email-masked]>
Date: Thu, 2 Mar 2023 16:11:05 +0100

Op 02-03-2023 om 15:36 schreef Josselin Poiret:
> Hi Maxime,
> 
> Maxime Devos <[email-masked]> writes:
> 
>> In unknown file:
>>              3 (primitive-load-path "gnu/packages/xfce" #<procedure 7f?>)
>> 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: [email-masked])

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 <https://issues.guix.gnu.org/54539#62> (*).  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.