From: Daniel B. <da...@us...> - 2003-08-10 19:25:06
|
Update of /cvsroot/sbcl/sbcl/contrib/sb-executable In directory sc8-pr-cvs1:/tmp/cvs-serv25853/contrib/sb-executable Modified Files: sb-executable.lisp Log Message: 0.8.2.23 A full and final answer[*] to all the people who keep asking for slightly tangential software to be added to contrib: to wit, a contrib module to automate the downloading and installing of packages that are _not_ part of contrib. * (require 'asdf-install) * (asdf-install:install 'xlunit) or $ sbcl-asdf-install xlunit See contrib/asdf-install/README for more details and scary security-related muttering. Also added a :INITIAL-FUNCTION to SB-EXECUTABLE:MAKE-EXECUTABLE so that files don't have to be written such that the application starts as soon as they're loaded [*] Ha! Index: sb-executable.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/contrib/sb-executable/sb-executable.lisp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- sb-executable.lisp 8 Aug 2003 19:11:08 -0000 1.2 +++ sb-executable.lisp 10 Aug 2003 19:25:03 -0000 1.3 @@ -21,18 +21,20 @@ (defvar *exec-header* "#!/bin/sh -- -exec sbcl --noinform ~{~A ~}--eval \"(with-open-file (i \\\"$0\\\" :element-type '(unsigned-byte 8)) (loop while (< ret 2) when (= (read-byte i) 10) count 1 into ret) (load i) (quit))\" --end-toplevel-options ${1+\"$@\"} +exec sbcl --noinform ~{~A ~}--eval \"(with-open-file (i \\\"$0\\\" :element-type '(unsigned-byte 8)) (loop while (< ret 2) when (= (read-byte i) 10) count 1 into ret) (load i) (funcall (quote ~A)) (quit))\" --end-toplevel-options ${1+\"$@\"} ") (defun make-executable (output-file fasls &key (runtime-flags '("--disable-debugger" "--userinit /dev/null" - "--sysinit /dev/null"))) + "--sysinit /dev/null")) + initial-function) "Write an executable called OUTPUT-FILE which can be run from the shell, by 'linking' together code from FASLS. Actually works by concatenating them and prepending a #! header" (with-open-file (out output-file :direction :output :element-type '(unsigned-byte 8)) (write-sequence (map 'vector #'char-code - (format nil *exec-header* runtime-flags)) out) + (format nil *exec-header* runtime-flags + (or initial-function 'values))) out) (dolist (input-file (if (listp fasls) fasls (list fasls))) (with-open-file (in (merge-pathnames input-file (make-pathname :type "fasl")) |