Build SBCL on FreeBSD 
                        =====================

                             Motivation
                             ----------

Installing the binary package for SBCL on a FreeBSD 13.1 system will
install version 2.2.7.

Using the SBCL from the binary package gives an error when compiling
lisp programs  using compression,  saying that  the runtime  was not
built with zstd support.

I wanted to see if building from source would solve this.

                          Build in a jail
                          ---------------

I choose  to build SBCL  in a  jail, so that  it would not  touch my
system. This way I can do  a kind of test-install, and if everything
works fine, I can adopt it to my main system.

With ZFS  creating a new  jail is  a piece of  cake and a  matter of
seconds. So I setup a new jail  by cloning a snapshot I made earlier
from a default jail install.

                             Using Stow
                             ----------

GNU Stow is a great solution  when you want to install self compiled 
software. 
See: https://www.gnu.org/software/stow/ 

It makes installing, de-installing and upgrading software very easy.

BTW: I also use stow to manage my dotfiles.

                          Prepare the jail
                          ----------------

You need SBCL to build SBCL.

In  the jail  I  installed  the binary  packages  git, stow,  gmake,
texinfo,    zstd,   and    sbcl    and    created   the    directory
/usr/local/stow/sbcl.

    pkg  install  -y git  stow  gmake  texinfo  zstd sbcl  
    mkdir  -p /usr/local/stow/sbcl

Now I could download and compile SBCL.

                             Build SBCL
                             ----------

    git clone  git://git.code.sf.net/p/sbcl/sbcl cd sbcl  
    sh make.sh --fancy --prefix=/usr/local/stow/sbcl 
    cd ./doc/manual  && gmake cd -
    setenv INSTALL_ROOT /usr/local/stow/sbcl && sh install.sh

                         Finish the install
                         ------------------

Remove the binary package and use the newly compiled version:

    pkg delete sbcl cd /usr/local/stow stow --ignore=dir sbcl

The --ignore=dir is because of the info pages.

Starting sbcl now shows the current version:

    This is SBCL 2.2.9.140-ca0170fb7

                   Installing on a different host
                   ------------------------------

I installed quicklisp in this jail and did some test compliations.

Happy with the result, I migrated this to my main FreeBSD box:

    scp -r /usr/local/stow/sbcl main-host:

At the main-host:

    mv  sbcl /usr/local/stow/  
    cd /usr/local/stow  
    stow --ignore=dir sbcl

                            Compression
                            -----------

Now compression works :)

For  the binary  that generates  this website,  this results  in the
following:

- before compression: 23M 
- after compression:  14M

So, that is quite a lot, for small programs.

Have fun !

Last edited: $Date: 2022/10/22 16:16:35 $

                              * EOF *