[Ecls-list] Latest changes
Juan Jose Garcia-Ripoll
jjgarcia at users.sourceforge.net
Fri May 9 10:56:57 UTC 2008
Tag: (CVS 2008-05-09 09:55)
- Merged in all the changes from the sealed_slot branch (see previous emails)
- CHECK-TYPE is now "cheaper": it produces smaller code, has an
auxiliary function for signalling errors, and uses the optimizations
from TYPEP to speed up type checks.
- ASDF:LOAD-FASL-OP now creates files with extension "fasb" for "fast
loading bundle". This extension is registered with ECL by the ASDF
package, so that LOAD understands it. Furthermore, it solves a problem
which was caused by LOAD-OP and LOAD-FASL-OP writing on the same file.
This only happened for systems whose name matched that of one of the
source files.
- Reverted a change in ASDF::GATHER-COMPONENTS that broke other bundle
operators. This change is now moved into a specialized method for
DLL-OP.
- In Gray streams, instead of signalling an error for no method being
applicable, most generic functions have a default method that signals
a type error when the argument is neither a stream class nor an ANSI
steam object.
- Solved a problem regarding the interaction of COMPILE (not
COMPILE-FILE) and LOAD-TIME-VALUE. This problem was only in the
sealed_slot branch.
- C:BUILDER now honors *COMPILE-VERBOSE*. Thus if you set
*COMPILE-VERBOSE* to NIL and use ASDF, the outcome will be a way less
verbose loading procedure.
Regarding ASDF, I have set it up in my computer using LOAD-FASL-OP by
default, so I have experienced some of the problems reported here. I
have _not_ experience the problem regarding LOAD-FASL-OP failing to
create the binary files, but I suspect this is due to the name clashes
mentioned before and an installation that had stale binary files
laying around.
The recommended setup is one that keeps binary files in a separate
location, as described in other emails. I currently cannot rely on
asdf-install and asdf-binary-locations because the number of packages
that are not ported to ECL is too large, and I have my own versions
sitting everywhere. I have included below my current version of ~/.ecl
that does the binary - systems - sources separation for me.
Juanjo
(require 'cmp)
(setf *compile-verbose* nil)
(require 'asdf)
(defvar asdf::*binaries-root* "/Users/jjgarcia/.asdf-binaries/ecl/")
(defvar asdf::*systems-root* "/Users/jjgarcia/.asdf-systems/")
(defvar asdf::*sources-root* '("/Users/jjgarcia/src/lisp/"))
(setf asdf::*require-asdf-operator* 'asdf:load-fasl-op)
(pushnew asdf::*systems-root* asdf::*central-registry* :test #'equal)
(defmethod asdf:output-files :around ((op asdf:operation) (c asdf:component))
"Method to rewrite output files to fasl-root"
(let* ((system (asdf::component-system c))
(name (asdf:component-name system))
(version (if (slot-boundp system 'asdf::version)
(slot-value system 'asdf::version)
0))
(new-root (format nil "~A-~A" name version)))
(loop for orig in (call-next-method)
with root = (pathname asdf::*binaries-root*)
collect (merge-pathnames (make-pathname :name (pathname-name orig)
:type (pathname-type orig)
:directory `(:relative ,new-root))
root))))
(defun update-asdf-systems (&optional verbose dry-run)
(flet ((link (orig dest)
(unless (zerop (si::system (concatenate 'string "ln -sf '"
(namestring orig) "' '"
(namestring dest) "'")))
(error "Unable to link ~A to ~A" orig dest)))
(explain (&rest args)
(when verbose (apply #'format t args))))
(let ((pattern (make-pathname :directory '(:relative
:wild-inferiors) :name :wild :type "asd")))
(explain ";;; Removing old system definitions~%")
(si::system (concatenate 'string "rm -rf '" (namestring
asdf::*systems-root*) "'"))
(ensure-directories-exist asdf::*systems-root*)
(loop for search-path in asdf::*sources-root*
do (loop for files in (directory (merge-pathnames pattern search-path))
unless (member "_darcs" (pathname-directory files) :test #'equal)
do (let ((destination (make-pathname :name (pathname-name files)
:type (pathname-type files)
:defaults asdf::*systems-root*)))
(explain ";;; Linking ~A to ~A~%" files destination)
(unless dry-run (link files destination))))))))
(defun clean-asdf-binaries ()
(si::system (concatenate 'string "rm -rf '" asdf::*binaries-root* "'")))
--
Facultad de Fisicas, Universidad Complutense,
Ciudad Universitaria s/n Madrid 28040 (Spain)
http://juanjose.garciaripoll.googlepages.com
More information about the ecl-devel
mailing list