Katherine Cox-Buday skribis: > Guillaume Le Vaillant writes: > >> Guillaume Le Vaillant skribis: >> >>> Katherine Cox-Buday skribis: >>> >>>> Sometime recently, the way Common Lisp code is compiled was changed (for >>>> the better, I think), and now my StumpWM contrib modules won't load. >>>> Here's why: >>>> >>>> StumpWM looks[1] for .asd files to determine what is a module. Guix's >>>> Common Lisp build system used to combine an entire system into a single >>>> .fasl file and then produce a .asd file for loading it. Now -- as far as >>>> I can tell -- it looks like `lib/common-lisp/sbcl` is more like the >>>> Common Lisp cache: one .fasl file per .lisp file. >>>> >>>> If I point StumpWM at `lib/common-lisp/sbcl` via `set-module-dir`, it >>>> finds no modules. If I point StumpWM at `share/common-lisp/sbcl`, it >>>> finds modules, tries to compile them, and then gives me a permissions >>>> error about writing to the `/gnu` store. >>>> >>>> Is anyone using StumpWM contrib modules successfully with Guix's new >>>> layout? How? >>>> >>>> [1] - https://github.com/stumpwm/stumpwm/blob/master/module.lisp#L70 >>> >>> Hi, > > Hey, thanks for responding Guillaume, and thanks for forwarding, Pierre. > >>> In my StumpWM init file, I use '(asdf:load-system ...)' instead of >>> '(load-module ...)' to load the contrib modules that are installed in my >>> Guix profile, and it works. > > When I try this, I get this error: > > Error opening #P"/gnu/store/j6s3hhmlm8n7ynv92agcbzzxrc0bgpc0-stumpwm-20.11-lib/lib/common-lisp/sbcl/stumpwm/package-tmpAAURS01.fasl > > which is a file that does not exist. > >> With the following near the top of my StumpWM init file, the >> 'load-module' function works like 'asdf:load-system': >> >> (let* ((guix-profile (pathname-as-directory (getenv "GUIX_PROFILE"))) >> (module-dir (merge-pathnames "share/common-lisp/sbcl/" guix-profile))) >> (set-module-dir module-dir)) > > This is what I mentioned above, pointing to the `share/` side of things. > On my Guix OS system, this works (but it has to compile everything; I'd > prefer to use the precompiled fasls), but on my alien distro, I get the > afforementioned permission error as it tries to write to the store. > > I'm happy to try and find something that works in the short-term so I > can get my window manager back, but in the long-term, we should repair > the bug so that new users aren't left wondering as well. > > Thanks again for responding. > > Katherine I'm using a Guix OS and I don't have the issue; StumpWM uses the precompiled files and doesn't try to recompile anything. Maybe we can try to find what is the difference between your configuration and mine. Are all the packages for the Lisp systems and StumpWM modules that you load in your init file installed in your Guix profile? How is your StumpWM started (.xsession file, custom script, ...)? What is the result of evaluating '(getenv "XDG_CONFIG_DIRS")' in your StumpWM? What is the result of evaluating '(getenv "XDG_DATA_DIRS")' in your StumpWM? Could you share the part of your init file that sets the module directory (or directories)? Does StumpWM try to recompile every module that you load, or only some of them?