X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fasdf-install%2Fasdf-install.asd;fp=contrib%2Fasdf-install%2Fasdf-install.asd;h=cdcec0a910ab02d6521a732d56fcf804c3ce5540;hb=08e218c9bd9fdfb1e4dcc5f5e245feea17762471;hp=0000000000000000000000000000000000000000;hpb=f4b9ac56f10a3a83f1c4db98c6fd9428bbc5f4e3;p=sbcl.git diff --git a/contrib/asdf-install/asdf-install.asd b/contrib/asdf-install/asdf-install.asd new file mode 100644 index 0000000..cdcec0a --- /dev/null +++ b/contrib/asdf-install/asdf-install.asd @@ -0,0 +1,35 @@ +;;; -*- Lisp -*- + +(defpackage #:asdf-install-system + (:use #:cl #:asdf)) + +(in-package #:asdf-install-system) +(require 'sb-executable) + +;;; this is appalling misuse of asdf. please don't treat it as any +;;; kind of example. this shouldn't be a compile-op, or if it is, should +;;; define output-files properly instead oif leaving it be the fasl +(defclass exe-file (cl-source-file) ()) +(defmethod perform ((o compile-op) (c exe-file)) + (call-next-method) + (sb-executable:make-executable + (make-pathname :name "asdf-install" + :type nil + :defaults (component-pathname c)) + (output-files o c) + :initial-function "RUN")) + +(defmethod perform ((o load-op) (c exe-file)) nil) + +(defsystem asdf-install + :depends-on (sb-posix sb-bsd-sockets) + :version "0.2" + :components ((:file "defpackage") + (exe-file "loader") + (:file "installer"))) + +(defmethod perform :after ((o load-op) (c (eql (find-system :asdf-install)))) + (provide 'asdf-install)) + +(defmethod perform ((o test-op) (c (eql (find-system :asdf-install)))) + t)