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.xztar 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.sha1It 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@temple.edu>
Date: Tue May 19 22:11:10 2015 -0400
externals-clasp
commit 35ac32fa1647407d2e577241299d094d8d40e04f
Author: Christian Schafmeister <
meister@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@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.