[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] asdf
Re: [Gcl-devel] asdf
Sat, 16 Nov 2013 02:05:46 -0500
OK, so I've investigated the errors some more, and after many
GCL-inspired improvements, I'm down to 9 failing scripts. These
remarks complement, but do not always override those in my previous
* GCL BUG: pathname parsing sometimes goes nuts.
(pathname-directory #p"foo/") ;==> ("foo")
This is wrong, it should be (:relative "foo"). GCL itself complains
about that later on.
* GCL BUG: this causes a segfault rather than an error
(setf (logical-pathname-translations "TMP") '("**;*.*.*" #p"/tmp/**/*.*"))
* GCL BUG: logical pathnames don't parse into the correct type.
(setf (logical-pathname-translations "TMP") '(("**;*.*.*" #p"/tmp/**/*.*")))
;==> #P"/tmp/foo.lisp" ;; correct
(typep #p"TMP:FOO.LISP" 'logical-pathname)
;==> NIL ;; WRONG!
* This causes the 6 remaining failures in asdf-pathname-test, because
the test will then try combinations that are invalid for
logical-pathnames, that it would have avoided had it detected that the
pathnames were "logical" (I prefer the word "lovecraftian" to describe
* GCL BUG: (random (expt 36 8)) fails. Apparently, you can only yield
random numbers of size < 32 bits? I can work around that, but it's a
* GCL BUG: compile-file fails to return failure when there are full
warnings during the compilation.
* After enabling simple-backtrace, I get a lot of this general kind of
error, with different conditions:
TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a
CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of
type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type:
Backtrace: error > system::error-in-error > system::process-error >
* Backtrace: > asdf-test::call-with-test > system:lambda-closure >
block > let > catch > let > asdf/cache:call-wi
th-asdf-cache > load > conditions::old-load > system:load1 > progn >
asdf-test::assert-compare-helper > multiple
-value-call > uiop/run-program:run-program >
uiop/run-program::%use-system > uiop/run-program::%call-with-progra
m-io > uiop/stream:call-with-temporary-file >
uiop/utility:call-function > #:before1062526 > lambda > uiop/run-p
rogram::%call-with-program-io > uiop/stream:call-with-temporary-file >
uiop/utility:call-function > #:before1062
926 > lambda > uiop/run-program::%call-with-program-io >
uiop/stream:call-with-temporary-file > uiop/utility:cal
l-function > #:before1062926 > uiop/stream:call-with-output-file >
lambda > uiop/run-program::call-stream-proces
sor > setf::|ASDF/BACKWARD-INTERFACE::COMPONENT-PROPERTY| >
pcl::initial-dfun > pcl::make-checking-dfun > pcl::m
ake-dispatch-dfun > pcl::get-dispatch-function >
pcl::get-secondary-dispatch-function1 > pcl::get-secondary-disp
atch-function2 > pcl::compute-secondary-dispatch-function1 >
pcl::get-function1 > pcl::get-function-generator >
pcl::get-new-function-generator > pcl::compile-lambda >
compiler::compile-file1 > compiler::t1expr > compiler::t
1defun > compiler::make-inline-string > compiler::make-inline-arg-str
Above backtrace due to this condition:
Condition in SYSTEM:STRCAT [or a callee]:
INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee] requi
res less than sixty-seven arguments.
* Caught error #<CONDITIONS::INTERNAL-SIMPLE-TYPE-ERROR.0>
TEST ABORTED: SIMPLE-ERROR: The assertion RESTART failed.
Backtrace: error > system::error-in-error > system:lambda-closure >
let* > let > block > let > tagbody > if > pr
ogn > tagbody > CERROR
Above backtrace due to this condition:
SIMPLE-ERROR: The assertion RESTART failed.
Using gcl, test-retry-loading-component-1.script failed
Question: is there a better way to get to getcwd() than as follows?
(let ((*default-pathname-defaults* #p"")) (truename #p""))
PS: you didn't address my previous remark regarding APROPOS returning
the same symbol multiple times (because it's inherited by many
packages), and not doing case-insensitive comparison like on other
lisps (which might be deliberate, but please confirm, then).
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
I have never let my schooling interfere with my education. — Mark Twain
On Fri, Nov 15, 2013 at 8:43 PM, Faré <address@hidden> wrote:
> Dear Camm,
> thanks again for your responsiveness. I'm hoping the next release of
> ASDF can support GCL,
> and the next release of GCL can sport ASDF.
>>> One function that fails to return the same thing when compiled vs
>>> interpreted is REDUCE/STRCAT from uiop/utility.lisp.
>> Thanks! Should be fixed now.
> Great. I'll look into further bugs.
>>> Another function that behaves in a weird way is configure-asdf from
>> Thanks! No longer the case, perhaps resolved when the above was fixed.
> Indeed, the same bug fix must have worked.
>>> Can you look into it? There are other failures, but these are show stoppers.
>> A few more tests pass now. Thanks for your reports!
>> It would still be
>> a bit easier if you could give me step by step instructions to reproduce
>> a failure -- I don't know where any of these functions are, or what has
>> to be loaded, etc.
> Every test, when it fails, prints some instructions on how to reproduce it.
> Just look at the logs. If the instructions are not correct, it's a bug
> that we can fix.
> I see it incorrectly specifies -batch, and I'll remove that.
> So I see several kinds of failures.
> Those I have investigated:
> * a bug in handling directories in uiop:probe-file*;
> I think I have a fix for that,
> but direct support in GCL for the probe-file* interface would be great:
> a function that given a pathname designator returns the pathname
> to either the file or directory if it exists, and
> only optionally resolve symlinks, and return NIL otherwise.
> Also, GCL BUG: TRUENAME should return a FILE-ERROR, not just an ERROR.
> Same for DELETE-FILE and probably a lot more other functions.
> * In test1, test2, test3, test-around-compile, test-asdf,
> test-builtin-source-file-type, test-compile-file-failure,
> test-concatenate-source, test-deferred-warnings, test-force,
> test-inline-methods, test-logical-pathname, test-missing-lisp-file,
> test-module-depend, test-module-excessive-depend,
> test-module-pathnames, test-multiple, test-redundant-recompile,
> test-samedir-modules, test-source-file-type, test-stamp-propagation,
> TEST ABORTED: Condition in COMPILER::COMPILE-FILE1 [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: Key :EXTERNAL-FORMAT :DEFAULT not
> GCL BUG: compile-file fails to accept :EXTERNAL-FORMAT argument.
> I'll be working around it in uiop/lisp-build for now.
> I have not investigated these yet:
> * test-run-program.script
> TEST ABORTED: Condition in SYSTEM:STRCAT [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee]
> requires less than sixty-seven arguments.
> GCL BUG?
> This looks like a GCL bug, since STRCAT and its callees
> don't do anything magical with multiple values.
> Is some optimization or rewrite causing an argument list
> to expand beyond the limit?
> * In duplicate-components-test, test8, test9, test-system-pathnames
> TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a
> callee]: INTERNAL-SIMPLE-TYPE-ERROR:
> CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of
> type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type:
> GCL BUG? I'm not sure what triggers the initial condition yet, but
> it looks like GCL has an error in error handling and/or reporting.
> * In test-retry-loading-component-1.script
> SIMPLE-ERROR: The assertion RESTART failed.
> GCL BUG? It looks like find-restart fails here. Does GCL support restarts?
> * test-touch-system-1.script
> INTERNAL-SIMPLE-TYPE-ERROR: NIL is not of type REAL:
> Now, I've tried to add in script-support a #+gcl 0 for speed,
> to speed up the compilation, and I find what I believe to be a bug in GCL,
> whereby the form
> (remove-if #'(lambda (x) (member x '("" ".") :test #'equal))
> from uiop/pathname is compiled with an error, with bogus complaint at runtime:
> Signalled by COMMON-LISP:MEMBER.
> Condition in COMMON-LISP:MEMBER [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: Key COMMON-LISP:NIL #<function
> 00000000011dd250> not permitted
> I put #+gcl 1 instead, hoping that this will improve things.
> More to come, but that will give you stuff to work on already.
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
> If it's not worth doing, it's not worth doing well — Donald Hebb