<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body><div style="font-family: sans-serif;"><div class="markdown" style="white-space: normal;">
<p dir="auto"><code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">ASDF:MAKE</code> is a wrapper function that can do <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">LOAD-SYSTEM</code> or other things through some complex configuration process. I think the intent is to let the user specify that the <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">MAKE</code> operation might actually involve building an executable, a library, or some other thing (particularly for the C-based implementations).</p>
<p dir="auto">So you could require the <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">asdf:make</code> on <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">"use-posix-syscalls"</code> to do something like build a <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">.jar</code> file or some JNI whatchamacallit.</p>
<p dir="auto">But if it's just going to do <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">load-system</code>, I'd encourage you to simply tailor the behavior of the <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">load-op</code>. <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">make</code> is a new layer of complexity, which you should avoid unless you need it.</p>
<p dir="auto">Best,<br>
R</p>
<p dir="auto">On 3 May 2023, at 10:30, Mark Evenson wrote:</p>
</div><div class="plaintext" style="white-space: normal;"><blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; color: #777777;"><blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; border-left-color: #999999; color: #999999;"><p dir="auto">On May 2, 2023, at 21:16, Alan Ruttenberg <alanruttenberg@gmail.com> wrote:</p>
</blockquote><p dir="auto">[…]</p>
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; border-left-color: #999999; color: #999999;"><p dir="auto">It's true that I use aio. TBH I've never understood the point of separating the contribs from the base. File size isn't an issue any more. What's the upside of splitting them apart? A bit of extra time indexing the classes in the jar?</p>
</blockquote><p dir="auto">From <<a href="https://github.com/armedbear/abcl/blob/master/doc/packaging-abcl.org" style="color: #777777;">https://github.com/armedbear/abcl/blob/master/doc/packaging-abcl.org</a>> :</p>
<p dir="auto">We create two separate jar artifacts in order to:
<br>
• To place an upper bound of size of abcl.jar regardless of what we package in abcl-contrib.jar.
<br>
• Clearly mark which parts of the code-base are covered under GPLv2+classpath from those that may have other licensing terms. By making the loading of “contrib” a dynamic operation, we defer possible infringement to the User who redistributes the resulting jar artifact.</p>
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; border-left-color: #999999; color: #999999;"><p dir="auto">Conceptually, we should somehow place the implementation of setting environment variables via the C syscall as a patch in the contrib system in a new contrib called (?) USE-POSIX-SYSCALLS (terrible name, please change). Such a new contrib would a) depend on
<br>
JNA and b) have to be used via</p>
<p dir="auto"> (asdf:make :use-posix-syscalls)</p>
<p dir="auto">I don't know what asdf:make does. I tried it in a situation (autoloading the java parser when #1 was used the first time) where I expected it to load a system and it didn't seem to.</p>
</blockquote><p dir="auto">ASDF:MAKE is a shorter synonym for ASDF:LOAD-SYSTEM as far as I understand things.</p>
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; border-left-color: #999999; color: #999999;"><p dir="auto">Would it be sufficient to do something like:</p>
<p dir="auto">(defun ensure-jna-loaded ()
<br>
(or *jna-loaded*
<br>
(progn
<br>
(when (not (ignore-errors (find-java-class 'jna.nativelibrary)))
<br>
(require 'abcl-asdf)
<br>
(add-to-classpath (funcall (intern "RESOLVE" 'abcl-asdf "net.java.dev.jna/jna/LATEST")))
<br>
(setq *jna-loaded* t)))))</p>
</blockquote><p dir="auto">Probably not: you really want to depend on the ASDF encapsulation of JNA in 'contrib/mvn/jna.asd’, not the presence of yet another special (“*jna-loaded*”). Since you are requiring ABCL-ASDF:RESOLVE to be present, you can make the assumption that both ASDF and ABCL-CONTRIB have been successfully REQUIREd.</p>
<p dir="auto">[…]</p>
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; border-left-color: #999999; color: #999999;"><p dir="auto">Bottom line is that I don't know how to package this under whatever the assumptions are when not using abcl-aio</p>
</blockquote><p dir="auto">Alright. I will try to take a stab at this after I figure out the way forward with the Gray streams/SLIME imbroglio.</p>
<p dir="auto">--
<br>
"A screaming comes across the sky. It has happened before but there is nothing</p>
</blockquote></div>
<div class="markdown" style="white-space: normal;">
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; color: #777777;">
<p dir="auto">to compare to it now."</p>
</blockquote>
</div>
</div>
</body>
</html>