gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] address@hidden: Re: lstat]


From: Camm Maguire
Subject: Re: [Gcl-devel] address@hidden: Re: lstat]
Date: Sat, 02 Nov 2013 09:56:31 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)

Greetings!

Short query -- does this work?

(let ((f #'in-package))
     (defmacro in-package (s &rest r) `(funcall f ',s ,@r)))

More detail:

ansi in-package differs from traditional gcl in-package in another way
as well -- the latter will silently create missing packages.  I think
there is code about that relies on this.  The above is a half-fix which
might be good enough for 2.6.10.  The master git branch has a fully
compliant in-package which we could backport, but I expect breakage I'd
prefer to avoid at this point.

Take care,

Matt Kaufmann <address@hidden> writes:

> Hi, Camm --
>
> Thanks for thos enhancements and for installing the latest GCL
> 2.6.10pre at UT CS.  I've started a regression and so far have the
> following to report.
>
> Evaluation of the form (cl:in-package #:cl-user) fails in ANSI GCL
> (see below).  But it seems to succeed in other Lisps I tried: Allegro
> CL, CMUCL, SBCL, LispWorks, CCL, and CLISP.  I've never seen this sort
> of notation for an in-package form, so I don't understand it; but it
> comes from a file from ACL2's regression (using USE_QUICKLISP=1 with
> the "make" command), books/centaur/quicklisp/quicklisp.lisp, that I
> think Jared arranged to be downloaded from
> http://www.quicklisp.org/beta/.
>
> Here's a log from Allegro CL:
>
> CL-USER(1): (cl:in-package #:cl-user)
> #<The COMMON-LISP-USER package>
> CL-USER(2): 
>
> Here's a log from GCL:
>
> address@hidden:~/temp$ export GCL_ANSI=t ; /p/bin/gcl-2.6.10pre
> GCL (GNU Common Lisp)  2.6.10 ANSI    Nov  1 2013 18:51:26
> Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
> Binary License:  GPL due to GPL'ed components: (XGCL READLINE UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
>
> Use (help) to get some basic information on how to use GCL.
> Temporary directory for compiler files set to /tmp/
>
>>(cl:in-package #:cl-user)
>
> Error in EVAL [or a callee]: The variable #:CL-USER is unbound.
>
> Fast links are on: do (use-fast-links nil) for debugging
> Broken at EVAL.  Type :H for Help.
>  1 (Abort) Return to top level.
> dbl:>>
>
> -- Matt
>    From: Camm Maguire <address@hidden>
>    Cc: address@hidden, address@hidden
>    Date: Fri, 01 Nov 2013 21:08:22 -0400
>
>    Greetings!
>
>    OK, I've pushed wild-pathname-p and ensure-directories-exist to
>    2.6.10pre, and rebuilt at ut.  I've tested the make DOC -- it works with
>    the ansi build, as #'condition is also needed, but of course ansi is
>    stil slower.
>
>    Please let me know if problems persist.
>
>    Take care,
>
>    Matt Kaufmann <address@hidden> writes:
>
>    > Hi, Camm --
>    >
>    > I don't know much about the problem (it involves books that Jared
>    > knows about, so I'm copying him here), but after I submitted your Lisp
>    > definition, that seemed to get me past the error (even without the
>    > pathname.d fix) but got me this new error, which again points to a
>    > function from the standard that is missing in GCL:
>    >
>    > Error: ENSURE-DIRECTORIES-EXIST is invalid as a function.
>    >
>    > Rather than continually iterate, and so that you can debug further
>    > problems, I think I should just tell you how to recreate the problem
>    > yourself.
>    >
>    > First, check out the current snapshopt for ACL2 plus books, using this
>    > command (copied from https://code.google.com/p/acl2-devel/), replacing
>    > "acl2-devel" by a new directory name of your choice:
>    >
>    > svn checkout http://acl2-devel.googlecode.com/svn/trunk acl2-devel
>    >
>    > Then build ACL2 in the usual way.
>    >
>    > Then:
>    >
>    > make DOC ACL2=<path_to_acl2>
>    >
>    > This should get you to the failure; see
>    > books/system/doc/acl2-manual.cert.out.  If you want instructions on
>    > how to run interactively (so that you can redefine, use the debugger,
>    > etc.), let me know.
>    >
>    > -- Matt
>    >    From: Camm Maguire <address@hidden>
>    >    Cc: address@hidden
>    >    Date: Thu, 31 Oct 2013 15:11:50 -0400
>    >
>    >    Greetings!
>    >
>    >    Matt Kaufmann <address@hidden> writes:
>    >
>    >    > P.S. By the way, the function WILD-PATHNAME-P doesn't appear to be
>    >    > defined in GCL 2.6.10pre, even the ANSI version, even though it's in
>    >    > the Common Lisp standard.  Maybe this isn't terribly important, 
> though
>    >    > it appears to be at least one reason that one of the ACL2 books 
> isn't
>    >    > certified using GCL, which in turn makes it impossible to build the
>    >    > ACL2 manual.  I can probably work around this by excluding some 
> books
>    >    > from GCL-based regressions.
>    >
>    >    Does this work for you?
>    >
>    >    #.(let ((g '(:host :device :directory :name :type :version)))
>    >  `(defun wild-pathname-p (p &optional f)
>    >    (declare (optimize (safety 1)))
>    >    (check-type p pathname)
>    >    (check-type f (or null (member ,@g)))
>    >    (case f
>    >      ((nil) (reduce (lambda (y x) (or y (wild-pathname-p p x))) ',g 
> :initial-value nil))
>    >      ,@(mapcar (lambda (x &aux (f (intern (concatenate 'string 
> "PATHNAME-" (string-upcase x)))))
>    >                  `(,x ,(if (eq x :directory) `(when (member :wild (,f 
> p)) t) `(eq :wild (,f p))))) g))))
>    >
>    >    It also needs the following patch (for directories only) to 
> pathname.d,
>    >    which I might consider for 2.6.10:
>    >
>    >    diff --git INDEX:/gcl/o/pathname.d WORKDIR:/gcl/o/pathname.d
>    >    index ef4a848..27466e0 100755
>    >    --- INDEX:/gcl/o/pathname.d
>    >    +++ WORKDIR:/gcl/o/pathname.d
>    >    @@ -110,6 +110,8 @@ int start, end, *ep;
>    >     #ifdef UNIX
>    >                     if (i-j == 1 && s->st.st_self[j] == '.') {
>    >                             vs_push(sKcurrent);
>    >    +                     } else if (i-j == 1 && s->st.st_self[j] == '*') 
> {
>    >    +                             vs_push(sKwild);
>    >                     } else if (i-j==2 && s->st.st_self[j]=='.' && 
> s->st.st_self[j+1]=='.') {
>    >                             vs_push(sKparent);
>    >                     } else {
>    >    @@ -335,6 +337,10 @@ D:       l = x->pn.pn_directory;
>    >                     token->st.st_self[i++] = '.';
>    >                     token->st.st_self[i++] = '/';
>    >                     continue;
>    >    +             } else if (y == sKwild) {
>    >    +                     token->st.st_self[i++] = '*';
>    >    +                     token->st.st_self[i++] = '/';
>    >    +                     continue;
>    >             } else if (y == sKparent) {
>    >                     token->st.st_self[i++] = '.';
>    >                     token->st.st_self[i++] = '.';
>    >
>    >
>    >    Take care,
>    >    -- 
>    >    Camm Maguire                                      address@hidden
>    >    
> ==========================================================================
>    >    "The earth is but one country, and mankind its citizens."  --  
> Baha'u'llah
>    >
>    >
>    >
>    >
>    >
>
>    -- 
>    Camm Maguire                                           address@hidden
>    ==========================================================================
>    "The earth is but one country, and mankind its citizens."  --  Baha'u'llah
>
>
>
>
>

-- 
Camm Maguire                                        address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah



reply via email to

[Prev in Thread] Current Thread [Next in Thread]