Dear Yasuaki,
I have some good news --- I have successfully compiled ECL 16.1.2 under
Termux environment and then successfully compiled MAxima 5.38.1 based on
it. This is Android 5.1.1 running on Nexus 10 tablet, i.e. armv7l
architecture. I intend to also compile it on Android 6.0.1 on aarch64
architecture. I had to make a few changes to ECL which I will have to
submit to the maintainer at some point.
Now, everything (except the bits you noticed, like fib() etc which are
worked around in your init.lisp file) works fine except the system()
function (and invoking gnuplot which uses the same mechanism).
I used strace to track it down to the fact that even though Maxima was
compiled with "--posix-shell=/data/data/com.termux/files/usr/bin/bash",
still the plot2d() command causes execve() with hardcoded path "/bin/sh". I
have made sure that there are NO hardcoded instances of "/bin/sh" left in
Maxima, BUT it still happens.
This means it is coming from ECL and I see hardcoded "/bin/sh" here:
$ strings /usr/local/lib/ecl-16.1.2/defsystem.fas | fgrep --color "/bin/sh"
So I suspect it is coming from defsystem.fas. Now, you must have faced the
same issue when you compiled ECL 12.12.1 for use by Maxima 5.36.1 on
Android. But your sources on github don't contain any patches to ECL, so I
am writing to you to ask how you overcame this issue (because running your
maxima.pie binary in Termux works fine, but I wanted to have Maxima 5.38.1
and so I had to recompile everything from sources).
I will dig into ECL sources today trying to find this hardcoded "/bin/sh"
(it should really rely on the value of SHELL variable) but if you know the
answer it would save my time greatly. Thank you.
Kind regards,
Tigran