[CM] CVS cmio error

Rick Taube taube@uiuc.edu
Thu, 24 Nov 2005 11:27:44 -0600

> Ouch, it looks like this old dog must now learn some new tricks. I 
> admit that the previous method was simpler for me.

I hope it wont be harder! the goals were to make it easier to build 
(and to maintain) while also increasing functionality and portage.  The 
main difference between the "old" and the "new" is that common lisp CM 
is now based on ASDF and CFFI, both of which are rapidly becoming 
"standard" ways to do things in CLTL. By switching to CFFI both 
Portmidi and Midishare APIs will now work in basicially every lisp: 
CLISP SBCL CMUCL OpenMCL Lispworks ACL, and should run on Windows as 
well. Just as importantly, I dont have to deal with FFI stuff anymore, 
and the Portmidi and Midshare packages can be loaded into Lisp without 
CM even around. The idea is to make the default CM a smallish "kernel" 
that works in every lisp and scheme and then to let people add whatever 
stuff they want to (assuming their lisp supports it) via a single 
functino call: (use-system ...)

ASDF and CFFI also makes it easier to install non-trivial things: for 
example you dont have to downlaad and add "interface databases" to 
openmcl anymore, or  install portmidi C libs etc. Both CLM and CMN also 
now have ASADF definitions so they can be loaded via use-system too.  
The use-system function works with ANY asdf based software, of which 
there score of already available, all of which you can work with simply 
by downlading their sources and doing (use-system :foo)

asdf is much more powerful and scalable than the horrible hack code in 

> Some questions: If I want everything loaded into CM (Fomus, PM, CMN, 
> CLM, the works), do I need to issue a use-system for each one ?

yes BUT you do NOT need to do this every time you start CM. To 
automaticall load everything add the appropriate use-systems to either:
	cm.lisp   (for "site-wide" configuration)
	.cminit.lisp  (for personal configuration)
If you add your use-system to your .cminit.lisp file then you will 
always get very latest versions of the software you use as part of 
starting up cm.

> Also, what if I don't want to place all my Lisp components into one 
> directory ? Will that adversely affect how I build/start/use CM ?

No, you can pass a :directory  to use-system:

	(use-system :fomus :directory "/foo/bar/baz/")

if you do not specify a directory, then use-system  first looks on 
asdf:*central-registry* and if it cant find it, it searches under the 
parent directory of CM.

> Will I need to call use-system if I want to use the CMIO panel or can 
> I still conveniently invoke the component programs from the panel ?

It should work exactly the same, in fact thats were i got the intiall 
idea. its just that underneath the window it will now do (use-system 
...) instead of the hack loading it does now.

I have not converted Lambda-GTk and the GUI tools to the new loading 

> Btw, happy holidays to Rick and all cmdist users and developers !

Gobble gobble!