mirror of
https://gitlab.com/vindarel/ciel.git
synced 2026-01-11 11:42:26 -08:00
167 lines
4.9 KiB
Common Lisp
167 lines
4.9 KiB
Common Lisp
#|
|
|
This file is a part of ciel project.
|
|
|#
|
|
|
|
(require "asdf") ;; for CI
|
|
|
|
(asdf:defsystem "ciel"
|
|
:description "CIEL Is an Extended Lisp (Common Lisp, batteries included)."
|
|
:version "0.1"
|
|
:author "vindarel"
|
|
:license "MIT"
|
|
:homepage "https://github.com/ciel-lang/CIEL/"
|
|
:source-control (:git "https://github.com/ciel-lang/CIEL/")
|
|
:bug-tracker "https://github.com/ciel-lang/CIEL/issues/"
|
|
|
|
:depends-on (
|
|
:cl-reexport ;; for us
|
|
:cl-ansi-text
|
|
|
|
:access
|
|
:alexandria
|
|
:arrow-macros
|
|
:fof ;; file-object-finder
|
|
|
|
;; threads
|
|
:bordeaux-threads
|
|
:trivial-monitored-thread
|
|
:moira
|
|
:lparallel
|
|
:cl-cron
|
|
|
|
:closer-mop
|
|
:cl-ansi-text
|
|
:cl-csv
|
|
:shasht
|
|
:dissect
|
|
:fset
|
|
:generic-cl
|
|
|
|
;; web
|
|
:dexador
|
|
:hunchentoot
|
|
:easy-routes ;; better route definition for Hunchentoot.
|
|
:quri
|
|
:lquery
|
|
|
|
;; GUI
|
|
:ltk
|
|
|
|
:local-time
|
|
:modf
|
|
|
|
;; number parsing
|
|
:parse-float
|
|
:parse-number
|
|
|
|
;; database
|
|
:dbi ;; connects and executes queries.
|
|
:sxql ;; SQL generator from lispy syntax.
|
|
|
|
;; numerical
|
|
:vgplot
|
|
|
|
;; regexp
|
|
:cl-ppcre
|
|
|
|
;; string manipulation
|
|
:str
|
|
|
|
;;;
|
|
;;; Language extensions.
|
|
;;;
|
|
;; triple quotes
|
|
:pythonic-string-reader
|
|
|
|
;; pattern matching
|
|
:trivia
|
|
:trivial-arguments
|
|
:trivial-package-local-nicknames
|
|
:trivial-types
|
|
|
|
;; extended let
|
|
:metabang-bind
|
|
|
|
;; type declarations
|
|
:defstar
|
|
|
|
;; iteration
|
|
:for
|
|
:trivial-do
|
|
|
|
;; lambda shorthands
|
|
:fn
|
|
:cl-punch
|
|
|
|
:cmd
|
|
:serapeum
|
|
:shlex
|
|
|
|
;; tests
|
|
:fiveam
|
|
|
|
:which
|
|
|
|
;;;
|
|
;;; Debugging, developer utilities.
|
|
;;;
|
|
:log4cl
|
|
:printv
|
|
:repl-utilities ;; see readme, summary, doc, package-apropos, trace-package etc
|
|
|
|
;;;
|
|
;;; User helpers.
|
|
;;; ;TODO: we don't want these dependencies when we build a binary.
|
|
;;;
|
|
:named-readtables
|
|
:clesh ;; shell pass-through
|
|
:quicksearch ;; search on GitHub, Cliki, Quickdocs.
|
|
)
|
|
:components ((:module "src"
|
|
:components
|
|
((:file "packages")
|
|
(:file "ciel")))
|
|
(:module "src/more-docstrings"
|
|
:components
|
|
((:file "docstrings"))))
|
|
)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;;; Sub-system for the terminal REPL.
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(asdf:defsystem "ciel/repl"
|
|
:description "readline REPL for CIEL with quality of life improvements."
|
|
:depends-on (;; :ciel ;; let's avoid, it could run side effects twice (like a defparameter set then reset).
|
|
;; deps
|
|
:cl-readline
|
|
:cffi ;; "tmp", for cl-readline add history
|
|
:lisp-critic ;; it would be nice to integrate it with Slime.
|
|
:magic-ed)
|
|
:components ((:file "repl")
|
|
(:file "shell-utils")
|
|
(:file "repl-utils"))
|
|
|
|
;; Build a binary with Deploy, ship foreign libraries (and ignore libssl).
|
|
:defsystem-depends-on (:deploy) ;; need to (ql:quickload "deploy") before building.
|
|
;; :build-operation "program-op"
|
|
:build-operation "deploy-op"
|
|
:build-pathname "ciel-repl"
|
|
:entry-point "sbcli::repl")
|
|
|
|
;; Don't ship libssl, rely on the target OS'.
|
|
;; XXX: we need to load cl+ssl before we can compile and load this .asd file :/
|
|
#+linux (deploy:define-library cl+ssl::libssl :dont-deploy T)
|
|
#+linux (deploy:define-library cl+ssl::libcrypto :dont-deploy T)
|
|
|
|
;; Use compression: from 114M, 0.02s startup time to 27M and 0.42s (SBCL 2.0.10).
|
|
#+sb-core-compression
|
|
(defmethod asdf:perform ((o asdf:image-op) (c asdf:system))
|
|
(uiop:dump-image (asdf:output-file o c) :executable t :compression t))
|
|
|
|
;; Even with the binary, ASDF wants to update itself and crashes
|
|
;; if it doesn't find an ASDF directory, like on a user's system.
|
|
;; Thanks again to Shinmera.
|
|
(deploy:define-hook (:deploy asdf) (directory)
|
|
(declare (ignorable directory))
|
|
#+asdf (asdf:clear-source-registry)
|
|
#+asdf (defun asdf:upgrade-asdf () nil))
|