File tree 2 files changed +39
-25
lines changed
2 files changed +39
-25
lines changed Original file line number Diff line number Diff line change 1
1
(defpackage :kiln/flags
2
2
(:use :cl :serapeum :alexandria )
3
+ (:import-from :kiln/os :getenv :getenvp )
3
4
(:export
4
- :+kiln-debug+
5
- :+kiln-heap-size+
6
- :+kiln-lisp+
7
- :+kiln-no-print-version+
8
- :+kiln-stack-size+
9
- :+kiln-path-systems+
10
- :+kiln-poiu+
11
- :+kiln-quicklisp+
12
- :+kiln-target-file+
13
- :+kiln-target-package+
14
- :+kiln-target-system+
15
- :+kiln-tolerant+
16
- :*flags*
17
- :dbg?
18
- :dbg
19
- :set-flags
20
- :portable?
21
- :repl-on-error?
22
- :exit-code
23
- :backtrace?
24
- :with-debug-output ))
5
+ :+kiln-debug+
6
+ :+kiln-heap-size+
7
+ :+kiln-lisp+
8
+ :+kiln-no-print-version+
9
+ :+kiln-stack-size+
10
+ :+kiln-path-systems+
11
+ :+kiln-poiu+
12
+ :+kiln-quicklisp+
13
+ :+kiln-target-file+
14
+ :+kiln-target-package+
15
+ :+kiln-target-system+
16
+ :+kiln-tolerant+
17
+ :*flags*
18
+ :dbg?
19
+ :dbg
20
+ :set-flags
21
+ :portable?
22
+ :repl-on-error?
23
+ :exit-code
24
+ :backtrace?
25
+ :with-debug-output ))
25
26
(in-package :kiln/flags )
26
27
27
28
(defvar *flags* nil )
51
52
(mapcar (op (drop-prefix " --" _))
52
53
value))))
53
54
(when (memq :debug *flags* )
54
- (setf (uiop : getenv " KILN_DEBUG" ) " 1" ))
55
+ (setf (getenv " KILN_DEBUG" ) " 1" ))
55
56
*flags* )
56
57
57
58
(defun portable? ()
58
59
(memq :portable *flags* ))
59
60
60
61
(defun dbg? ()
61
62
(or (memq :debug *flags* )
62
- (uiop : getenvp " KILN_DEBUG" )))
63
+ (getenvp " KILN_DEBUG" )))
63
64
64
65
(defun call/debug-output (fn)
65
66
(let ((*standard-output*
Original file line number Diff line number Diff line change 13
13
:uiop
14
14
:file-exists-p
15
15
:directory-exists-p
16
- :getenv
17
- :getenvp
18
16
:hostname )
19
17
(:shadow
20
18
; ; TODO Remove when Quicklisp updates
60
58
(defun (setf getcwd ) (dir)
61
59
(chdir dir))
62
60
61
+ (def env-lock (bt :make-lock))
62
+
63
+ (defun getenv (name)
64
+ (bt :with-lock-held (env-lock)
65
+ (uiop :getenv name)))
66
+
67
+ (defun getenvp (name)
68
+ (let ((name (getenv name)))
69
+ (and (not (emptyp name))
70
+ name)))
71
+
72
+ (defun (setf getenv ) (value name)
73
+ (bt :with-lock-held (env-lock)
74
+ (setf (uiop :getenv name) value)))
75
+
63
76
(defun call/save-directory (fn)
64
77
(let ((start-dir (uiop :getcwd)))
65
78
(unwind-protect
You can’t perform that action at this time.
0 commit comments