[Ecls-list] ASDF update

Luis Oliveira luismbo at gmail.com
Wed Jun 4 11:32:31 UTC 2008


"Juan Jose Garcia-Ripoll"
<jjgarcia at users.sourceforge.net> writes:

> Sorry, I thought this was a fix in the current version. Now, is
> cclan's the latest one? When upgrading asdf last time I had to track
> different repositories looking for the latest (numbered) version.

CCLAN is where the latest version is, AFAIK. See:
<http://cclan.cvs.sourceforge.net/cclan/asdf/asdf.lisp?view=log>

I took that and applied the following ECL-specific changes:

--- asdf/asdf.lisp	2008-06-04 03:44:27.000000000 +0100
+++ ecl/contrib/asdf/asdf.lisp	2008-06-04 04:56:20.000000000 +0100
@@ -760,6 +760,7 @@
 
 (defclass compile-op (operation)
   ((proclamations :initarg :proclamations :accessor compile-op-proclamations :initform nil)
+   (system-p :initarg :system-p :accessor compile-op-system-p :initform nil)
    (on-warnings :initarg :on-warnings :accessor operation-on-warnings
                 :initform *compile-file-warnings-behaviour*)
    (on-failure :initarg :on-failure :accessor operation-on-failure
@@ -781,7 +782,8 @@
   (let ((source-file (component-pathname c))
         (output-file (car (output-files operation c))))
     (multiple-value-bind (output warnings-p failure-p)
-        (compile-file source-file :output-file output-file)
+        (compile-file source-file :output-file output-file
+                      :system-p (compile-op-system-p operation))
       (when warnings-p
         (case (operation-on-warnings operation)
           (:warn (warn
@@ -1359,4 +1361,19 @@
   (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)
   (pushnew 'contrib-sysdef-search *system-definition-search-functions*))
 
+;; Hook into ECL's require/provide
+#+ecl
+(progn
+  (require 'cmp)
+  (defvar *require-asdf-operator* 'load-op)
+  (defun module-provide-asdf (name)
+    (handler-bind ((style-warning #'muffle-warning))
+      (let* ((*verbose-out* (make-broadcast-stream))
+             (system (asdf:find-system name nil)))
+        (when system
+          (asdf:operate *require-asdf-operator* name)
+          t))))
+  #+win32 (push '("asd" . si::load-source) si::*load-hooks*)
+  (pushnew 'module-provide-asdf ext:*module-provider-functions*))
+
 (provide 'asdf)


-- 
Luís Oliveira
http://student.dei.uc.pt/~lmoliv/





More information about the ecl-devel mailing list