-(require 'sb-executable)
-
-;;; From asdf-install.asd
-(defclass exe-file (cl-source-file) ())
-(defmethod perform :after ((o compile-op) (c exe-file))
- (sb-executable:make-executable
- (make-pathname :name "vcs-tree"
- :type nil
- :defaults (component-pathname c))
- '("package.fasl" "kmrcl-excerpt.fasl" "getopt-excerpt.fasl" "main.fasl"
- "loader.fasl")
- :initial-function "RUN"
- :muffled-warning t))
-
-(defmethod perform ((o load-op) (c exe-file)) nil)
+(defun save-executable (&optional (fname "_vcs-tree"))
+ (setq cl:*print-pretty* nil)
+ (sb-ext:save-lisp-and-die
+ fname
+ :executable t
+ :toplevel (lambda ()
+ (handler-case
+ (funcall (intern (symbol-name '#:main)
+ (find-package (symbol-name '#:vcs-tree)))
+ (list* "vcs-tree" (cdr sb-ext:*posix-argv*)))
+ (error (c)
+ (format *error-output* "vcs-tree failed due to error:~% ~A~%" c)
+ (sb-ext:quit :unix-status 1)))
+ (sb-ext:quit :unix-status 0))))