Lisp HUG Maillist Archive

Trouble with simple application delivery example

Hello,

I'm having trouble getting a very simple application to work at delivery level 2 and above.  It works fine with 0 and 1.   The delivery image gets created but I get a runtime error, see below.  There must be something obviously wrong with what I'm doing, maybe somebody can help.  Here's the code:

--------------------------------
;;;; deliver-example.lisp
(defpackage deliver-example (:use common-lisp))
(in-package :deliver-example)

(defparameter *option* nil)

(defun main ()
  (setf *option* "hello world!~%")
  (format t *option*))

---------------------------------
;;;; deliver.lisp
(lispworks:load-all-patches)
(load #P"deliver-example.lisp")
(lispworks:deliver #'deliver-example::main #P"deliver-example"
                   2)
(quit)
---------------------------------

I create the image like so:

$ /usr/local/lib/LispWorks/lispworks-5-0-0-x86-linux -build deliver.lisp
.... lots of verbose information...
Shaking stage : Saving image
Build saving image: deliver-example
Build saved image: /home/anthony/work/svn/code/LoaderHack/Server/deliver-example/deliver-example

Delivery successful - deliver-example

---------------------------------

Here's the error I'm getting:

$ ./deliver-example

Error: Undefined operator SETF in form (SETF DELIVER-EXAMPLE::*OPTION* "hello world!~%").
  1 (continue) Try invoking SETF again.
  2 Return some values from the form (SETF DELIVER-EXAMPLE::*OPTION* "hello world!~%").
  3 Try invoking something other than SETF with the same arguments.
  4 Set the symbol-function of SETF to another function.
  5 Set the macro-function of SETF to another function.

Type :b for backtrace, :c <option number> to proceed,  or :? for other options

CL-USER 1 : 1 >

It seems SETF was removed from the delivered image?  SETF is a macro, so why would it be needed at runtime?

I can include the delivery log if needed, but it is quite long.   I'm using lispworks 5.0.2 on Ubuntu Edgy.

Any help would be appreciated.  Thanks!

Anthony

Re: Trouble with simple application delivery example

You're trying to run the code interpreted.  Level 2 and above removes  
EVAL.  Try compiling the file.  (I.e., change your deliver script to  
say)

     (compile-file #p"deliver-example.lisp" :load t)

   - Gary


On Apr 18, 2007, at 8:27 PM, Anthony Fairchild wrote:

> Hello,
>
> I'm having trouble getting a very simple application to work at  
> delivery level 2 and above.  It works fine with 0 and 1.   The  
> delivery image gets created but I get a runtime error, see below.   
> There must be something obviously wrong with what I'm doing, maybe  
> somebody can help.  Here's the code:
>
> --------------------------------
> ;;;; deliver-example.lisp
> (defpackage deliver-example (:use common-lisp))
> (in-package :deliver-example)
>
> (defparameter *option* nil)
>
> (defun main ()
>   (setf *option* "hello world!~%")
>   (format t *option*))
>
> ---------------------------------
> ;;;; deliver.lisp
> (lispworks:load-all-patches)
> (load #P"deliver-example.lisp")
> (lispworks:deliver #'deliver-example::main #P"deliver-example"
>                    2)
> (quit)
> ---------------------------------
>
> I create the image like so:
>
> $ /usr/local/lib/LispWorks/lispworks-5-0-0-x86-linux -build  
> deliver.lisp
> .... lots of verbose information...
> Shaking stage : Saving image
> Build saving image: deliver-example
> Build saved image: /home/anthony/work/svn/code/LoaderHack/Server/ 
> deliver-example/deliver-example
>
> Delivery successful - deliver-example
>
> ---------------------------------
>
> Here's the error I'm getting:
>
> $ ./deliver-example
>
> Error: Undefined operator SETF in form (SETF DELIVER- 
> EXAMPLE::*OPTION* "hello world!~%").
>   1 (continue) Try invoking SETF again.
>   2 Return some values from the form (SETF DELIVER- 
> EXAMPLE::*OPTION* "hello world!~%").
>   3 Try invoking something other than SETF with the same arguments.
>   4 Set the symbol-function of SETF to another function.
>   5 Set the macro-function of SETF to another function.
>
> Type :b for backtrace, :c <option number> to proceed,  or :? for  
> other options
>
> CL-USER 1 : 1 >
>
> It seems SETF was removed from the delivered image?  SETF is a  
> macro, so why would it be needed at runtime?
>
> I can include the delivery log if needed, but it is quite long.    
> I'm using lispworks 5.0.2 on Ubuntu Edgy.
>
> Any help would be appreciated.  Thanks!
>
> Anthony


Updated at: 2020-12-10 08:46 UTC