tags 384697 + patch thanks Hello Faré!
On Sat, 26 Aug 2006 06:08:39 +0200, Faré wrote: > I'm not sure we either need or want a /etc/cl-launchrc or a > ~/.cl-launchrc. I still think that's the way to go, but obviously we need more feedbacks from the other CL-Debian developers/users (especially Peter and René). Xavier, this is the reason I explicitly cc:ed you again, I hope you don't mind :-) The attached patch is a very simple support for ~/.cl-launchrc, based on the CL-Launch available in Debian, thus 1.85-1. To apply it: $ [save the patch somewhere] $ cp /usr/share/common-lisp/source/cl-launch/wrapper.sh ~/ $ patch wrapper.sh < /path/to/the/patch $ [modify your CL-Launch script to call include ~/wrapper.sh instead of the /usr/share/common-lisp/source/cl-launch/wrapper.sh] ~/.cl-launchrc is a shell file, with the following structure: [value of $SOFTWARE_SYSTEM in the CL-Launch script] = \ [Common Lisp implementation to be used] I assume that the value of $SOFTWARE_SYSTEM will always be the name of the script, i.e. /usr/bin/$SOFTWARE_SYSTEM. Thus, for StumpWM would be something like the following: stumpwm=sbcl ATM the patch is quite dirty, because it uses grep and the BASH parameter substitution to assign the value, while the same function should be very simple as: check_lisp_variable () { test -r /etc/cl-launchrc && . /etc/cl-launchrc test -r "$HOME/.cl-launchrc" && . "$HOME/.cl-launchrc" test -n ${SOFTWARE_SYSTEM} && LISP=${SOFTWARE_SYSTEM} } The last line is obviously fault, what I'd like to do is: if the variable called with the name of the value of $SOFTWARE_SYSTEM is not-empty set the LISP variable to that value Unfortunately, I don't know how to do it in shell language, I quickly and unsuccessfully read `man bash`, so I post here in case someone with more shell skills would help. > After all, the user (or root) may already export the variable $LISP > to override things at runtime (or at dump time), whatever the --lisp > or $LISPS variable be, unless explicitly prevented with a --wrap > argument (or a resetting of $LISP), and I think that's all we need. If we ship a CL-Launch script I'd like to avoid special forms like: $ LISP=sbcl /usr/bin/stumpwm $ /usr/bin/stumpwm --lisp sbcl > As for stumpwm, note that I prefer the more versatile --init > argument: > '(stumpwm:stumpwm (cl-launch:getenv "DISPLAY"))' > to a hardcoded :0. OK, I noticed it and I completely agree, as this is The Right Thing™, because we can't assume $DISPLAY always :0.0. > If multiple dumped versions are wanted, they should each have a > different name, and the main script would select amongst them. Well, for sure I'm not going to support multiple versions (would be them dumped images or not). IMHO, if a Debian package ships a CL-Launch script at /usr/bin/$SOFTWARE_SYSTEM, this should be the more generic possible, i.e. $LISPS should contains all the Common Lisp implementation that the _Debian package_ support. Thx, bye, Gismo / Luca
--- /usr/share/common-lisp/source/cl-launch/wrapper.sh 2006-08-11 08:21:06.000000000 +0200 +++ wrapper.sh 2006-08-26 15:46:24.000000000 +0200 @@ -203,7 +203,14 @@ LAUNCH_FORM="(progn${MAYBE_PACKAGE_FORM}${HASH_BANG_FORM}${LAUNCH_FORMS})" exec $LISP_BIN $IMAGE_OPT $IMAGE $OPTIONS $EVAL "$LAUNCH_FORM" $ENDARGS "$@" } +check_lisp_variable () { + LISP_USER="`grep $SOFTWARE_SYSTEM $HOME/.cl-launchrc 2>/dev/null`" + if [ -n "$LISP_USER" ]; then + LISP=${LISP_USER##*=} + fi +} launch_self () { + check_lisp_variable LAUNCH_FORMS="$(load_form "$PROG")" try_all_lisps "$@" }
pgpkGpcF7Sd7p.pgp
Description: PGP signature