Hi Artyom,
On Tue, 18 Aug 2026 04:00:55 +0400 Artyom Bologov via Chicken-users
<[email protected]> wrote:
> 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?
To build releases, the only requirements are a POSIX shell, a decent C
toolchain and GNU make. You don't need to go through the bootstrapping
process. It's basically fetching the release tarball, extracting it and
running:
$ ./configure
$ make
$ make install
You can select the installation directory with the --prefix parameter
for configure, and build parallelization options with the -j parameter
for make.
Only building from git requires an available chicken executable, and
normally the code from git expects a minimum CHICKEN version. Currently
you can use the 6.0.0 release to build the code from git (but you don't
have to build the code from git -- you can simply build the release
tarball, which doesn't require a pre-installed chicken).
All the best.
Mario
--
https://parenteses.org/mario