<br><br><div class="gmail_quote">On Fri, Feb 22, 2013 at 3:58 PM, Mark Evenson <span dir="ltr"><<a href="mailto:evenson@panix.com" target="_blank">evenson@panix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="HOEnZb"><div class="h5">On 2/22/13 4:01 PM, Xiaofeng Yang wrote:<br>
> Hi, all<br>
><br>
> I built ABCL 1.1.1 using Ant. After I built it, I found that the source<br>
> locations of all the symbols are absolute path. For exmaple:<br>
> [1] CL-USER(1): (symbol-plist 'defun)<br>
> (SYSTEM::%SOURCE<br>
> (#P"L:/abcl-src-1.1.1/src/org/armedbear/lisp/precompiler.lisp" . 44441)<br>
> PRECOMPILER::PRECOMPILE-HANDLER PRECOMPILER::PRECOMPILE-DEFUN)<br>
><br>
> I tried  using '--nosystem', setting (LOGICAL-PATHNAME-TRANSLATIONS<br>
> "sys") by myself, and even deleting system.lisp from the jar. But the<br>
> source location didn't change.<br>
><br>
> How can I build ABCL 1.1.1 without recording the absolute path of the<br>
> source ? Or, making the source location changable so that I can locate<br>
> it even if I change the path of the source code ? I think I can do it<br>
> manually by i.g.<br>
> (dolist (pkg (list-all-packages))<br>
>   (do-symbols (sym pkg)<br>
>              if there exists system::%source in symbol-plist, replace it)).<br>
> Is there any other way to do this ?<br>
<br>
</div></div>Currently, there is no way of building to not recording the physical<br>
pathname, but there should be.  The values stored in the symbol plists<br>
should use the SYS:SRC logical pathname.  I've recorded this as ticket<br>
[#301][].<br></blockquote><div><br></div><div>Make sure this works with slime. IIRC slime doesn't understand logical pathnames as source locations currently. FWIW I've used the below to adjust the source pointers in the past.</div>

<div><br></div><div><div>(defun fix-abcl-src-pointers () </div><div>  (do-all-symbols (sym) </div><div>    (let ((s (get sym 'system::%source)))</div><div>      (when (and s (consp s) (pathnamep (car s)) (search '("org" "armedbear") (pathname-directory (car s)) :test 'equal))</div>

<div><span class="Apple-tab-span" style="white-space:pre">      </span>(let ((new-pname </div><div><span class="Apple-tab-span" style="white-space:pre">   </span>       (cond ((find #\! (namestring (car s)))</div><div><span class="Apple-tab-span" style="white-space:pre">             </span>      (format nil "abcl-src:~a"</div>

<div><span class="Apple-tab-span" style="white-space:pre">                      </span>      (substitute #\; #\/ </div><div><span class="Apple-tab-span" style="white-space:pre">                                       </span>  (subseq (namestring (car s))</div><div><span class="Apple-tab-span" style="white-space:pre">                                              </span>  (+ 2 (position #\! (namestring (car s))))))</div>

<div><span class="Apple-tab-span" style="white-space:pre">                      </span>      ))</div><div><span class="Apple-tab-span" style="white-space:pre">          </span>     ((position "src" (pathname-directory (car s)) :test 'equal)</div>

<div><span class="Apple-tab-span" style="white-space:pre">              </span>      (format nil "abcl-src:~{~A;~}~a.~a"</div><div><span class="Apple-tab-span" style="white-space:pre">                       </span>      (subseq (pathname-directory (car s))</div>

<div><span class="Apple-tab-span" style="white-space:pre">                              </span>      (1+ (position "src" (pathname-directory (car s)) :test 'equal)))</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>      (pathname-name (car s))</div>

<div><span class="Apple-tab-span" style="white-space:pre">                      </span>      (pathname-type (car s)))))))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>  (when new-pname</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>    (setf (car s) (translate-logical-pathname new-pname)))</div>

<div><span class="Apple-tab-span" style="white-space:pre">      </span>  )))))</div><div><br></div><div>I define the logical pathname ABCL-SRC to be wherever the src directory is, e.g</div></div><div><div>(setf (logical-pathname-translations "abcl-src")</div>

<div>      `(("**;*.*" "/Users/alanr/repos/abcl/src/**/*.*")))</div></div><div><br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
<br>
[#301]: <a href="http://trac.common-lisp.net/armedbear/ticket/301" target="_blank">http://trac.common-lisp.net/armedbear/ticket/301</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
<br>
"A screaming comes across the sky.  It has happened before, but there is<br>
nothing to compare it to now."<br>
<br>
<br>
<br>
_______________________________________________<br>
armedbear-devel mailing list<br>
<a href="mailto:armedbear-devel@common-lisp.net">armedbear-devel@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel</a><br>
</font></span></blockquote></div><br>