UDPATE: I've replaced all occurrences of "/bin/sh" in ECL with "/data/data/com.termux/files/usr/bin/bash" and recompiled it. Now plotting works fine in Maxima 5.38.1. So, to summarise, I have a fully working ECL 16.1.2 + Maxima 5.38.1 on armv7l in Termux running on Android 5.1.1. I will now try to compile all this stuff on aarch64 architecture on Android 6.0.1 (also inside Termux). This will give us a text-based ("terminal") version of Maxima on pocket devices like mobiles and tablets (for those who prefer Linux terminal to GUI :)
On 27 September 2016 at 07:10, Tigran Aivazian <aivazian.tig...@gmail.com> wrote: > 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