changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / tools/build-image.lisp

changeset 26: 2015d7277629
child: 1ef551e24009
author: ellis <ellis@rwest.io>
date: Mon, 05 Jun 2023 19:59:26 -0400
permissions: -rw-r--r--
description: refactor 01
1 (in-package :cl-user)
2 
3 (load "tools/prepare-image.lisp")
4 
5 (defvar *image-load-hook-contents* (uiop:read-file-string "tools/init.lisp"))
6 (defvar *hook-loaded-p* nil)
7 
8 (defun image-load-hook ()
9  ;; On MacOS, the TMPDIR variable can change between sessions.
10  (uiop:setup-temporary-directory)
11 
12  #-sbcl
13  (log4cl::init-hook)
14 
15  ;; If we used this image to deliver another image, we don't
16  ;; want to load the same hook twice
17  (unless *hook-loaded-p*
18  (load (make-string-input-stream *image-load-hook-contents*))
19  (setf *hook-loaded-p* t)))
20 
21 (compile 'image-load-hook)
22 
23 #+sbcl
24 (pushnew 'image-load-hook sb-ext:*init-hooks*)
25 
26 (format t "Got command line arguments: ~S" (uiop:raw-command-line-arguments))
27 
28 #-sbcl
29 (log4cl::save-hook)
30 
31 #+sbcl
32 (sb-ext:save-lisp-and-die
33  (namestring
34  (make-pathname
35  #+win32 :type #+win32 "exe"
36  :defaults #P"build/sbcl-console"))
37  :executable t)
38 
39 #+ccl
40 (defun ccl-toplevel-function ()
41  (image-load-hook)
42  (let ((file (cadr ccl:*command-line-argument-list*)))
43  (if file
44  (load file :verbose t)
45  (loop
46  (print (eval (read)))))))
47 
48 
49 #+ccl
50 (ccl:save-application "build/ccl-console"
51  :toplevel-function 'ccl-toplevel-function)