defstruct :predicate failure

Daniel KochmaƄski daniel at turtleware.eu
Wed May 9 07:17:16 UTC 2018


In both cases (ECL built from the tag and your install from the HEAD) 
make sure you remove previous ECL and its cache with FASLs. It might be 
that you use wrong library in your system (i.e two libecl libraries are 
installed, or FASL from incompatible version is loaded).

Regards,
Daniel


On 09.05.2018 07:09, Peter Keller wrote:
> On 05/08/2018 11:03 PM, Andrew Kirkpatrick wrote:
>> Interestingly I cannot reproduce it. I'm running Linux Mint 18.2 and
>> built ECL from a git checkout of the tag ECL-16.1.3:
>>
>> $ /opt/ecl/bin/ecl
>> ;;; Loading "/home/spacebat/quicklisp/setup.lisp"
>> ;;; Loading #P"/opt/ecl/lib/ecl-16.1.3/asdf.fas"
>> ECL (Embeddable Common-Lisp) 16.1.3
>> (git:17645d703eb95b9452186015f5f3a1a9c0bc6b6a)
>> Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
>> Copyright (C) 1993 Giuseppe Attardi
>> Copyright (C) 2000 Juan J. Garcia-Ripoll
>> Copyright (C) 2016 Daniel Kochmanski
>> ECL is free software, and you are welcome to redistribute it
>> under certain conditions; see file 'Copyright' for details.
>> Type :h for Help.
>> Top level in: #<process TOP-LEVEL>.
>>> (defstruct (foo (:type vector) (:predicate nil)) qux bar)
>> FOO
>>
>>> (make-foo :qux "q" :bar "b")
>> #("q" "b")
>>
>>
>> However if I install ECL via apt, I get an older version with this banner:
>>
>> ECL (Embeddable Common-Lisp) 15.3.7 (git:UNKNOWN)
>>
>> The error you describe is then evident.
> I suspect the tagged version and the actual release are different, but
> it seems it is moot.
>
> I was not the only person to discover this bug:
>
> https://gitlab.com/embeddable-common-lisp/ecl/issues/385
>
> It turns out it is fixed on the head of ecl (and maybe by the time that
> tag was actually made, too).
>
> When I switched to the head of ECL, the described problem went away.
>
> Sadly, another problem showed up, this time trying to load fare-utils
> from the most recent edition of Quicklisp.
>
>
> Linux violet > ecl
> ;;; Loading "/home/psilord/quicklisp/setup.lisp"
> ;;; Loading #P"/usr/local/lib/ecl-16.1.3/asdf.fas"
> ECL (Embeddable Common-Lisp) 16.1.3 (git:e3b9919ffaddbeb8d5f16c394fb70b813c5f0d94)
> Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
> Copyright (C) 1993 Giuseppe Attardi
> Copyright (C) 2000 Juan J. Garcia-Ripoll
> Copyright (C) 2016 Daniel Kochmanski
> ECL is free software, and you are welcome to redistribute it
> under certain conditions; see file 'Copyright' for details.
> Type :h for Help.
> Top level in: #<process TOP-LEVEL 0x2314f80>.
>> (ql:quickload :fare-utils)
> To load "fare-utils":
>    Load 1 ASDF system:
>      fare-utils
> ; Loading "fare-utils"
> ;;;
> ;;; Compiling
> /home/psilord/quicklisp/dists/quicklisp/software/fare-utils-20170124-git/base/utils.lisp.
> ;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
> ;;;
> .
> ;;; Error:
> ;;;   in file utils.lisp, position 4443
> ;;;   at (EXPORTING-DEFINITIONS (DEFMACRO DEFINE-EXPORTER ...) ...)
> ;;;   * The macro form (EXPORTING-DEFINITIONS (DEFMACRO DEFINE-EXPORTER
> (EXPORTER DEFINER) `(DEFMACRO ,EXPORTER (SYMBOL &REST ARGS) `(PROGN (,',DEFINER
> ,SYMBOL , at ARGS) (ENSURE-SYMBOL-EXPORTED ,SYMBOL)))) (DEFINE-EXPORTER
> DEFINE*-EXPORTER DEFINE-EXPORTER) (DEFINE-EXPORTER DEF*CLASS DEFCLASS)
> (DEFINE-EXPORTER DEF*CONSTANT DEFCONSTANT) (DEFINE-EXPORTER DEF*GENERIC
> DEFGENERIC) (DEFINE-EXPORTER DEFINE*-COMPILER-MACRO DEFINE-COMPILER-MACRO)
> (DEFINE-EXPORTER DEFINE*-CONDITION DEFINE-CONDITION) (DEFINE-EXPORTER
> DEFINE*-METHOD-COMBINATION DEFINE-METHOD-COMBINATION) (DEFINE-EXPORTER
> DEFINE*-MODIFY-MACRO DEFINE-MODIFY-MACRO) (DEFINE-EXPORTER
> DEFINE*-SETF-EXPANDER DEFINE-SETF-EXPANDER) (DEFINE-EXPORTER
> DEFINE*-SYMBOL-MACRO DEFINE-SYMBOL-MACRO) (DEFINE-EXPORTER DEF*MACRO DEFMACRO)
> (DEFINE-EXPORTER DEF*METHOD DEFMETHOD) (DEFINE-EXPORTER DEF*PACKAGE DEFPACKAGE)
> (DEFINE-EXPORTER DEF*PARAMETER DEFPARAMETER) (DEFINE-EXPORTER DEF*SETF DEFSETF)
> (DEFINE-EXPORTER DEF*STRUCT DEFSTRUCT) (DEFINE-EXPORTER DEF*TYPE DEFTYPE)
> (DEFINE-EXPORTER DEF*FUN DEFUN) (DEFINE-EXPORTER DEF*VAR DEFVAR)) was not
> expanded successfully.
> ;;; Error detected:
> ;;; GO: The tagbody 2875 is missing.
> Condition of type: COMPILE-FILE-ERROR
> COMPILE-FILE-ERROR while compiling #<cl-source-file "fare-utils" "base" "utils">
>
> Available restarts:
>
> 1. (RETRY) Retry compiling #<cl-source-file "fare-utils" "base" "utils">.
> 2. (ACCEPT) Continue, treating compiling #<cl-source-file "fare-utils" "base"
> "utils"> as having been successful.
> 3. (RETRY) Retry ASDF operation.
> 4. (CLEAR-CONFIGURATION-AND-RETRY) Retry ASDF operation after resetting the
> configuration.
> 5. (ABORT) Give up on "fare-utils"
> 6. (RESTART-TOPLEVEL) Go back to Top-Level REPL.
>
> Broken at SI:BYTECODES. [Evaluation of: (QUICKLISP-CLIENT:QUICKLOAD
> :FARE-UTILS)] In: #<process TOP-LEVEL 0x2314f80>.
>
>
>
>
> I appreciate you had spent some time looking into the :predicate bug.
>
> Thank you!
>
> -pete
>
>




More information about the ecl-devel mailing list