help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with McCLIM (Common Lisp)


From: Pierre Neidhardt
Subject: Re: Problems with McCLIM (Common Lisp)
Date: Thu, 13 Aug 2020 09:16:08 +0200

Hi Ricardo,

I haven't packaged McCLIM nor looked at the package, so I'll try to help
with what I know :)

> I’d like to play with McCLIM, but I don’t know enough about Common Lisp
> to understand how to launch the examples.
>
> Here’s what I’ve done:
>
>     guix install sbcl sbcl-mcclim sbcl-slime-swank
>
> This is the first question, actually: if I don’t manually install
> sbcl-slime-swank I get errors complaining about swank being absent.
> Should sbcl-mcclim propagate sbcl-slime-swank?

When SBCL- packages are built, they include references to all the
dependencies in the .asd so there should be no need to propagate it.

This won't work if SLIME-Swank is loaded differently at load time.
This is probably what's happening here.

> Then I started the sbcl REPL and input this:
>
>     (require :asdf)   ; I don’t know why I need this

ASDF is the Common Lisp build system.  Among others, it allows you to
load Common Lisp systems.

ASDF is not standard, it's actually distributed as a package, often
together with compilers.

Some compilers enable it by default, some, like SBCL, don't, so you need
to require it yourself.

I recommend you put this in your ~/.sbclrc:

--8<---------------cut here---------------start------------->8---
(require "asdf")
--8<---------------cut here---------------end--------------->8---

>     (require :mcclim)
>
> This seems to compile Swank, prints a whole bunch of warnings about
> invalid version strings in McCLIM and returns me to the REPL.

The invalid version strings are due to the Guix sbcl-* packages using
git versions.  There are harmless.

> Then I tried
>
>     (require :clim-examples)
>
> but it fails with “Don't know how to REQUIRE CLIM-EXAMPLES.”.  So I
> loaded the asd file manually:
>
>     (load 
> "/home/rekado/.guix-profile/share/common-lisp/sbcl-source/mcclim/Examples/clim-examples.asd")

Only the .asd files in the well known locations are recognized by ASDF
if I'm not mistaken.

Note that an .asd can forward to another.  So here the problem seems to
be with the main McCLIM .asd file.  This could be a Guix problem, see below.

> Now at least clim-examples appears to be found:
>
>    (asdf:load-system "clim-examples")
>
> This fails with this error:
>
> --8<---------------cut here---------------start------------->8---
> debugger invoked on a ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread
> #<THREAD "main thread" RUNNING {10009C8083}>:
>   Component #:MCCLIM-LAYOUTS/TAB not found, required by
>   #<SYSTEM "clim-examples">
> --8<---------------cut here---------------end--------------->8---
>
> I see that “lib/sbcl/mcclim-layouts-tab.asd” exists, but loading it
> doesn’t help.

What's the error then?

Try

--8<---------------cut here---------------start------------->8---
(asdf:locate-system :mcclim-layouts/tab)
--8<---------------cut here---------------end--------------->8---

It will tell you where the system is.
If it does not find it, it means the .asd file did not do  the job.



With all that said, here comes the most important piece of information:
our SBCL build system has some serious flaws, most importantly because
it _rewrites_ the .asd files.  This could be why the examples cannot be
found or why mcclim-layouts/tab causes problem.

Personally I've stopped using sbcl- packages altogether.  I'm not
exclusively using cl-* packages.  The drawback is that the .fasl must be
built the first time, but then you get the smoothest experience just
like with Quicklisp.

The only exception to this, in my experience, is Osicat (the POSIX
library): the cl-* version does not work but that's an upstream issue.
For this one I use sbcl-osicat.

Hope that helps! :)

-- 
Pierre Neidhardt
https://ambrevar.xyz/

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]