Re: Building Chicken 6 on Debian stable / MX Linux
Mario Domenech Goulart via Chicken-users <[email protected]>
| Newsgroups | gmane.lisp.scheme.chicken |
|---|---|
| Message-ID | <[email protected]> |
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