Commit 4b75e2b7 authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Improve GCL support: add chdir support; make install-asdf; update TODO.

parent fe31090f
......@@ -131,7 +131,16 @@
*** XCL doesn't properly process files the name of which contains a *
** GCL is almost working again; but implementation bugs remain.
See November 2013 discussion on gcl-devel.
See Francois-Rene Rideau's messages on gcl-devel starting November 2013.
*** Missing support for many UIOP functions:
combine-fasls, get-optimization-settings...
*** ASDF may now be included for (require "asdf") and (require "ASDF"),
but how to compile it properly?
*** GCL fails to properly compile ASDF with the default compilation settings,
but works with those in script-support.lisp.
Symptoms when trying to load asdf.o:
Signalled by "AN ANONYMOUS FUNCTION".
INTERNAL-SIMPLE-ERROR: The package named ASDF/INTERFACE, does not exist
*** Another GCL compiler bug:
when I changed the definition of getcwd from
(let ((*default-pathname-defaults* #p"")) (truename #p"")) to
......@@ -143,11 +152,11 @@
before `(#',beforef)) ,@(when after `(#',afterf))))
*** (typep p 'logical-pathname) should be T if p has a logical-pathname host.
*** apropos is case-sensitive and returns a same symbol many times
(presumably once per package where it is present,
instead of just once for its home package)
*** compile-file fails to return proper secondary values in case of non-style WARNING.
*** (pathname-directory #p"foo/") is incorrectly ("foo") instead of (:RELATIVE "foo")
*** Missing: chdir, combine-fasls, and plenty more UIOP functions.
*** Do whatever it takes to pass the asdf tests, add the above?
*** Have (require "asdf") and (require "ASDF") both work.
*** Trying to uiop:slurp-stream-forms from a stream with #+(or) :foo
(or read-file-forms from an file with same) results in an error,
rather than nil. This is probably a bug in #+ processing.
......@@ -159,8 +168,6 @@
rather than #(1 2 3 2 3 2 3 2 3) or even better #(1 2 3 3 3).
*** (DIRECTORY #p"*.*") fails to match files with pathname type NIL.
*** GCL doesn't properly process files the name of which contains a *
*** Require is useless, because there is no system search path,
and so you can't put ASDF (or anything) there.
*** Low-level compiler bug:
./cl-launch.sh -B redo_test sh gcl exec noupdate noinc file system noinit
......
......@@ -27,6 +27,16 @@ It notably doesn't work on:
* Corman Lisp, RMCL, Genera, that are obsolete anyway.
|#
#+gcl
(eval-when (:compile-toplevel :load-toplevel :execute)
(declaim (optimize (speed 1) (safety 0) (space 0)))
(proclaim '(optimize (speed 1) (safety 0) (space 0)))
(si::use-fast-links nil)
(compile-file (merge-pathnames #p"../build/asdf.lisp" *load-truename*)
:output-file (merge-pathnames #p"../modules/asdf.o" system:*system-directory*))
(system:quit 0))
;;; Ensure we load and configure this particular ASDF
#-cl-launch
(eval-when (:compile-toplevel :load-toplevel :execute)
......@@ -93,7 +103,7 @@ It notably doesn't work on:
(defun install-asdf-as-module ()
(nest
(let* ((asdf.lisp (system-relative-pathname :asdf-tools "../build/asdf.lisp"))
(let* ((asdf.lisp (system-relative-pathname :uiop "../build/asdf.lisp"))
(asdf.fasl (asdf-module-fasl))
#+(or ecl mkcl) (asdf.o (object-file asdf.fasl :object))
#+(or ecl mkcl) (asdf.a (object-file asdf.fasl :lib))))
......
......@@ -271,19 +271,21 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
(defun chdir (x)
"Change current directory, as per POSIX chdir(2), to a given pathname object"
(if-let (x (pathname x))
(or #+abcl (java:jstatic "setProperty" "java.lang.System" "user.dir" (namestring x))
#+allegro (excl:chdir x)
#+clisp (ext:cd x)
#+clozure (setf (ccl:current-directory) x)
#+(or cmu scl) (unix:unix-chdir (ext:unix-namestring x))
#+cormanlisp (unless (zerop (win32::_chdir (namestring x)))
(error "Could not set current directory to ~A" x))
#+ecl (ext:chdir x)
#+genera (setf *default-pathname-defaults* x)
#+lispworks (hcl:change-directory x)
#+mkcl (mk-ext:chdir x)
#+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x)))
(error "chdir not supported on your implementation")))))
#+abcl (java:jstatic "setProperty" "java.lang.System" "user.dir" (namestring x))
#+allegro (excl:chdir x)
#+clisp (ext:cd x)
#+clozure (setf (ccl:current-directory) x)
#+(or cmu scl) (unix:unix-chdir (ext:unix-namestring x))
#+cormanlisp (unless (zerop (win32::_chdir (namestring x)))
(error "Could not set current directory to ~A" x))
#+ecl (ext:chdir x)
#+gcl (system:chdir x)
#+genera (setf *default-pathname-defaults* x)
#+lispworks (hcl:change-directory x)
#+mkcl (mk-ext:chdir x)
#+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x)))
#-(or abcl allegro clisp clozure cmu cormanlisp ecl gcl genera lispworks mkcl sbcl scl)
(error "chdir not supported on your implementation"))))
;;;; -----------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment