Subject: ASDF can't load sbcl-clx-truetype installed through Guix
From: Lars Rustand <[email-masked]>
To: [email-masked]
Date: Sat, 27 Jan 2024 16:57:36 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Trying to load clx-truetype with ASDF in SBCL fails because of read-only
filesystem. This is caused by the store being read-only and ASDF is
trying to save the compiled file there. I read somewhere that Guix
already supplies precompiled files for all Common Lisp libraries, so
ASDF should just be able to load this one instead of compiling it, but
this doesn't seem to work in this case.

I'm able to load other packages just fine, like sbcl-slynk and
sbcl-alexandria. Using cl-clx-truetype instead of sbcl-clx-truetype also
works fine, even though this one obviously also needs compilation.

I'm not sure what the exact cause is, but it seems that there are at
least two things wrong.
1. ASDF/SBCL doesn't find the precompiled file(s) for clx-truetype.
2. The path to where the compiled files are saved is wrong.

Steps to reproduce:
1. Install sbcl and sbcl-clx-truetype
2. Run `sbcl --eval '(require :asdf)' --eval '(asdf:load-system :clx-truetype)'`
2a. Or start sbcl and manually run the commands

--8<---------------cut here---------------start------------->8---
This is SBCL 2.4.0, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
WARNING: System definition file #P"/gnu/store/qwb8qyjn615icrgxkjwqjwlwkwzxcc7y-sbcl-clx-truetype-0.0.1-1.c6e10a9/share/common-lisp/sbcl/clx-truetype/clx-truetype.asd" contains definition for system "clx-truetype-test". Please only define "clx-truetype" and secondary systems with a name starting with "clx-truetype/" (e.g. "clx-truetype/test") in that file.
WARNING: System definition file #P"/gnu/store/bqfsbh15lpnf9i9f5qf6ya6yhcdk8nw3-sbcl-cl-store-0.8.11-1.c787337/share/common-lisp/sbcl/cl-store/cl-store.asd" contains definition for system "cl-store-tests". Please only define "cl-store" and secondary systems with a name starting with "cl-store/" (e.g. "cl-store/test") in that file.
WARNING: redefining ZPB-TTF::LOCATION in DEFGENERIC

debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread
#<THREAD tid=8027 "main thread" RUNNING {1001460003}>:
  Error opening #P"/gnu/store/qwb8qyjn615icrgxkjwqjwlwkwzxcc7y-sbcl-clx-truetype-0.0.1-1.c6e10a9/lib/common-lisp/sbcl/clx-truetype/package-tmpGHU3ALSV.fasl":

    Read-only file system

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE                     ] Retry opening.
  1: [USE-VALUE                    ] Try opening a different file.
  2: [RETRY                        ] Retry
                                     compiling #<CL-SOURCE-FILE "clx-truetype" "package">.
  3: [ACCEPT                       ] Continue, treating
                                     compiling #<CL-SOURCE-FILE "clx-truetype" "package">
                                     as having been successful.
  4:                                 Retry ASDF operation.
  5: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  6:                                 Retry ASDF operation.
  7:                                 Retry ASDF operation after resetting the
                                     configuration.
  8:                                 Ignore runtime option --eval "(asdf:load-system :clx-truetype)".
  9: [ABORT                        ] Skip rest of --eval and --load options.
 10:                                 Skip to toplevel READ/EVAL/PRINT loop.
 11: [EXIT                         ] Exit SBCL (calling #'EXIT, killing the process).

(SB-IMPL::%OPEN-ERROR #P"/gnu/store/qwb8qyjn615icrgxkjwqjwlwkwzxcc7y-sbcl-clx-truetype-0.0.1-1.c6e10a9/lib/common-lisp/sbcl/clx-truetype/package-tmpGHU3ALSV.fasl" 30 NIL :CREATE)
0]
;
; compilation unit aborted
;   caught 1 fatal ERROR condition
* %
--8<---------------cut here---------------end--------------->8---