Clasp binary for download

Martin Kielhorn kielhorn.martin at gmail.com
Sun Jun 21 10:04:13 UTC 2015


Hi,
I managed to compile clasp and I thought it might be helpful if I make the
binary available for other people.
I had to fix one problem (a missing directory), which I describe below.

You can download the archive and run the binary like this:

wget http://37.59.29.73:36789/clasp-20150619.tar.xz
tar xaf clasp-20150619.tar.xz
cd clasp-20150619/bin
export LD_LIBRARY_PATH:.
./clasp_mps_o

The output should be:

Starting MPS Clasp 0.2 ... loading image... it takes a few seconds
Top level.
>

You can verify the archives sha1sum.
wget http://37.59.29.73:36789/clasp-20150619.tar.xz.sha1
It should be:
73acbccc3cb0408749b8d73c5b4c2234358d6dd5  clasp-20150619.tar.xz


I then managed to start swank using quicklisp (which I already installed
using sbcl):

(load "/home/martin/quicklisp/setup.lisp")
(ql:quickload "swank")
(swank:create-server)


I used the following versions of the two repositories as the source for the
binary:

clasp
commit c794bfd2e06b7a4b418c17df41a0505b4d28fda9
Author: Christian Schafmeister <meister at temple.edu>
Date:   Tue May 19 22:11:10 2015 -0400

externals-clasp
commit 35ac32fa1647407d2e577241299d094d8d40e04f
Author: Christian Schafmeister <meister at temple.edu>
Date:   Thu Feb 5 10:15:34 2015 -0500

My system is a gentoo 64bit. I included copies of all libraries that
clasp_mps_o depends on.

For the build process I ended up going through the makefile and starting
each compilation individually.
The only real problem happened during the compilation of clasp. It aborted
like this:


...found 24420 targets...
make[1]: Leaving directory '/home/martin/src/clasp/clasp'
(cd src/main; make mps)
make[1]: Entering directory '/home/martin/src/clasp/clasp/src/main'
make min-mps
make[2]: Entering directory '/home/martin/src/clasp/clasp/src/main'
/home/martin/src/clasp/clasp/build/clasp/bin/clasp_mps_o -I -f ecl-min -l
"buildClaspMinMps.lsp"
Builder clasp-min
Will remove modules: (INIT CMP/JIT-SETUP CLSYMBOLS LSP/FOUNDATION
LSP/EXPORT LSP/DEFMACRO LSP/HELPFILE LSP/EVALMACROS LSP/CLASPMACROS
LSP/TESTING LSP/MAKEARRAY LSP/ARRAYLIB LSP/SETF LSP/LISTLIB LSP/MISLIB
LSP/DEFSTRUCT LSP/PREDLIB LSP/SEQ LSP/CMUUTIL LSP/SEQMACROS LSP/IOLIB
LSP/PROFILING CMP/PACKAGES CMP/CMPSETUP CMP/CMPENV-FUN CMP/CMPENV-PROCLAIM
CMP/CMPGLOBALS CMP/CMPTABLES CMP/CMPVAR CMP/CMPUTIL CMP/CMPINTRINSICS
CMP/CMPIR CMP/CMPEH CMP/DEBUGINFO CMP/LAMBDALISTVA CMP/CMPVARS CMP/CMPQUOTE
CMP/CMPOBJ CMP/COMPILER CMP/COMPILEFILE CMP/CMPBUNDLE CMP/CMPWALK
CMP/CMPREPL LSP/LOGGING LSP/SEQLIB LSP/TRACE LSP/SHARPMACROS LSP/ASSERT
LSP/NUMLIB LSP/DESCRIBE LSP/MODULE LSP/LOOP2 LSP/ASSORTED LSP/PACKLIB
LSP/DEFPACKAGE LSP/FORMAT CLOS/PACKAGE CLOS/HIERARCHY CLOS/CPL
CLOS/STD-SLOT-VALUE CLOS/SLOT CLOS/BOOT CLOS/KERNEL CLOS/METHOD CLOS/COMBIN
CLOS/STD-ACCESSORS CLOS/DEFCLASS CLOS/SLOTVALUE CLOS/STANDARD CLOS/BUILTIN
CLOS/CHANGE CLOS/STDMETHOD CLOS/GENERIC CLOS/FIXUP CLOS/EXTRACLASSES
LSP/DEFVIRTUAL CLOS/CONDITIONS CLOS/PRINT CLOS/STREAMS LSP/PPRINT
CLOS/INSPECT LSP/FFI LSP/TOP  )
cur=(INIT CMP/JIT-SETUP CLSYMBOLS LSP/FOUNDATION LSP/EXPORT LSP/DEFMACRO
LSP/HELPFILE LSP/EVALMACROS LSP/CLASPMACROS LSP/TESTING LSP/MAKEARRAY
LSP/ARRAYLIB LSP/SETF LSP/LISTLIB LSP/MISLIB LSP/DEFSTRUCT LSP/PREDLIB
LSP/SEQ LSP/CMUUTIL LSP/SEQMACROS LSP/IOLIB LSP/PROFILING CMP/PACKAGES
CMP/CMPSETUP CMP/CMPENV-FUN CMP/CMPENV-PROCLAIM CMP/CMPGLOBALS
CMP/CMPTABLES CMP/CMPVAR CMP/CMPUTIL CMP/CMPINTRINSICS CMP/CMPIR CMP/CMPEH
CMP/DEBUGINFO CMP/LAMBDALISTVA CMP/CMPVARS CMP/CMPQUOTE CMP/CMPOBJ
CMP/COMPILER CMP/COMPILEFILE CMP/CMPBUNDLE CMP/CMPWALK CMP/CMPREPL
LSP/LOGGING LSP/SEQLIB LSP/TRACE LSP/SHARPMACROS LSP/ASSERT LSP/NUMLIB
LSP/DESCRIBE LSP/MODULE LSP/LOOP2 LSP/ASSORTED LSP/PACKLIB LSP/DEFPACKAGE
LSP/FORMAT CLOS/PACKAGE CLOS/HIERARCHY CLOS/CPL CLOS/STD-SLOT-VALUE
CLOS/SLOT CLOS/BOOT CLOS/KERNEL CLOS/METHOD CLOS/COMBIN CLOS/STD-ACCESSORS
CLOS/DEFCLASS CLOS/SLOTVALUE CLOS/STANDARD CLOS/BUILTIN CLOS/CHANGE
CLOS/STDMETHOD CLOS/GENERIC CLOS/FIXUP CLOS/EXTRACLASSES LSP/DEFVIRTUAL
CLOS/CONDITIONS CLOS/PRINT CLOS/STREAMS LSP/PPRINT CLOS/INSPECT LSP/FFI
LSP/TOP  )
../../src/core/exceptions.cc:150 af_signalSimpleError  caught because
signal-simple-error is not installed yet
COMMON-LISP:FILE-ERROR
Could not create directory
/home/martin/src/clasp/clasp/build/clasp/Contents/Resources/lisp/build/system/min-mps
C library error: No such file or directory

af_signalSimpleError
../../src/core/foundation.cc:298 dbg_hook(...) was called

"# 16/b at 0x7f5968a83790        exceptions.cc   822/0   SIGNAL-SIMPLE-ERROR
"
"The following restarts are available:"
"ABORT      a    Abort to REPL"
Frame-16-Dbg[1]>



I used strace to figure out what is wrong:
[pid  5651] stat("min-mps", 0x7ffc35554230) = -1 ENOENT (No such file or
directory)
[pid  5651] rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL,
8) = 0
[pid  5651] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5651] write(1, "make[2]: Leaving directory '/hom"..., 67) = 67
[pid  5651] chdir("/home/martin/src/clasp/clasp/src/main") = 0
[pid  5651] close(1)                    = 0
[pid  5651] munmap(0x7f15108e7000, 4096) = 0
[pid  5651] exit_group(2)               = ?
[pid  5651] +++ exited with 2 +++
[pid  5650] <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0,
NULL) = 5651
[pid  5650] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5651,
si_uid=1000, si_status=2, si_utime=0, si_stime=0} ---
[pid  5650] rt_sigreturn()              = 5651
[pid  5650] write(1, "makefile:44: recipe for target '"..., 44) = 44
[pid  5650] write(2, "make[1]: *** [mps] Error 2\n", 27make[1]: *** [mps]
Error 2
) = 27
[pid  5650] rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL,
8) = 0
[pid  5650] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5650] write(1, "make[1]: Leaving directory '/hom"..., 67) = 67
[pid  5650] chdir("/home/martin/src/clasp/clasp/src/main") = 0
[pid  5650] close(1)                    = 0
[pid  5650] munmap(0x7f452c0bc000, 4096) = 0
[pid  5650] exit_group(2)               = ?
[pid  5650] +++ exited with 2 +++
[pid  5649] <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0,
NULL) = 5650
[pid  5649] rt_sigaction(SIGINT, {0x7fc482642130, [], SA_RESTORER,
0x7fc481ba2ba0}, {0x7fc482623e20, [], SA_RESTORER, 0x7fc481ba2ba0}, 8) = 0
[pid  5649] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5649] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5650,
si_uid=1000, si_status=2, si_utime=0, si_stime=0} ---
[pid  5649] wait4(-1, 0x7ffff1620300, WNOHANG, NULL) = -1 ECHILD (No child
processes)
[pid  5649] rt_sigreturn()              = 0
[pid  5649] exit_group(2)               = ?
[pid  5649] +++ exited with 2 +++
[pid  5648] <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0,
NULL) = 5649
[pid  5648] rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER,
0x7fc481ba2ba0}, {0x7fc482623e20, [], SA_RESTORER, 0x7fc481ba2ba0}, 8) = 0
[pid  5648] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5648] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5649,
si_uid=1000, si_status=2, si_utime=0, si_stime=0} ---
[pid  5648] wait4(-1, 0x7ffff1620580, WNOHANG, NULL) = -1 ECHILD (No child
processes)
[pid  5648] rt_sigreturn()              = 0


The fix was to just create a the following directory:

mkdir -p
/home/martin/src/clasp/clasp/build/clasp/Contents/Resources/lisp/build/system/min-mps


Also 8GBytes of ram were not sufficient for the compilation. I had to
switch to a computer with 16GBytes.

Another stumbling block was that clasp needs a static version of libstc++.
Otherwise the llvm in externals-clasp won't link.

Regards, Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/clasp-devel/attachments/20150621/52766f53/attachment.html>


More information about the clasp-devel mailing list