I'm continuing to try to compile on termux. I haven't been successful with the latest version that I've tried so far (2.2.10.128-c6465a4de). As also noted on https://bugs.launchpad.net/sbcl/+bug/1972063,
the compilation of the contrib packages fails to compile with errors like:
//entering make-target-contrib.sh
make: Entering directory '/data/data/com.termux/files/home/sbcl-master/sbcl/contrib'
make MODULE_REQUIRES="" -C sb-posix
make[1]: Entering directory '/data/data/com.termux/files/home/sbcl-master/sbcl/contrib/sb-posix'
../..//src/runtime/sbcl --noinform --core ../..//output/sbcl.core --lose-on-corruption --disable-debugger --no-sysinit --no-userinit --load ../make-contrib.lisp "sb-posix" </dev/null
; Note: Building "sb-posix"
While evaluating the form starting at line 140, column 0
of #P"/data/data/com.termux/files/home/sbcl-master/sbcl/contrib/sb-posix/../make-contrib.lisp":
Unhandled SIMPLE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001FE0003}>:
C compilation failed
unhandled condition in --disable-debugger mode, quitting
make[1]: *** [../asdf-module.mk:41: ../..//obj/sbcl-home/contrib/sb-posix.fasl] Error 1
make[1]: Target 'all' not remade because of errors.
make[1]: Leaving directory '/data/data/com.termux/files/home/sbcl-master/sbcl/contrib/sb-posix'
make: *** [Makefile:37: sb-posix.fasl] Error 2
I finally figured out that make-target-contrib.sh can be used to compile the contrib packages without recompiling the whole code. Then, found out that this step was failing:
../..//src/runtime/sbcl --noinform --core ../..//output/sbcl.core --lose-on-corruption --disable-debugger --no-sysinit --no-userinit --load ../make-contrib.lisp "sb-posix" </dev/null
I added print outs in make-contrib.lisp and found out that in the function run-defs-to-lisp, the invocation to RUN-C-COMPILER was not returning 0, but saying that the process signaled with code 31.
I was able to create a test case where I compile a very simple c program:
(sb-ext:process-exit-code (sb-ext:run-program "gcc" (list "a.c") :search t :input nil :output t))
where a.c was just:
int main (void) { return 0; }
With the last sbcl version that I had working, I was getting exit code zero. But with the compiled sbcl above, I was getting process signaled with error code 31.
Any suggestions as to where to start looking for debugging this issue?
I'm continuing to try to compile on termux. I haven't been successful with the latest version that I've tried so far (2.2.10. 128-c6465a4de) . As also noted on https:/ /bugs.launchpad .net/sbcl/ +bug/1972063,
the compilation of the contrib packages fails to compile with errors like:
//entering make-target- contrib. sh data/com. termux/ files/home/ sbcl-master/ sbcl/contrib' data/com. termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix' src/runtime/ sbcl --noinform --core ../..// output/ sbcl.core --lose- on-corruption --disable-debugger --no-sysinit --no-userinit --load ../make- contrib. lisp "sb-posix" </dev/null data/com. termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix/ ../make- contrib. lisp":
{1001FE0003} >:
make: Entering directory '/data/
make MODULE_REQUIRES="" -C sb-posix
make[1]: Entering directory '/data/
../..//
; Note: Building "sb-posix"
While evaluating the form starting at line 140, column 0
of #P"/data/
Unhandled SIMPLE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
C compilation failed
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001FE0003}> :DEBUGGER- DISABLED- HOOK #<SIMPLE-ERROR "C compilation failed" {10034E34B3}> #<unused argument> :QUIT T) DEBUGGER- HOOK* #<SIMPLE-ERROR "C compilation failed" {10034E34B3}>) obj/from- self/contrib/ sb-posix/ generated- constants. lisp") DEPENDS- ON ("sb-grovel") :COMPONENTS ((:FILE "defpackage") (:FILE "strtod" :DEPENDS-ON ("defpackage")) (:FILE "designator" :DEPENDS-ON ("defpackage")) (:FILE "macros" :DEPENDS-ON ("designator")) (:SB-GROVEL- CONSTANTS- FILE "constants" :PACKAGE :SB-POSIX :DEPENDS-ON ("defpackage")) (:FILE "interface" :DEPENDS-ON ("constants" "macros" "designator"))))) data/com. termux/ files/home/ sbcl-master/ sbcl/contrib/ make-contrib. lisp")) SIMPLE- EVAL-IN- LEXENV (LET ((FORM (WITH-OPEN-FILE (F #) (LET # # #)))) (LET ((EVAL (GETF FORM :EVAL))) (WHEN EVAL (EVAL EVAL))) (LET ((BINDINGS (GETF FORM :BIND)) (*COMPILE-VERBOSE* NIL)) (PROGV (MAPCAR (QUOTE FIRST) BINDINGS) (MAPCAR (QUOTE SECOND) BINDINGS) (PERFORM FORM)))) #<NULL-LEXENV>) LOAD-AS- SOURCE) (LET ((FORM (WITH-OPEN-FILE (F #) (LET # # #)))) (LET ((EVAL (GETF FORM :EVAL))) (WHEN EVAL (EVAL EVAL))) (LET ((BINDINGS (GETF FORM :BIND)) (*COMPILE-VERBOSE* NIL)) (PROGV (MAPCAR (QUOTE FIRST) BINDINGS) (MAPCAR (QUOTE SECOND) BINDINGS) (PERFORM FORM)))) 10) LOAD-AS- SOURCE) (LET ((FORM (WITH-OPEN-FILE (F #) (LET # # #)))) (LET ((EVAL (GETF FORM :EVAL))) (WHEN EVAL (EVAL EVAL))) (LET ((BINDINGS (GETF FORM :BIND)) (*COMPILE-VERBOSE* NIL)) (PROGV (MAPCAR (QUOTE FIRST) BINDINGS) (MAPCAR (QUOTE SECOND) BINDINGS) (PERFORM FORM)))) :CURRENT-INDEX 10) %DO-FORMS- FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT: LOAD-AS- SOURCE) {1001FB40CB}> #<SB-C::SOURCE-INFO {1001FB4083}> SB-C::INPUT- ERROR-IN- LOAD) LOAD-AS- SOURCE #<SB-INT: FORM-TRACKING- STREAM for "file /data/data/ com.termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix/ ../make- contrib. lisp" {1001FB2183}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading") :LOAD-STREAM- 1 :IN LOAD) #<SB-INT: FORM-TRACKING- STREAM for "file /data/data/ com.termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix/ ../make- contrib. lisp" {1001FB2183}> NIL) :CALL-WITH- LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL: :LOAD-STREAM- 1 :IN LOAD) {76B409075B}> #<SB-INT: FORM-TRACKING- STREAM for "file /data/data/ com.termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix/ ../make- contrib. lisp" {1001FB2183}> NIL #<SB-INT: FORM-TRACKING- STREAM for "file /data/data/ com.termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix/ ../make- contrib. lisp" {1001FB2183}>) contrib. lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST :ERROR :EXTERNAL-FORMAT :DEFAULT) :PROCESS- EVAL/LOAD- OPTIONS ((:LOAD . "../make- contrib. lisp")) ) :TOPLEVEL- INIT) :START- LISP)) INTERRUPTS- BODY-3" :IN SB-IMPL: :START- LISP)) :%START- LISP)
0: (SB-DEBUG:
1: (SB-DEBUG::RUN-HOOK *INVOKE-
2: (INVOKE-DEBUGGER #<SIMPLE-ERROR "C compilation failed" {10034E34B3}>)
3: (ERROR "C compilation failed")
4: (RUN-DEFS-TO-LISP (("constants" . :SB-POSIX)) "../../
5: (PERFORM (DEFSYSTEM "sb-posix" :DEFSYSTEM-
6: ((LAMBDA NIL :IN "/data/
7: (SB-INT:
8: (EVAL-TLF (LET ((FORM (WITH-OPEN-FILE (F #) (LET # # #)))) (LET ((EVAL (GETF FORM :EVAL))) (WHEN EVAL (EVAL EVAL))) (LET ((BINDINGS (GETF FORM :BIND)) (*COMPILE-VERBOSE* NIL)) (PROGV (MAPCAR (QUOTE FIRST) BINDINGS) (MAPCAR (QUOTE SECOND) BINDINGS) (PERFORM FORM)))) 10 NIL)
9: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:
10: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:
11: (SB-C::
12: (SB-INT:
13: ((LABELS SB-FASL:
14: (SB-FASL:
15: (LOAD #P"../make-
16: (SB-IMPL:
17: (SB-IMPL:
18: ((FLET SB-UNIX::BODY :IN SB-IMPL:
19: ((FLET "WITHOUT-
20: (SB-IMPL:
unhandled condition in --disable-debugger mode, quitting module. mk:41: ../..// obj/sbcl- home/contrib/ sb-posix. fasl] Error 1 data/com. termux/ files/home/ sbcl-master/ sbcl/contrib/ sb-posix'
make[1]: *** [../asdf-
make[1]: Target 'all' not remade because of errors.
make[1]: Leaving directory '/data/
make: *** [Makefile:37: sb-posix.fasl] Error 2
I finally figured out that make-target- contrib. sh can be used to compile the contrib packages without recompiling the whole code. Then, found out that this step was failing: src/runtime/ sbcl --noinform --core ../..// output/ sbcl.core --lose- on-corruption --disable-debugger --no-sysinit --no-userinit --load ../make- contrib. lisp "sb-posix" </dev/null
../..//
I added print outs in make-contrib.lisp and found out that in the function run-defs-to-lisp, the invocation to RUN-C-COMPILER was not returning 0, but saying that the process signaled with code 31.
I was able to create a test case where I compile a very simple c program: process- exit-code (sb-ext:run-program "gcc" (list "a.c") :search t :input nil :output t))
(sb-ext:
where a.c was just:
int main (void) { return 0; }
With the last sbcl version that I had working, I was getting exit code zero. But with the compiled sbcl above, I was getting process signaled with error code 31.
Any suggestions as to where to start looking for debugging this issue?