Building Chicken 6 on Debian stable / MX Linux
Artyom Bologov via Chicken-users <[email protected]>
| Newsgroups | gmane.lisp.scheme.chicken |
|---|---|
| Message-ID | <87wlto1emg.fsf@paranoidal> |
Hi y’all,
I’m trying to build Chicken 6 on my MX Linux (= Debian stable)
machine. I encountered a bit of errors and decided to share these and my
fixes to them. I also encountered a set of grave errors that I do not
know how to fix, so any help will be appreciated!
So, the story is: Debian stable only has Chicken 5.3.0 in its
repos. While current Chicken is already at 6.0. Which is a big
gap. Chicken also requires another instance of Chicken installed to
bootstrap itself. Which causes all manners of problems when trying to
build 6.0 with 5.3 on my machine. I won’t even list the error messages
here, as there are too many.
My approach was to checkout the 5.4.0rc1 branch and try building
that. The errors I got were mostly related to bwp type:
Error: invalid argument type in specialization
(or symbol keyword char eof bwp null undefined)
(((or symbol keyword char eof bwp null undefined) *) (scheme#eq? #(1) #(2)))
chicken.base#equal=?
No sweat, just remove “bwp” from the respective signatures (there are
multiple) in types.db. After that, Chicken does compile and install
fine.
Now to 6.0. I tried checking out 6.0.0-bootstrap, 6.0.0pre1, and
6.0.0rc2, and build errors were mostly identical, so let’s try with
6.0.0pre1 first:
Syntax error (import): cannot import from undefined module
scheme.base
This is solvable by editing library.scm and removing all imports from
(scheme base) which seems to be absent in Chicken 5.4.0 used for the
build. After that, a new error emerges:
Error: invalid argument type in specialization
bytevector
((bytevector) (##core#inline "C_u_i_8vector_length" #(1)))
chicken.number-vector#u8vector-length
Okay, this is fine too—bytevectors are only added in Chicken 6, so 5.4.0
does not know the type. Just change the “bytevector” to “*” in the
offending signatures and recompile.
Compilation progresses, but suddenly litters the screen with a bunch of
errors like:
library.c:80937:21: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘f_41848’
80937 | static void C_fcall f_41848(C_word t0,C_word t1,C_word t2,C_word t3,C_word t4,C_word t5,C_word t6){
| ^~~~~~~
library.c: In function ‘f_41915’:
library.c:81114:200: error: ‘li681’ undeclared (first use in this function)
81114 | 0)[4],a[4]=((C_word*)t0)[5],a[5]=((C_word*)t0)[6],a[6]=((C_word*)t0)[7],a[7]=t5,a[8]=((C_word*)t0)[8],a[9]=((C_word)li681),tmp=(C_word)a,a+=10,tmp);
library.c:82960:41: error: ‘f_11427’ undeclared here (not in a function); did you mean ‘f_21427’?
82960 | {C_text("f_11427:library_2escm"),(void*)f_11427},
| ^~~~~~~
| f_21427
library.c: In function ‘f_40745’:
library.c:78043:46: warning: ‘noreturn’ function does return
78043 | ((C_proc)(void*)(*((C_word*)t4+1)))(4,av2);}}}
| ^
There are thousands of them, and I’m not sure I understand the reason
behind them. That’s where I’m stuck.
Any help?
Best of luck,
--
Artyom Bologov
https://aartaka.me