After considering what got done with v3 of clc I've come to the following conclusions:
- dpkg's actions cannot be depended on. It will configure lisps when clc itself it not yet configured and vice-versa. So clc should work even when not configured (and no daemon is listening yet) or when the lisps seems configured but are not.
- when installing lisp libraries or implementations it is irritating to have to wait until the compile finishes.
- the error reporting could be better, but already it is very usefull IMHO
- the daemon idea works but is a little brittle
- the user's actions should be different from the installation of a library, so we can give priority to the user's request
- the using of a spool directory is difficult to manage, using a setuid program to safely add entries would be better
- better integration with asdf would be nice to have
- supporting non-debian systems would be nice
- overriding require is not good
So I propose the following broad idea's:
- We modify the clc-send-command program to always ask the daemon to do the work ASAP. This becomes then the only entry-point for user's requests via the lisp implementation or the command line.
- Building offline becomes the only mode of operation for installation and removal, and we create a new program clc-create-request to add requests to the queue directory. This program will be suid so we can remove the 777's from the spool directory.
- The only actions a lisp implementation would have to take to rebuild libraries is to register to the clc with the clc-create-request register on install and to remove all libraries on removal with clc-remove-implementation. The last program would remove all fasl files from that implementation.
- The implementation should of course still create a lisp core with clc installed and we continue to use the shell-script to do this.
- A library would just use clc-create-request add-library to add itself to clc, on removal just clc-remove-library . The last command would remove all fasl immediatly
- A cron-job would at night gather all the requests and rebuild the libraries
- I would hope implementations would give better debug output in case of problems...
- we would have to consider selinux
So we would simplify most code, and still keeping the bulk of code.
Comments?
common-lisp-controller