sbclrc: Add exported-symbols and inferred-system-depends-on.
parent
c29e74d03a
commit
f33dfa9c0b
40
.sbclrc
40
.sbclrc
|
@ -27,3 +27,43 @@
|
|||
|
||||
;; Uncomment to enable full type checks (should be the default).
|
||||
;; (declaim (optimize (or (>= safety 2) (>= safety speed 1))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(defvar *ambrevar/foo* (package-name *package*))
|
||||
|
||||
(defpackage ambrevar
|
||||
(:use :cl))
|
||||
(in-package :ambrevar)
|
||||
|
||||
(export 'exported-symbols)
|
||||
(declaim (ftype (function ((or symbol package))) exported-symbols))
|
||||
(defun exported-symbols (package)
|
||||
"List exported symbols of PACKAGE."
|
||||
(let ((package (if (packagep package)
|
||||
package
|
||||
(find-package package)))
|
||||
(symbols))
|
||||
(do-external-symbols (s package symbols)
|
||||
(when (eq (symbol-package s) package)
|
||||
(push s symbols)))
|
||||
symbols))
|
||||
|
||||
(export 'inferred-system-depends-on)
|
||||
(declaim (ftype (function (string)) inferred-system-depends-on))
|
||||
(defun inferred-system-depends-on (system)
|
||||
"List SYSTEM dependencies, even if SYSTEM is an inferred system.
|
||||
From: https://gitlab.common-lisp.net/asdf/asdf/issues/10#note_5018."
|
||||
(let (depends)
|
||||
(labels ((iter (openlist)
|
||||
(if (null openlist) depends
|
||||
;; Is this a subsystem of SYSTEM?
|
||||
(let ((find (search system (first openlist))))
|
||||
(if (and find (zerop find))
|
||||
(iter (append (asdf:system-depends-on (asdf:find-system (first openlist))) (rest openlist)))
|
||||
;; If not, it's a direct dependency: collect it.
|
||||
(progn
|
||||
(pushnew (first openlist) depends :test 'equalp)
|
||||
(iter (rest openlist))))))))
|
||||
(iter (list system)))))
|
||||
|
||||
(in-package :cl-user)
|
||||
|
|
Loading…
Reference in New Issue