4

This was posted on MSE originally.

Please note that my only training in programming of any kind is in the context of mathematics, specifically group theory. Thus, please use minimal technical language.

The Problem:

I'm trying to get GAP on my Android phone.

(I'm using a ZTE Blade V8. I doubt that matters.

Update: I'm using a Samsung Galaxy A40 these days.)

What I have so far:

I found on the GAP forum that someone called Matan Ziv-Av compiled a version of GAP for Android that can be found here (and more specifically here).

This explains something I don't understand.

I have downloaded the latest file, last updated in 2015 (so it's gap4r6), but, upon opening it with RAR, I have been unable thus far to run the programme.

Here is a screenshot of the file I think I need to click on to get started:

(Click image to enlarge it)

IMG:

I can't seem to get it working.

Please help :)

Edit:

Using Termux with the file in the screenshot above, I got this:

(Click image to enlarge it)

IMG:

Shaun
  • 3
  • 11
  • Have you tried installing Terminal Emulator for Android or Termux? Based on the announcement link you should be able to install either and get a Linux like environment to run your package. Of course perhaps a required step is to understand how to get around in Linux/Unix, your level of ability on that point is unclear. – Morrison Chang Oct 30 '18 at 05:28
  • @MorrisonChang I've tried the former, no luck there - uninstalled. I'm downloading the latter now. – Shaun Oct 30 '18 at 05:33
  • I'm not familiar with Linux in the slightest. – Shaun Oct 30 '18 at 05:42
  • 1
    Sorry don't know Termux, but this seems related: Where is the folder that Termux defaults to?. Another path could be to install your 'GAP' software on a regular PC running Linux and use an Android SSH client to remote into it, you'll need to have a network connection to make that work. Either way you'll need to have an understanding of Linux command line even if you got GAP on Android working. – Morrison Chang Nov 05 '18 at 05:08
  • 1
    @Shaun do you always get that getprop message when opening termux? That indicates that something went wrong during the app installation (or that something is weird on your phone). Could you try reinstalling the app and opening termux again to see if it persists? This github issue (sort of) describes the error: https://github.com/termux/termux-app/issues/849 –  Nov 14 '18 at 15:31
  • @Grimler Yes. I've just tried reinstalling Termux now and, unfortunately, it made no difference. As for GAP, it's not really "installed," it's just sort of downloaded and then you run (the equivalent of) an exe file, and the same is true on a computer; so deleting it then downloading again is unlikely to work. – Shaun Nov 14 '18 at 15:50
  • @Shaun the file you tried opening is the file you should run. I tried running it and there's some problems though: it will only work on android 4 and older (due to not being position independent executable (PIE)) and only works on the processor architecture arm (which your phone is AFAIK). Anyways, I've added an answer, but it requires a working termux environment, so that's something that need to be addressed –  Nov 14 '18 at 16:28
  • @Shaun how did you open termux? By pressing the app icon or by "sharing" the gap executable to termux? –  Nov 14 '18 at 16:29
  • @Grimler I shared them. – Shaun Nov 14 '18 at 16:36
  • @Shaun try just opening the termux (after reinstalling it). Might be that sharing the file (without opening the app once first) makes the bootstrap installation fails and then gives the getprop message you observed –  Nov 14 '18 at 16:37
  • Still no luck, @Grimler, although a different output is produced. I'm quite busy at the moment but, once I have time, I'll include a screenshot of what I get in the question. – Shaun Nov 14 '18 at 16:44

3 Answers3

3

This is how I got it to run.

I'm using the download from here GAP for Android

Preparations: In termux type termux-setup-storage when prompted to give termux storage permission select allow. This is to give access to the sdcard in termux.

  1. Make sure your connected to the internet.
  2. In termux, type pkg install wget press enter.
  3. Now to download the file type wget my.svgalib.org/android/gap4r5-1.tar.gz then hit enter.

  4. Extract the file type tar -zxf gap4r5-1.tar.gz hit enter.

  5. Type cd gap4r5 hit enter.

  6. Now we need to make a couple of changes to the script for it to run on termux. We will copy it to the sdcard Download file to be able to edit it. type cp gap.sh /storage/emulated/0/Download/ hit enter.

  7. Now open the file gap.sh in a text editor, I used Notepad++ for Android. This file is in your Download folder.

  8. Edit line #1 to look like this #!/data/data/com.termux/files/usr/bin/bash

  9. Edit line #23 to look like this GAP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" Its very important on this line to have the spaces exactly where they are and nowhere else. then save the file. (Thanks for this line goes to Dave Dopson at this post Getting the source directory of a Bash script from within )

  10. Go back to termux and type cp /storage/emulated/0/Download/gap.sh . (the period at the end is important) and hit enter.

  11. Now you are ready to start using the program. to run the program make sure you are in the folder gap4r5 and type ./gap.sh. (To get to this folder when you start termux type cd gap4r5 or wherever you are in termux type cd hit enter and type cd gap4r5 and hit enter).

Good Luck!

Sruly
  • 988
  • 2
  • 13
  • 28
  • I couldn't do step 6. My phone denied Termux the permission to execute the demand. – Shaun Jan 11 '19 at 12:43
  • 1
    Did you run termux-setup-storage and give termux the permission? – Sruly Jan 11 '19 at 14:00
  • I did, and I've tried it multiple times since that. It hasn't worked, I'm afraid. See this image where I get stuck on part 4. I'm sorry that this is taking me so long. (In my defence, I haven't been trying this out much over the last few weeks.) – Shaun Feb 27 '19 at 22:10
  • From the error message it seems there may be something wrong with the tar file. Can you try re-downloading the file (step #3) again. – Sruly Feb 28 '19 at 22:08
  • @Shaun Check the MD5 hash of the file and make sure it matches this "12CC0203386FB891D9DDCA86222797FD". If not try re-downloading the file (step #3) again. – Sruly Feb 28 '19 at 22:21
  • Okay, it works now up until I try to run it. See this image. – Shaun Apr 20 '19 at 13:01
  • @Shaun It seems you are denied access to the file. Do you have root access on your device? If yes then you can try running is as root. If it works you should change the user of the file so you can run it as a regular user. – Sruly Apr 23 '19 at 11:16
2

Since GAP is open-source you can download the sources and compile them on device in termux or another terminal emulator (though other terminal emulators don't provide the compilation tools AFAIK).

There are quite detailed compilation instructions in the "README.buildsys.md" file in the gap source directory, have a look at that for some more details. Here are the steps I did to compile it (after opening a termux shell), lines starting with "#" are comments and are hence suppose to help you understand what the following line(s) does.

# Install programs needed to compile gap
pkg install make clang m4
# Install some optional dependencies that probably enhance your gap experience
apt install readline-dev libgmp-dev
# Download sources
wget https://www.gap-system.org/pub/gap/gap-4.10/tar.gz/gap-4.10.0.tar.gz
# Extract sources and change to that folder
tar -xf gap-4.10.0
cd gap-4.10.0
# Create a build folder to keep source directory clean
mkdir build
cd build
# Configure the package, if you want special features you probably want to change this line
../configure
# Compile the package
make
# Run GAP!
./gap

Please let me know if you run into any errors (I might have missed some dependencies) or if I should explain something in more details. Also note that you have to compile and run gap from termux's folder structure (/data/data/com.termux/files/), android doesn't allow executable files in the shared storage (like the external and internal sdcard).

1

2023-08 Update

Only use Termux from F-Droid or the github repository as the version from Google Play store is no longer supported.

Be aware that Termux may be unstable on Android 12+, as Android OS will kill any (phantom) processes greater than 32 (limit is for all apps combined) and also kill any processes using excessive CPU. See README section for details and links to workarounds

0. Uninstall Google Play Store Termux

  • If Termux was installed from Google Play Store, save important data off of device. (If you don't have any important data, skip this step).
  • Delete the Google Play Store version of Termux

1. Install F-Droid

When Termux updates, it will be easier to manage from F-Droid so first install F-Droid

  • In your mobile browser go to https://f-droid.org/
  • Click on "Download F-Droid"
  • Install F-Droid by clicking on the downloaded package. Note if Android prompts you to "Open with", choose 'Package installer'

If you are having difficulty installing F-Droid, follow Step 2 to see if your browser is enabled to "Install Unknown Apps" and allow.

2. Give Install permission to F-Droid

  • Go into Settings -> Search (magnifying glass icon)
  • In search bar type in "Install Unknown Apps"
  • Tap on "Install unknown apps Apps > Special app access"
  • On the "Special access" / "Special app access" screen scroll down to "Install unknown apps" and click
  • On the "Install unknown apps" screen look for F-Droid and click
  • For the "F-Droid" app, enable "Allow from this source"

3. Install Termux from F-Droid

  • Open F-Droid
  • Tap the green search action button in the lower right.
  • Type in "Termux"
  • Tap on the one that reads "Termux Terminal emulator with packages" Note on the app store page there should be 'Versions' expandable which should have 0.118.0 or higher.
  • Install Termux

You should now have Termux in your list of available apps.

4. Launching and upgrading Termux packages

  • Launch Termux

Linux distributions support package management so the easiest way to install is via a package manager. Termux uses one as well which is documented in the wiki. Following the wiki use the command highlighted in grey:

  • $pkg upgrade

Answer with 'Yes' to upgrades unless there is a known conflict with an existing installed package.

4a. Check if the software package already exists

As building from source takes storage space and knowledge it is best to check if what you are looking for already exists as a package.

Running the command in Termux:

  • $pkg search gap

Listed out

gap/stable 4.12.2 aarch64

Gap is a system for computational discrete algebra, with particular emphasis on Computational Group Theory

gap-packages/stable 4.12.2 all

Packages for gap

gap-static/stable 4.12.2 aarch64

Static libraries for gap

5. Install software package

Run the command

  • $pkg install gap

and enter 'Yes' you want to install. Should install gap at a cost of around 204 MB.

6. Run software package

Run gap as in other Linux/Unix-like environments

  • $gap

7. Leave Termux

Termux when you swipe away will maintain the session and have a status bar notification telling the user that it is still running to keep its state.

Removing the notification requires stopping Termux from running. To end Termux just execute

  • $exit

Notes

Termux behaves similar to a Linux/Unix-like system but out of the box you are limited to storing things within Termux app itself.

Do check the Termux Wiki to get familiar. If needed there are other Development environments available for Termux.

Morrison Chang
  • 4,983
  • 1
  • 22
  • 25