Jump to content

ADSF support for Opusmodus 3: could you please set :keep-modules to T when creating the Opusmodus delivery?

Recommended Posts

I just tried using Opusmodus 3, but unfortunately there is a principle problem for me: it prevents me from loading any of me pre-existing libraries, which provide a lot of functionality already, but which I created for Opusmodus 2 (libraries like tot, cluster-engine, cluster-rules, cm-patterns etc.). It appears this is caused by the switch of Lisp compilers, and that the new version -- now based on LispWorks -- has been "delivered" without ADSF support.


However, it appears this can be changed easily for Opusmodus by adjusting the parameters for creating the delivery to :KEEP-MODULES T (see docs). This is also what the error message I get is saying.


> (require :tot)
Error: REQUIRE was called after delivery time with module :tot.
To fix this, either require the module before delivery or use :KEEP-MODULES T.
  1 (abort) Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.



Context for those interested in tech details: ADSF is the de facto standard for loading Common Lisp applications that consist of multiple source files etc. It is also part of LispWorks (though seemingly in the outdated version 2, because LispWorks has its on system for such purposes, but that is another matter).


LispWorks is a commercial Lisp compiler, and when you deliver your Lisp application to your client, you usually create a delivery of your software, which disables some of the LispWorks features. After all, LispWorks still wants to sell further copies of its development environment (in fact, it is amazing how much development functionality can be preserved in a delivery as demonstrated by Opusmodus itself).


Nevertheless, when creating the delivery it is possible to opt out of disabling some of the features, e.g., with the above-mentioned parameter KEEP-MODULES, as documented by LispWorks (I also remember from PWGL times, which was also a LispWorks delivery, that it was possible to load modules with ADSF).


Sorry, but it has been a few years since I have had time using Opusmodus for the last time, and at the time I have still been using version 2 (on my previous MacBook).


Thanks a lot! 

BTW: There are a bunch of hopefully helpful links in the above post, but for some reason they are not highlighted as such.

Link to comment
Share on other sites

require is not ASDF, it is Common Lisp.
To load ASDF system, you should use asdf:load-system, for example:


(asdf:load-system :tot)

This is how Opusmodus itself load third party code.
Apparently SBCL made require use asdf:load-system.


ADSF is the de facto standard for loading Common Lisp applications that


consist of multiple source files etc.

That is the reason to use asdf:load-system.

Link to comment
Share on other sites

Update: I meanwhile managed to fix one of the issues, which prevented loading cluster-engine (some Swedish word in a comment  caused some character encoding and end-of-line style mismatch, that was tricky to pin down, in particular also due to a somewhat cryptic error message 🙄). Unfortunately, there is still some other problem when loading the tot library, which I will hunt down eventually, and then share my fixes at Github.


In the meantime, I decided to simply use Opusmodus 2 on my old MacBook for a little longer, as there also the Emacs/Slime interface just works.


Link to comment
Share on other sites

  • 4 weeks later...

Update: My tot library can now in principle be loaded into Opusmodus 3. However, note the current disclaimer (link) in the Readme on some still existing issues with its Opusmodus 3 support.


Myself, I will for now continue using mainly Opusmodus 2, because there the Emacs/Slime interface still works. For my workflow, that interface makes a huge difference in terms of work speed etc. (I cannot really develop Lisp libraries without access to an interactive debugger, the convenient cross references between different definitions and so on).

Link to comment
Share on other sites

Thanks for your encouragement, Stephane!


In case you want to use this and run into difficulties, just let me know. If I am not responding to any messages on the forum (apologies in advance), feel free to send me an email. You'll find my email address in the impression on my website linked in my profile.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

Terms of Use Privacy Policy