alex-gutev / generic-cl

Generic function interface to standard Common Lisp functions
https://alex-gutev.github.io/generic-cl/
MIT License
143 stars 8 forks source link

:serial t missing in .asd? #7

Closed Ambrevar closed 4 years ago

Ambrevar commented 4 years ago

Still packaging generic-cl in Guix, it turns out that :serial t is not properly set: it must be set for the "src" module instead of the generic-cl system (which has only 1 component).

cl-environments suffers from the same issue.

Funny thing is, it only fails when building the package for Guix. It works when I compile the generic-cl system locally with SBCL. Any clue why? ASDF 3.3.3 is used in both cases.

alex-gutev commented 4 years ago

I added :serial t in the latest commit 8e5a81487ee3c13fe5ffdc8bdda161d476639535. However I'm not sure whether that will solve your problem. I'm not familiar with Guix so I don't know why the build would fail unless there is some problem with a dependency of generic-cl.

Ambrevar commented 4 years ago

Thanks.

Here is the error output:

; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/cl-sequences.lisp" (written 01 JAN 1970 12:00:01 AM):
; processing (IN-PACKAGE :GENERIC-CL.IMPL)
; processing (DEFMETHOD ELT ...)
; processing (DEFMETHOD (SETF ELT) ...)
; processing (DEFMETHOD ELT ...)
; processing (DEFMETHOD (SETF ELT) ...)
; processing (DEFMETHOD ELT ...)
; processing (DEFMETHOD (SETF ELT) ...)
; processing (LABELS (#) ...)
; file: /gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/cl-sequences.lisp
; in:
;      LABELS ((RMI (DIMS INDICES)
;           "Mirrors cl:array-row-major-index, but functions exclusively on dimensions
;             Length of dims and indices must be equal"
;           (LOOP WITH WORD-IDX = 0
;                 WITH DIMPROD = 1
;                 FOR DIM-SIZE IN ...)))
;     (GENERIC-CL.IMPL:< -1 GENERIC-CL.IMPL::DIM-IDX GENERIC-CL.IMPL::DIM-SIZE)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (< -1 DIM-IDX ...). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:* GENERIC-CL.IMPL::DIM-IDX GENERIC-CL.IMPL::DIMPROD)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* DIM-IDX DIMPROD). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:* GENERIC-CL.IMPL::DIMPROD GENERIC-CL.IMPL::DIM-SIZE)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* DIMPROD DIM-SIZE). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

; in: DEFMETHOD ELT
;     (GENERIC-CL.IMPL:= GENERIC-CL.IMPL::N-DIMS GENERIC-CL.IMPL::N-IDCS)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (= N-DIMS N-IDCS). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:< GENERIC-CL.IMPL::N-DIMS GENERIC-CL.IMPL::N-IDCS)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (< N-DIMS N-IDCS). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:* GENERIC-CL.IMPL::WORD-LEN
;      (GENERIC-CL.IMPL::RMI
;       (GENERIC-CL.IMPL:SUBSEQ GENERIC-CL.IMPL::DIMS 0 GENERIC-CL.IMPL::N-IDCS)
;       GENERIC-CL.IMPL::INDICES))
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* WORD-LEN (RMI # INDICES)). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

; in: DEFMETHOD (SETF ELT)
;     (GENERIC-CL.IMPL:= GENERIC-CL.IMPL::N-DIMS GENERIC-CL.IMPL::N-IDCS)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (= N-DIMS N-IDCS). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:< GENERIC-CL.IMPL::N-DIMS GENERIC-CL.IMPL::N-IDCS)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (< N-DIMS N-IDCS). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL:* GENERIC-CL.IMPL::WORD-LEN
;      (GENERIC-CL.IMPL::RMI
;       (GENERIC-CL.IMPL:SUBSEQ GENERIC-CL.IMPL::DIMS 0 GENERIC-CL.IMPL::N-IDCS)
;       GENERIC-CL.IMPL::INDICES))
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* WORD-LEN (RMI # INDICES)). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

;     (GENERIC-CL.IMPL::RMI
;      (GENERIC-CL.IMPL:SUBSEQ GENERIC-CL.IMPL::DIMS 0 GENERIC-CL.IMPL::N-IDCS)
;      GENERIC-CL.IMPL::INDICES)
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (< -1 DIM-IDX ...). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* DIM-IDX DIMPROD). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.
; 
; caught WARNING:
;   Error during compiler-macroexpansion of (* DIMPROD DIM-SIZE). Use
;   *BREAK-ON-SIGNALS* to intercept.
;   
;    The function GENERIC-CL.IMPL::NUMBERS? is undefined.

; processing (DEFMETHOD ELT ...)
; processing (DEFMETHOD ELT ...)
; processing (DEFMETHOD (SETF ELT) ...)
; processing (DEFMETHOD (SETF ELT) ...)
; processing (DEFMETHOD FIRST ...)
; processing (DEFMETHOD FIRST ...)
; processing (DEFMETHOD FIRST ...)
; processing (DEFMETHOD FIRST ...)
; processing (DEFMETHOD FIRST ...)
; processing (DEFMETHOD LAST ...)
; processing (DEFMETHOD LAST ...)
; processing (DEFMETHOD LAST ...)
; processing (DEFUN LASTCDR ...)
; processing (DEFMETHOD ERASE ...)
; file: /gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/cl-sequences.lisp
; in: DEFMETHOD ERASE
;     (1- GENERIC-CL.IMPL::LEN)
; --> - 
; ==>
;   GENERIC-CL.IMPL::LEN
; 
; note: deleting unreachable code

; processing (DEFMETHOD LENGTH ...)
; processing (DEFMETHOD LENGTH ...)
; processing (DEFMETHOD LENGTH ...)
; processing (DEFMETHOD EMPTYP ...)
; processing (DEFMETHOD EMPTYP ...)
; processing (DEFMETHOD EMPTYP ...)
; processing (DEFMETHOD CLEAR ...)
; file: /gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/cl-sequences.lisp
; in: DEFMETHOD CLEAR
;     (ADJUST-ARRAY GENERIC-CL.IMPL::VEC 0 :INITIAL-ELEMENT 0)
; 
; note: deleting unreachable code

; processing (DEFMETHOD ADJUST-SIZE ...)
; processing (DEFMETHOD NADJUST-SIZE ...)
; processing (DEFMETHOD ADJUST-SIZE ...)
; processing (DEFMETHOD NADJUST-SIZE ...)
; processing (DEFMETHOD SUBSEQ ...)
; processing (DEFMETHOD (SETF SUBSEQ) ...)
; processing (DEFMETHOD FILL ...)
; processing (DEFMETHOD REPLACE ...)
; processing (DEFMETHOD REDUCE ...)
; processing (DEFMETHOD COUNT ...)
; processing (DEFMETHOD COUNT-IF ...)
; processing (DEFMETHOD COUNT-IF-NOT ...)
; processing (DEFMETHOD FIND ...)
; processing (DEFMETHOD FIND-IF ...)
; processing (DEFMETHOD FIND-IF-NOT ...)
; processing (DEFMETHOD POSITION ...)
; processing (DEFMETHOD POSITION-IF ...)
; processing (DEFMETHOD POSITION-IF-NOT ...)
; processing (DEFMETHOD SEARCH ...)
; processing (DEFMETHOD MISMATCH ...)
; processing (DEFMETHOD REVERSE ...)
; processing (DEFMETHOD NREVERSE ...)
; processing (DEFMETHOD MERGE ...)
; processing (DEFMETHOD NMERGE ...)
; processing (DEFMETHOD SORT ...)
; processing (DEFMETHOD STABLE-SORT ...)
; processing (DEFMETHOD NSORT ...)
; processing (DEFMETHOD STABLE-NSORT ...)
; processing (DEFMETHOD SUBSTITUTE ...)
; processing (DEFMETHOD NSUBSTITUTE ...)
; processing (DEFMETHOD SUBSTITUTE-IF ...)
; processing (DEFMETHOD NSUBSTITUTE-IF ...)
; processing (DEFMETHOD SUBSTITUTE-IF-NOT ...)
; processing (DEFMETHOD NSUBSTITUTE-IF-NOT ...)
; processing (DEFMETHOD REMOVE ...)
; processing (DEFMETHOD DELETE ...)
; processing (DEFMETHOD REMOVE-IF ...)
; processing (DEFMETHOD DELETE-IF ...)
; processing (DEFMETHOD REMOVE-IF-NOT ...)
; processing (DEFMETHOD DELETE-IF-NOT ...)
; processing (DEFMETHOD REMOVE-DUPLICATES ...)
; processing (DEFMETHOD DELETE-DUPLICATES ...)

; wrote /gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/lib/common-lisp/sbcl/generic-cl/src/cl-sequences-tmpQ371UGST.fasl
; compilation finished in 0:00:00.292
Unhandled UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                          {1001898283}>:
  COMPILE-FILE-ERROR while
  compiling #<CL-SOURCE-FILE "generic-cl" "src" "cl-sequences">

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001898283}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10066EF113}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10066EF113}>)
2: (INVOKE-DEBUGGER #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10066EF113}>)
3: (ERROR UIOP/LISP-BUILD:COMPILE-FILE-ERROR :CONTEXT-FORMAT "~/asdf-action::format-action/" :CONTEXT-ARGUMENTS ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "generic-cl" "src" "cl-sequences">)))
4: (UIOP/LISP-BUILD:CHECK-LISP-COMPILE-RESULTS NIL T T "~/asdf-action::format-action/" ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "generic-cl" "src" "cl-sequences">)))
5: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "generic-cl" "src" "cl-sequences">)
6: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
7: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "generic-cl" "src" "cl-sequences">) [fast-method]
8: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {10061A4A63}>) [fast-method]
9: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
10: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {10061A4A63}>) [fast-method]
11: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "generic-cl"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
12: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "generic-cl">)
13: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
14: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "generic-cl">) [fast-method]
15: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:COMPILE-OP "generic-cl")
16: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
17: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:COMPILE-OP "generic-cl") [fast-method]
18: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {10061872EB}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
20: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {10061849BB}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
21: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:COMPILE-OP "generic-cl") [fast-method]
22: (ASDF/OPERATE:COMPILE-SYSTEM "generic-cl")
23: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/OPERATE:COMPILE-SYSTEM "generic-cl") #<NULL-LEXENV>)
24: (EVAL (ASDF/OPERATE:COMPILE-SYSTEM "generic-cl"))
25: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require :asdf)") (:EVAL . "(asdf:load-asd (truename \"/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/generic-cl.asd\"))") (:EVAL . "(asdf:load-asd (truename \"/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/generic-cl.util.asd\"))") (:EVAL . "(asdf:compile-system \"generic-cl\")") (:QUIT)))
26: (SB-IMPL::TOPLEVEL-INIT)
27: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
28: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-IMPL::START-LISP))
29: (SB-IMPL::START-LISP)

unhandled condition in --disable-debugger mode, quitting
; 
; compilation unit aborted
;   caught 1 fatal ERROR condition
;   caught 12 WARNING conditions
;   printed 2 notes
command "/gnu/store/grbddz6cbdsn3cmh3ywvkm29wdh28j97-sbcl-2.0.10/bin/sbcl" "--non-interactive" "--eval" "(require :asdf)" "--eval" "(asdf:load-asd (truename \"/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/generic-cl.asd\"))" "--eval" "(asdf:load-asd (truename \"/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/generic-cl.util.asd\"))" "--eval" "(asdf:compile-system \"generic-cl\")" failed with status 1
builder for `/gnu/store/zf4zxgwv2qrpfikysk35qwfngiysy5r7-sbcl-generic-cl-0.7.1.drv' failed with exit code 1

I tried to compare the file compilation order with and without :serial t. In both cases, it's

; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/package.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/util.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/object.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/equality.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/comparison.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/arithmetic.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/sequences.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/iterator.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/collector.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/hash-tables.lisp" (written 01 JAN 1970 12:00:01 AM):
; compiling file "/gnu/store/51462c75fwciq4iin6jk4hgpd6rhq7rd-sbcl-generic-cl-0.7.1/share/common-lisp/sbcl/generic-cl/src/cl-sequences.lisp" (written 01 JAN 1970 12:00:01 AM):

(I've elided the text between each file.)

Ambrevar commented 4 years ago

Forgot to say that your commit fixes the Guix build indeed. So this can be considered fixed, but I'd really like to understand what's happening :)

alex-gutev commented 4 years ago

I can't say for sure other than it may be possible that when :serial t is not specified the files are compiled in parallel.

Ambrevar commented 4 years ago

Indeed, that would explain it.