Compilation failure with SBCL >= 2.3.9, using 2.0.1-debian as bootstrap
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Hello all,
Our docker compilation rig uses SBCL version 2.0.1-debian. In trying to compile versions SBCL 2.3.9 and above, the build fails with the following error:
```
; wrote /home/tester/
; compilation finished in 0:00:00.920
;
; compilation unit finished
; caught 3 STYLE-WARNING conditions
While evaluating the form starting at line 125, column 0
of #P"/home/
debugger invoked on a SIMPLE-ERROR in thread
#<THREAD "main thread" RUNNING {1000510083}>:
make-host-1 stopped due to unexpected STYLE-WARNING.
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-
0: [CONTINUE ] Proceed anyway
1: [RETRY ] Retry EVAL of current toplevel form.
2: Ignore error and continue loading file "/home/
3: [ABORT ] Abort loading file "/home/
4: [ABORT-BUILD] Abort building SBCL.
5: Exit debugger, returning to top level.
```
By messing around with make-host-1.lisp, I made it print the style-warnings when they occurred, and they seem like they're all of the redefining BLARG in defmacro variety. There are a lot of them.
I was able to reproduce with SBCL 2.0.1, 2.0.9; subsequent version compile without problems. (checked
2.0.10, 2.1.2, 2.3.3)
The compilation is simply calling ./make.sh, with no flags.
Please let me know if I can provide further information.
uname -a : Linux ppoitras-
Changed in sbcl: | |
status: | New → Incomplete |
Changed in sbcl: | |
status: | Incomplete → Fix Committed |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
Note that a rather brutish fix, given that it works on 2.0.10 and not on 2.0.9 is to specify
(string>= (cl:lisp- implementation- version) "2.1")
rather than
(string>= (cl:lisp- implementation- version) "2")
in make-host-1.lisp: line 50.
This has the side-effect of disabling warnings on 2.0.10 and 2.0.11, a less restrictive version of this could be something like:
(or (string>= (cl:lisp- implementation- version) "2.1") implementation- version) "2.0.10") implementation- version) "2.0.11"))
(string= (cl:lisp-
(string= (cl:lisp-
But it's probably better to ignore just the redefinition in defmacro warnings.