I am confused by this error message.
; ; File: /root/erlisp/erlisp-cmucl/erlisp/src/manager.lisp
; In: DEFUN SYSTEM-MANAGER-PROCESS
; (RECEIVE-WITH-MATCHER (COND-MATCHER M) (T M)) ; Error: (during macroexpansion) ; Error in KERNEL::UNDEFINED-SYMBOL-ERROR-HANDLER: the function LISTEN-TO-SYSTEM-MANAGER is undefined.
In the files you attached there was no call to this function, and as I have not checked out the source I can't be sure, but apparently some macro calls LISTEN-TO-SYSTEM-MANAGER during its expansion.
Probably these calls occur in messaging.lisp. I forgot to include that file, and I won't have access to that computer again until tonight. Each process uses that function before send/receive to check whether it has orders to die.
Now normally macroexpansion happens before functions are loaded. Therefore a macro should normally expand without calling functions (but may of course include function calls in the generated expansion code).
receive-with-matcher is a macro. listen-to-system-manager is called at the beginning of that macro. Instead, the macro should just be producing code that calls listen-... instead of calling listen-... and then producing code. I see my mistake now.
When you really want to have a function to be available at macro-expansion time, you have to wrap the function in eval-when, like what now happens already with many functions in messaging.lisp:
(eval-when (:compile-toplevel :load-toplevel :execute) (defun LISTEN-... (..) ..) )
I don't need it at macro-expansion time. I was treating macros as though they were functions. This should be easy to fix now that I know what the problem is. Without seeing the function call, how did you figure out that I was calling that "missing function" from a macro?
Eric