From: Craig L. <LanniCr@Charleston.NorthGrum.com> - 2003-08-27 20:37:18
|
I have a large Common Lisp project (http://exp-engine.sf.net/) that I currently develop in LispWorks, but would like to be able to use CMU CL and SBCL. I've gotten the code to the point where I can compile it with SBCL, but it crashes when I try to run it. It appears to be a problem with how probe-file handles logical pathnames. Below is the output showing the error. If there is anything else that I need to supply, just let me know. Craig ---------------------------------------------------- [lanning@lanning ws-cmucl]$ sbcl This is SBCL 0.8.3, an implementation of ANSI Common Lisp. SBCL is derived from the CMU CL system created at Carnegie Mellon University. Besides software and documentation originally created at Carnegie Mellon University, SBCL contains some software originally from the Massachusetts Institute of Technology, Symbolics Incorporated, and Xerox Corporation, and material contributed by volunteers since the release of CMU CL into the public domain. See the CREDITS file in the distribution for more information. SBCL is a free software system, provided as is, with absolutely no warranty. It is mostly in the public domain, but also includes some software copyrighted Massachusetts Institute of Technology, 1986; Symbolics, Inc., 1989, 1990, 1991, 1992; and Xerox Corporation, 1985, 1986, 1987, 1988, 1989, 1990 used under BSD-style licenses allowing copying only under certain conditions. See the COPYING file in the distribution for more information. More information about SBCL is available at <http://sbcl.sourceforge.net/>. * (load "load-expresso.lsp") T * (mk:compile-system "expresso") ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/package.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/conditions.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/os-compat.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/globals.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/generics.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/messaging.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/debugging.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/utils.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/macros.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/express-utils.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/schemas.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/express-metaobjects.fasl" ;;; Memoizing (#<FUNCTION "top level local call EQUAL" {100AAED}>) SELECT-SLOT **** ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/datasets.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/package.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/globals.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/generics.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/conditions.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/reader.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/classes.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/types.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/declarations.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/expressions.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/stmts.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/token-stream.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/stream.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/parser1.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/parser2.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p11/top-level.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/package.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/generics.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/classes.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/declarations.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/expressions.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/stream.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/parser1.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/parser2.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p14/top-level.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/package.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/reader.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/classes.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/stream.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/parser.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/p21/top-level.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/x-metaobjects.fasl" STYLE-WARNING: implicitly creating new generic function BINDING-CALL-COUNT ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/types.fasl" STYLE-WARNING: implicitly creating new generic function COLLECT-UNDERLYING-TYPES-AUX STYLE-WARNING: implicitly creating new generic function BASE-TYPES-AUX ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/aggregates.fasl" STYLE-WARNING: implicitly creating new generic function EXPRESS-AREF STYLE-WARNING: implicitly creating new generic function (SETF EXPRESS-AREF) ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/validation.fasl" STYLE-WARNING: implicitly creating new generic function WHERE-RULES ;;; Memoizing (#<FUNCTION "top level local call EQUAL" {100AAED}>) VALID-COMPLEX-TYPE-P **** ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/p21-utils.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/builtin-fns.fasl" ;;; Memoizing (#<FUNCTION "top level local call EQL" {1013245}>) TYPE-COMPATIBLE-P **** ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/start-and-stop.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/top-level.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/configuration.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/gen-p21.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/expcore/gen-oseb.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/compiler/rule-utils.fasl" ; loading #P"/src/expo/devel/ws-cmucl/sbcl-binary/x/defview.fasl" NIL * (expo:expresso :op :validate :src-schema "/home/lanning/expresso/express-x/idf210/ap210aim.exp" :in-file "/home/lanning/expresso/express-x/idf210/flasher-aim.stp" :in-encoding :p21) debugger invoked on condition of type SIMPLE-ERROR: Pathname components from SOURCE and FROM args to TRANSLATE-PATHNAME did not match: :NEWEST NIL Within the debugger, you can type HELP for help. At any command prompt (within the debugger or not) you can type (SB-EXT:QUIT) to terminate the SBCL executable. The condition which caused the debugger to be entered is bound to *DEBUG-CONDITION*. You can suppress this message by clearing *DEBUG-BEGINNER-HELP-P*. restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT ] Reduce debugger level (leaving debugger, returning to toplevel). 1: [TOPLEVEL] Restart at toplevel READ/EVAL/PRINT loop. (SB-IMPL::DIDNT-MATCH-ERROR 2 :NEWEST NIL)[:EXTERNAL] 0] backtrace 0: (SB-IMPL::DIDNT-MATCH-ERROR 2 :NEWEST NIL)[:EXTERNAL] 1: (TRANSLATE-PATHNAME 3 #.(CL:LOGICAL-PATHNAME "EXPO:USER;EXPRESSO.CONF") #.(CL:LOGICAL-PATHNAME "EXPO:USER;**;*.*") #P"/home/lanning/expresso/**/*.*")[:EXTERNAL] 2: (TRANSLATE-LOGICAL-PATHNAME 1 #.(CL:LOGICAL-PATHNAME "EXPO:USER;EXPRESSO.CONF"))[:EXTERNAL] 3: ("hairy arg processor for top level local call SB!INT:UNIX-NAMESTRING" #.(CL:LOGICAL-PATHNAME "EXPO:USER;EXPRESSO.CONF") T) 4: (PROBE-FILE 1 "expo:user;expresso.conf")[:EXTERNAL] 5: (EXPRESSO::CFG-READ-FILE) 6: ("varargs entry for EXPRESSO::%%EXPRESSO" "expo-dev" :OP :VALIDATE :SRC-SCHEMA "/home/lanning/expresso/express-x/idf210/ap210aim.exp" :IN-FILE "/home/lanning/expresso/express-x/idf210/flasher-aim.stp" :IN-ENCODING :P21) 7: (SB-INT:EVAL-IN-LEXENV 2 (EXPRESSO:EXPRESSO :OP :VALIDATE :SRC-SCHEMA "/home/lanning/expresso/express-x/idf210/ap210aim.exp" :IN-FILE "/home/lanning/expresso/express-x/idf210/flasher-aim.stp" ...) #S(SB-KERNEL:LEXENV :FUNS NIL :VARS NIL :BLOCKS NIL :TAGS NIL :TYPE-RESTRICTIONS NIL :LAMBDA NIL :CLEANUP NIL ...))[:EXTERNAL] 8: (INTERACTIVE-EVAL 1 (EXPRESSO:EXPRESSO :OP :VALIDATE :SRC-SCHEMA "/home/lanning/expresso/express-x/idf210/ap210aim.exp" :IN-FILE "/home/lanning/expresso/express-x/idf210/flasher-aim.stp" ...))[:EXTERNAL] 9: (SB-IMPL::REPL-FUN 1 NIL)[:EXTERNAL] 10: (SB-IMPL::TOPLEVEL-REPL 1 NIL)[:EXTERNAL] 11: (SB-IMPL::TOPLEVEL-INIT 0)[:EXTERNAL] 12: ("FLET SB!IMPL::RESTART-LISP") 13: ("foreign function call land: ra=#x8055471") 14: ("foreign function call land: ra=#x80552EA") 0] abort * (quit) waitpid : child 5634 40451000 exited [lanning@lanning ws-cmucl]$ exit exit Process shell finished |
From: <fr...@cs...> - 2003-08-27 21:34:16
|
> 1: (TRANSLATE-PATHNAME > 3 > #.(CL:LOGICAL-PATHNAME "EXPO:USER;EXPRESSO.CONF") > #.(CL:LOGICAL-PATHNAME "EXPO:USER;**;*.*") > #P"/home/lanning/expresso/**/*.*")[:EXTERNAL] I'm no logical pathname guru, but you might try (as a temporary workaround) to make your logical pathname translation handle versions as well. e.g. (SETF (LOGICAL-PATHNAME-TRANSLATIONS "SBCL") '(("**;*.*.*" "/home/nathan/lisp/sbcl/**/*.*.*"))) is something I use and it seems to work OK. I think that would be (SETF (LOGICAL-PATHNAME-TRANSLATIONS "EXPO") '(("USER;**;*.*.*" "/home/lanning/expresso/**/*.*.*"))) for your case. -Nathan |
From: Craig L. <LanniCr@Charleston.NorthGrum.com> - 2003-08-28 13:16:32
|
On Wed, 2003-08-27 at 17:34, fr...@cs... wrote: > > 1: (TRANSLATE-PATHNAME > > 3 > > #.(CL:LOGICAL-PATHNAME "EXPO:USER;EXPRESSO.CONF") > > #.(CL:LOGICAL-PATHNAME "EXPO:USER;**;*.*") > > #P"/home/lanning/expresso/**/*.*")[:EXTERNAL] > > I'm no logical pathname guru, but you might try (as a temporary > workaround) to make your logical pathname translation handle versions > as well. e.g. Thanks for the advise. Unfortunately, it didn't help. I'm still getting the same error. Originally, I had something like: (setf (logical-pathname-translations "sbcl") '(("**;*.*.*" "/home/nathan/lisp/sbcl/**/*.*"))) I changed it to something like: (setf (logical-pathname-translations "sbcl") '(("**;*.*.*" "/home/nathan/lisp/sbcl/**/*.*.*"))) but I still got the same error. Next I tried something like: (setf (logical-pathname-translations "sbcl") '(("**;*.*" "/home/nathan/lisp/sbcl/**/*.*"))) but that caused the mk-defsystem code to crash while trying to load the application. Below is the file that defines my logical host. Craig > (SETF (LOGICAL-PATHNAME-TRANSLATIONS "SBCL") > '(("**;*.*.*" "/home/nathan/lisp/sbcl/**/*.*.*"))) > > is something I use and it seems to work OK. I think that would be > > (SETF (LOGICAL-PATHNAME-TRANSLATIONS "EXPO") > '(("USER;**;*.*.*" "/home/lanning/expresso/**/*.*.*"))) > > for your case. ----------------------------- ;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: CL-USER; Base: 10 -*- ;;; Copyright (c) 2001 Logicon, Inc. ;;; ;;; Permission is hereby granted, free of charge, to any person ;;; obtaining a copy of this software and associated documentation ;;; files (the "Software"), to deal in the Software without restriction, ;;; including without limitation the rights to use, copy, modify, ;;; merge, publish, distribute, sublicense, and/or sell copies of the ;;; Software, and to permit persons to whom the Software is furnished ;;; to do so, subject to the following conditions: ;;; ;;; The above copyright notice and this permission notice shall be ;;; included in all copies or substantial portions of the Software. ;;; ;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ;;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ;;; ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ;;; CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ;;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ;;;----------------------------------------------------------------------- #-Genera (in-package :CL-USER) ;;; This file contains the logical host definition for Expresso that ;;; is used by developers. ;; This form attempts to "figure out" what the root for "expo" is by ;; assuming that it is whatever directory this file is in. If your ;; lisp is not supported then you will see the message: ;; "Don't know how to get the current pathname in <your lisp>." ;; Where <your lisp> is whatever string (lisp-implementation-type) ;; returns. ;; As a point of reference: ;; In LispWorks 4.1, (lw:current-pathname) returns a relative pathname ;; for the file being loaded. (truename path) on that pathname ;; returns the full pathname for the current file. (let ((path (truename #+ANSI-CL *load-pathname* #+Genera future-common-lisp:*load-pathname* #-(or ANSI-CL Genera) (error "Don't know how to get the load pathname in ~A." (lisp-implementation-type)) ))) #+CLisp (setq custom:*merge-pathnames-ansi* t) (setf (logical-pathname-translations "expo") `(("root;*.*.*" ,(namestring (make-pathname :name :wild :type :wild :version :wild :defaults path))) ("user;**;*.*.*" ,(namestring (merge-pathnames (make-pathname :directory '(:relative "expresso" :wild-inferiors) :name :wild :type :wild :version :wild :defaults (user-homedir-pathname)) (user-homedir-pathname)))) ("binary;**;*.*.*" ,(namestring (merge-pathnames (make-pathname :directory '(:relative #+Allegro "acl-binary" #+CLisp "cl-binary" #+CMU "cmu-binary" #+Genera "scl-binary" #+LispWorks "lw-binary" #+SBCL "sbcl-binary" #-(or Allegro CLisp CMU Genera LispWorks SBCL) "ukn-binary" :wild-inferiors) :name :wild :type :wild :version :wild :defaults path) path))) ("**;*.*.*" ,(namestring (merge-pathnames (make-pathname :directory '(:relative :wild-inferiors) :name :wild :type :wild :version :wild :defaults path) path))) )) ) |
From: Alexey D. <ade...@co...> - 2003-08-29 04:39:09
|
Craig Lanning <LanniCr@Charleston.NorthGrum.com> writes: > (setf (logical-pathname-translations "expo") > `(("root;*.*.*" > ,(namestring > (make-pathname > :name :wild :type :wild :version :wild > :defaults path))) Why do you translate pathnames to namestrings? -- Regards, Alexey Dejneka "Alas, the spheres of truth are less transparent than those of illusion." -- L.E.J. Brouwer |
From: Craig L. <LanniCr@Charleston.NorthGrum.com> - 2003-08-29 12:06:49
|
On Fri, 2003-08-29 at 00:35, Alexey Dejneka wrote: > Craig Lanning <LanniCr@Charleston.NorthGrum.com> writes: > > > (setf (logical-pathname-translations "expo") > > `(("root;*.*.*" > > ,(namestring > > (make-pathname > > :name :wild :type :wild :version :wild > > :defaults path))) > > Why do you translate pathnames to namestrings? Mainly because I never tried leaving them as pathnames. Craig |
From: Alexey D. <ade...@co...> - 2003-08-29 05:30:58
|
Craig Lanning <LanniCr@Charleston.NorthGrum.com> writes: > Below is the file that defines my logical host. Heh. Your logical host is later redefined in EXPRESSO::RESET-LOGICAL-HOST. -- Regards, Alexey Dejneka "Alas, the spheres of truth are less transparent than those of illusion." -- L.E.J. Brouwer |
From: Craig L. <LanniCr@Charleston.NorthGrum.com> - 2003-08-29 13:25:08
|
On Fri, 2003-08-29 at 01:27, Alexey Dejneka wrote: > Craig Lanning <LanniCr@Charleston.NorthGrum.com> writes: > > > Below is the file that defines my logical host. > > Heh. Your logical host is later redefined in > EXPRESSO::RESET-LOGICAL-HOST. Thanks for your subtle hint. I fixed the reset-logical-host function to match what I was doing in the expresso.hst file. I also changed both the file and the function to use *.*.* and keep the pathnames for the target instead of converting back to namestrings. I'm now getting past the original problem. Now it's just a matter of fixing some compile errors that I hadn't seen before. Craig |
From: Craig L. <LanniCr@Charleston.NorthGrum.com> - 2003-08-29 17:00:36
|
On Fri, 2003-08-29 at 01:27, Alexey Dejneka wrote: > Craig Lanning <LanniCr@Charleston.NorthGrum.com> writes: > > > Below is the file that defines my logical host. > > Heh. Your logical host is later redefined in > EXPRESSO::RESET-LOGICAL-HOST. Yes, that occurs early in the initialization code to make sure the logical pathname translations are in the correct state for the current user. I generate a runtime executable (with LispWorks) for both Linux and Windows. Since the user that is running the executable is not the user that built the executable, the application needs to adjust the logical translations to match the current user. Craig |