Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Generally these system tools should allow that. All you need is the system description and the FASL files. The system tool should then use the FASL files for loading. One only needs to make sure that it does not have a hard dependence on some source file.</p> <p>This way software has delivered in the Lisp world for decades (> 30 years). There is nothing wrong with that approach. If a particular tool (here ASDF, but there are others) has a problem with that, one should complain to the authors.</p> <p>If you have a practical problem with it, you should discuss it on the ASDF mailing list or post a question here. Do you have a practical problem with it?</p> <p>This will not help you directly, but it may give you some hints how a system tool usually works|ed.</p> <p><strong>Example with LispWorks 6 and its own DEFSYSTEM</strong></p> <p>We have three files in a directory FOO:</p> <pre><code>RJMBA:foo joswig$ ls -l -rw-r--r-- 1 joswig admin 13 22 Jul 20:42 a.lisp -rw-r--r-- 1 joswig admin 14 22 Jul 20:42 b.lisp -rw-r--r-- 1 joswig admin 331 22 Jul 20:41 system.lisp </code></pre> <p>system.lisp contains the following system description:</p> <pre><code>(defvar *foo-directory* (make-pathname :name nil :type nil :directory (pathname-directory *load-pathname*) :defaults *load-pathname*)) (defsystem foo (:default-pathname *foo-directory*) :members ("a" "b")) </code></pre> <p>Above sets the <code>*foo-directory*</code>pathname based on the pathname of the loaded file. Thus we can set a real absolute pathname, but don't have to manually specify it. Alternatively we could use relative pathnames - this depends on what one wants to use. I chose this to show how to set up an absolute pathname automagically.</p> <p>Now I load this file into LispWorks then compile the system:</p> <pre><code>CL-USER 12 &gt; (compile-system 'foo) ;;; Compiling file /Lisp/foo/a.lisp ... ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 1 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; (TOP-LEVEL-FORM 0) ; (TOP-LEVEL-FORM 1) ;; Processing Cross Reference Information ;;; Compiling file /Lisp/foo/b.lisp ... ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 1 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; (TOP-LEVEL-FORM 0) ; (TOP-LEVEL-FORM 1) ;; Processing Cross Reference Information (FOO) </code></pre> <p>We have created two fasl files.</p> <p>Now I copy the system.lisp file and the fasl files into a new directory:</p> <pre><code>RJMBA:Lisp joswig$ mkdir bar RJMBA:Lisp joswig$ cp foo/system.lisp bar/system.lisp RJMBA:Lisp joswig$ cp foo/a.64xfasl bar/a.64xfasl RJMBA:Lisp joswig$ cp foo/b.64xfasl bar/b.64xfasl </code></pre> <p>Now I'll start a fresh LispWorks in the <code>b</code>directory, load the system.lisp file and then load the system:</p> <pre><code>RJMBA:Lisp joswig$ cd bar RJMBA:bar joswig$ lispworks LispWorks(R): The Common Lisp Programming Environment Copyright (C) 1987-2009 LispWorks Ltd. All rights reserved. Version 6.0.0 User joswig on RJMBA.local ... CL-USER 1 &gt; (load "system.lisp") ; Loading text file /Lisp/bar/system.lisp ;; Creating system "FOO" #P"/Lisp/bar/system.lisp" CL-USER 2 &gt; (load-system 'foo) ; Loading fasl file /Lisp/bar/a.64xfasl "a" ; whatever the file does ; Loading fasl file /Lisp/bar/b.64xfasl "b" ; whatever the file does (FOO) </code></pre> <p>Done and works.</p> <p>Additionally this can be done with relative directories or so-called logical pathnames. Logical pathnames have a mapping from some pathname to a physical pathname, thus enable to use system-independent pathnames - independent from architecture, OS and directory structures. This gives an additional level of independence from the specific deployment scenario.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload