<div dir="ltr">Hey, <div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 1, 2017 at 8:00 AM, Mirko Vukovic <span dir="ltr"><<a href="mailto:mirko.vukovic@gmail.com" target="_blank">mirko.vukovic@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr" class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg">Hello,<br class="gmail-m_-3969684068445940312gmail_msg"><br class="gmail-m_-3969684068445940312gmail_msg"></div>This is with asdf 3.1.7.27,<br class="gmail-m_-3969684068445940312gmail_msg">Armed Bear Common Lisp 1.4.0<br class="gmail-m_-3969684068445940312gmail_msg">Java 1.6.0_41 Sun Microsystems Inc.<br class="gmail-m_-3969684068445940312gmail_msg">OpenJDK 64-Bit Server VM,<br class="gmail-m_-3969684068445940312gmail_msg"></div>Emacs & Slime<br class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><br class="gmail-m_-3969684068445940312gmail_msg">The following example code from the ASDF manual<br></div></div></div></div></div></blockquote><div><br></div><div>The manual,  <a href="https://common-lisp.net/project/asdf/asdf.html#The-defsystem-form">https://common-lisp.net/project/asdf/asdf.html#The-defsystem-form</a>,  just before the code, states : </div><div><br></div><div><< Let’s look at a simple system. This is a complete file that should be saved as hello-lisp.asd (in order that ASDF can find it when ordered to operate on the system named "hello-lisp") >></div><div><br></div><div>This is important, as without a pathname where the system definition resides, how can it know where "packages.lisp" resides?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr" class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><br class="gmail-m_-3969684068445940312gmail_msg">(asdf:defsystem "hello-lisp"<br class="gmail-m_-3969684068445940312gmail_msg">  :description "hello-lisp: a sample Lisp system."<br class="gmail-m_-3969684068445940312gmail_msg">  :version "0.0.1"<br class="gmail-m_-3969684068445940312gmail_msg">  :author "Joe User <<a href="mailto:joe@example.com" class="gmail-m_-3969684068445940312gmail_msg" target="_blank">joe@example.com</a>>"<br class="gmail-m_-3969684068445940312gmail_msg">  :licence "Public Domain"<br class="gmail-m_-3969684068445940312gmail_msg">  :depends-on ("optima.ppcre" "command-line-arguments")<br class="gmail-m_-3969684068445940312gmail_msg">  :components ((:file "packages")<br class="gmail-m_-3969684068445940312gmail_msg">               (:file "macros" :depends-on ("packages"))<br class="gmail-m_-3969684068445940312gmail_msg">               (:file "hello" :depends-on ("macros"))))<br><br>when executed via the ABCL command line gives a relative path error<br></div></div></div></div></div></blockquote><div><br></div><div>Because it is looking for  #P"packages.lisp", but does not know where it resides. </div><div><br></div><div>Have a look at <a href="https://github.com/fare/asdf/blob/90502898375fe183d96cb03cd333d8b3ec09c0ba/parse-defsystem.lisp#L21">https://github.com/fare/asdf/blob/90502898375fe183d96cb03cd333d8b3ec09c0ba/parse-defsystem.lisp#L21</a></div><div><br></div><div><div>;; The defsystem macro calls this function to determine the pathname of a system as follows:</div><div>    ;; 1. If the pathname argument is an pathname object (NOT a namestring),</div><div>    ;;    that is already an absolute pathname, return it.</div><div>    ;; 2. Otherwise, the directory containing the LOAD-PATHNAME</div><div>    ;;    is considered (as deduced from e.g. *LOAD-PATHNAME*), and</div><div>    ;;    if it is indeed available and an absolute pathname, then</div><div>    ;;    the PATHNAME argument is normalized to a relative pathname</div><div>    ;;    as per PARSE-UNIX-NAMESTRING (with ENSURE-DIRECTORY T)</div><div>    ;;    and merged into that DIRECTORY as per SUBPATHNAME.</div><div>    ;;    Note: avoid *COMPILE-FILE-PATHNAME* because the .asd is loaded as source,</div><div>    ;;    but may be from within the EVAL-WHEN of a file compilation.</div><div>    ;; If no absolute pathname was found, we return NIL.</div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr" class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><br>  Invalid relative pathname #P"packages.lisp" for component ("hello-lisp" "packages")<br>Restarts:<br>  0: RETRY                         Retry ASDF operation.<br>  1: CLEAR-CONFIGURATION-AND-RETRY Retry ASDF operation after resetting the configuration.<br>  2: TOP-LEVEL                     Return to top level.<br><br></div><div class="gmail-m_-3969684068445940312gmail_msg">If that code is in a file, then the file compiles cleanly:<br></div></div></div></div></div></blockquote><div><br></div><div><br></div><div>As it should. It now knows where the files are located, because you have it in the .asd file which is LOAD'ed. </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr" class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><br>CL-USER(6): (load (compile-file "test.asd"))<br>; Compiling /home/mv/projects/poi+excel/<wbr>test.asd ...<br>; (IN-PACKAGE :CL-USER)<br>; (ASDF/PARSE-DEFSYSTEM:<wbr>DEFSYSTEM "hello-lisp" ...)<br>; Wrote /home/mv/projects/poi+excel/<wbr>test.abcl (0.021 seconds)<br>T<br>CL-USER(7): <br><br></div><div class="gmail-m_-3969684068445940312gmail_msg">I am looking for confirmation of this and second opinions before taking up at the ASDF mailing list.<br></div></div></div></div></div></blockquote><div><br></div><div>Confirmed, the second option is what should be used most of the time. Othewrwise, the source location (:pathname) can be used to tell it where the source code lies without it 'guessing'. Does that all make sense?</div><div><br></div><div>Cheers, </div><div><br></div><div>Drew Crampsie</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr" class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><div class="gmail-m_-3969684068445940312gmail_msg"><br></div><div class="gmail-m_-3969684068445940312gmail_msg">Thanks,<br><br></div><div class="gmail-m_-3969684068445940312gmail_msg">Mirko<br></div><div class="gmail-m_-3969684068445940312gmail_msg"><br><br class="gmail-m_-3969684068445940312gmail_msg"></div></div></div></div></div>
</blockquote></div><br></div></div>