<div dir="ltr">Hi Fare,<div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 31, 2013 at 9:39 PM, Erik Huelsmann <span dir="ltr"><<a href="mailto:ehuels@gmail.com" target="_blank">ehuels@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div><br></div><div>Some time ago Mark Evenson created ASDF-JAR on ABCL. It has some issues packaging ASD files which uses #. syntax to read e.g. version files (version.lisp-sexp) such as bordeaux-threads does.</div>
<div><br></div><div>We know ECL started hooking into the ASDF/BUNDLE machinery for ASDF to overcome problems like these. Could you help me/us out and explain how we can plug ABCL into the same machinery? From what I've seen, it's most efficient if the resulting code be committed to ASDF. That's fine by me. At this point, I'd just be happy with an explanation on how to do the hooking up: the new ASDF/BUNDLE functionality doesn't seem to be documented in the manual yet.</div>
<div><br></div><div><br></div><div>Thanks for any help you may be able to provide!</div><div></div></div></blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra" style>In the mean time, I've been digging around in ASDF/BUNDLE's code. It seems ABCL is missing in the conditionals in BUNDLABLE-FILE-P, resulting in that function always returning NIL no ABCL.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>If I add abcl to the third conditional in that function, I'm being thrown a much more useful error: ABCL does not support UIOP/LISP-BUILD:COMBINE-FASLS which seems a much better error to run into.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>[A few hours later]</div><div class="gmail_extra" style>Ok, so I've hacked together a COMBINE-FASLS function and I'm able to generate a combined FASL. Case in point: bordeaux-threads--system.fasl. So far so good.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>The next step seems to be one of these:</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>1. Figure out how to generate system definition files for prebuilt systems (with concatenated fasls)</div>
<div class="gmail_extra" style>2. Figure out how to unpack (packaged) fasls and package them into larger combinations (--all-systems fasls)</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>To be honest, I think the former is more important than the latter as the former seems to be the way to prevent ASDF to go looking for sources.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>Still thanks for any help you may be able to provide!</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>
Bye,</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>Erik.</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>
PS: All I had to do to get to where I'm now is to create the ASDF-2.32-based patch:</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style><div class="gmail_extra">Index: src/org/armedbear/lisp/asdf.lisp</div>
<div class="gmail_extra">===================================================================</div><div class="gmail_extra">--- src/org/armedbear/lisp/asdf.lisp<span class="" style="white-space:pre"> </span>(revision 14453)</div>
<div class="gmail_extra">+++ src/org/armedbear/lisp/asdf.lisp<span class="" style="white-space:pre"> </span>(working copy)</div><div class="gmail_extra">@@ -4753,11 +4753,20 @@</div><div class="gmail_extra"> ;;; Links FASLs together</div>
<div class="gmail_extra"> (with-upgradability ()</div><div class="gmail_extra"> (defun combine-fasls (inputs output)</div><div class="gmail_extra">- #-(or allegro clisp clozure cmu lispworks sbcl scl xcl)</div><div class="gmail_extra">
+ #-(or abcl allegro clisp clozure cmu lispworks sbcl scl xcl)</div><div class="gmail_extra"> (error "~A does not support ~S~%inputs ~S~%output ~S"</div><div class="gmail_extra"> (implementation-type) 'combine-fasls inputs output)</div>
<div class="gmail_extra"> #+clozure (ccl:fasl-concatenate output inputs :if-exists :supersede)</div><div class="gmail_extra"> #+(or allegro clisp cmu sbcl scl xcl) (concatenate-files inputs output)</div><div class="gmail_extra">
+ #+abcl</div><div class="gmail_extra">+ (let ((fasls (make-hash-table :test #'equal)))</div><div class="gmail_extra">+ (loop :for fasl :in inputs</div><div class="gmail_extra">+ :do (setf (gethash fasl fasls)</div>
<div class="gmail_extra">+ (make-pathname :host nil</div><div class="gmail_extra">+ :device nil</div><div class="gmail_extra">+ :directory nil</div>
<div class="gmail_extra">+ :defaults fasl)))</div><div class="gmail_extra">+ (sys:zip output fasls))</div><div class="gmail_extra"> #+lispworks</div><div class="gmail_extra"> (let (fasls)</div>
<div class="gmail_extra"> (unwind-protect</div><div class="gmail_extra">@@ -8684,7 +8693,7 @@</div><div class="gmail_extra"> (or #+ecl (or (equalp type (compile-file-type :type :object))</div><div class="gmail_extra">
(equalp type (compile-file-type :type :static-library)))</div><div class="gmail_extra"> #+mkcl (equalp type (compile-file-type :fasl-p nil))</div><div class="gmail_extra">- #+(or allegro clisp clozure cmu lispworks sbcl scl xcl) (equalp type (compile-file-type)))))</div>
<div class="gmail_extra">+ #+(or abcl allegro clisp clozure cmu lispworks sbcl scl xcl) (equalp type (compile-file-type)))))</div><div class="gmail_extra"> </div><div class="gmail_extra"> (defgeneric* (trivial-system-p) (component))</div>
<div class="gmail_extra"> </div><div><br></div><div><br></div><div><br></div><div><br></div></div></div>