Thank you Martin,
I’ll work on setting up binary distributions with the next release of Clasp (a couple of weeks away). I’m wrestling with the build system and trying to speed the build process up.
Best,
.Chris.
On Jun 21, 2015, at 6:04 AM, Martin Kielhorn kielhorn.martin@gmail.com wrote:
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@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.
Another stumbling block was that clasp needs a static version of libstc++. Otherwise the llvm in externals-clasp won't link.
Regards, Martin