robert-dodier / maxima-jupyter

A Maxima kernel for Jupyter, based on CL-Jupyter (Common Lisp kernel)
Other
185 stars 31 forks source link

[Solved] Installation under Termux ARM64 #125

Closed defencedog closed 8 months ago

defencedog commented 8 months ago

As per author's request I am starting a new thread because I already have successflly installed common-lisp-jupyter with maxima-interface. However, its syntax is really cumbersome!

Author will find that my environment of sbcl, asdl, quicklisp, maxima is properly configured & detailed logs are available here.

I cloned the repo in ~/quicklisp/local-projects ...the real problem to begin with is that within maxima :lisp (require 'asdf) doesn't work

Maxima 5.47.0 https://maxima.sourceforge.io
using Lisp SBCL 2.3.3
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) :lisp (require 'asdf)

Maxima encountered a Lisp error:

 Don't know how to REQUIRE ASDF.
See also:
  The SBCL Manual, Variable SB-EXT:*MODULE-PROVIDER-FUNCTIONS*
  The SBCL Manual, Function REQUIRE

Automatically continuing.
To enable the Lisp debugger set *debugger-hook* to nil.
(%i1) load("load-maxima-jupyter.lisp");
;
; compilation unit aborted
;   caught 1 fatal ERROR condition

loadfile: failed to load load-maxima-jupyter.lisp
 -- an error. To debug this try: debugmode(true);
robert-dodier commented 8 months ago

I suspect that Maxima was compiled with SBCL to create an executable image and that ASDF is not in that image, and the executable doesn't have the usual SBCL machinery available. Two ideas to try:

(1) Build Maxima with SBCL, and ensure that ASDF is in the image. I think (require 'asdf) somewhere before dumping the image could be enough.

(2) Build Maxima with SBCL, but create a loadable image instead of an executable image. Then, when Maxima is run, the SBCL runtime will have ASDF and other stuff available. See the output of configure --help to get the option for creating a loadable image for SBCL.

Let me know how it goes, I can try to help with details.

defencedog commented 8 months ago

Before I recompile [I am just a chemical engineer btw so its bit difficult to do again] ...please check previous logs

install_aarch64.txt config_aarch64.txt

Adding default config.log file [above files i generated using tee] config.txt

robert-dodier commented 8 months ago

config.txt shows that the option --enable-sbcl-exec was given to the configure script. That says that an executable image will be created, instead of a loadable image.

Therefore I believe what you need to do is to give the option --enable-sbcl (instead of --enable-sbcl-exec) and then rebuild Maxima, i.e.

$ sh bootstrap
$ ./configure --enable-sbcl --prefix=path/to/desired/directory
$ make
$ make install

--enable-sbcl says that a loadable image (named maxima.core) will be created. Then Maxima is actually executed as sbcl --core path/to/maxima.core and same run time stuff is available as when just executing sbcl at the command line. In particular, I expect :lisp (require 'asdf) to succeed when issued at the Maxima console input prompt, or just (require 'asdf) in Lisp source files which are loaded into Maxima.

A minor note: --with-sbcl isn't needed if the SBCL executable is named sbcl. But the presence of --with-sbcl is harmless.

defencedog commented 8 months ago

~Ok the asdf error is now vanished thanks to you.~ I invoked maxima using sbcl --core $PREFIX/local/lib/maxima/5.47.0/binary-sbcl/maxima.core --end-runtime-options --eval '(cl-user::run)' then issued load("load-maxima-jupyter.lisp");

Following errors

(%i1) :lisp (load "~/quicklisp/setup.lisp")

T
(%i1) load("load-maxima-jupyter.lisp");
WARNING: System definition file #P"/data/data/com.termux/files/home/quicklisp/dists/quicklisp/software/pzmq-20210531-git/pzmq.asd" contains definition for system "pzmq-compat". Please only define "pzmq" and secondary systems with a name starting with "pzmq/" (e.g. "pzmq/test") in that file.
WARNING: System definition file #P"/data/data/com.termux/files/home/quicklisp/dists/quicklisp/software/pzmq-20210531-git/pzmq.asd" contains definition for system "pzmq-test". Please only define "pzmq" and secondary systems with a name starting with "pzmq/" (e.g. "pzmq/test") in that file.
WARNING: System definition file #P"/data/data/com.termux/files/home/quicklisp/dists/quicklisp/software/pzmq-20210531-git/pzmq.asd" contains definition for system "pzmq-examples". Please only define "pzmq" and secondary systems with a name starting with "pzmq/" (e.g. "pzmq/test") in that file.
While evaluating the form starting at line 4, column 0
  of #P"/data/data/com.termux/files/home/quicklisp/local-projects/maxima-jupyter/load-maxima-jupyter.lisp":
;
; compilation unit aborted
;   caught 1 fatal ERROR condition

loadfile: failed to load load-maxima-jupyter.lisp
 -- an error. To debug this try: debugmode(true);

line 4 refers to asdf again :( SmartSelect_20240105_013428_Via

defencedog commented 8 months ago

Weird I move the git cloned folder out of local-projects folder to $HOME & again tried ...it worked!

(%i1) load("load-maxima-jupyter.lisp");
To load "maxima-jupyter":
  Load 1 ASDF system:
    maxima-jupyter
; Loading "maxima-jupyter"
................To load "iterate":
  Load 1 ASDF system:
    asdf
  Install 1 Quicklisp release:
    iterate
; Fetching #<URL "http://beta.quicklisp.org/archive/iterate/2021-05-31/iterate-release-b0f9a9c6-git.tgz">
; 338.01KB
==================================================
346,126 bytes in 0.14 seconds (2347.32KB/sec)
; Loading "iterate"
[package iterate]...........................
To load "maxima-jupyter":
  Load 1 ASDF system:
    maxima-jupyter
; Loading "maxima-jupyter"
..................................................
[package maxima-jupyter]..........
(%o1)                      load-maxima-jupyter.lisp
(%i2) jupyter_system_install(true, "pkg/");
Creating directories.
Installing kernel spec file /data/data/com.termux/files/home/maxima-jupyter/pkg/usr/local/share/jupyter/kernels/maxima/kernel.json
Installing kernel resources to /data/data/com.termux/files/home/maxima-jupyter/pkg/usr/local/share/jupyter/kernels/maxima/.
Installing Quicklisp bundle to /data/data/com.termux/files/home/maxima-jupyter/pkg/usr/local/share/maxima-jupyter/
Installing local systems to /data/data/com.termux/files/home/maxima-jupyter/pkg/usr/local/share/maxima-jupyter/local-projects/
(%o2)                                false
(%i3)
robert-dodier commented 8 months ago

Terrific, I'm glad to hear you got it working. For the record, I added a paragraph in the Readme.md to try to clarify this point about whether ASDF is available when Maxima is executed. See commit [ bb0f5df ].