Skip to content
dex4er edited this page Nov 15, 2014 · 5 revisions

Installing Perl on Android (native).

Toolkit:

CCTools: https://play.google.com/store/apps/details?id=com.pdaxrom.cctools

With profile: gcc

With add-ones: binutils, git (https://www.dropbox.com/sh/wbduq756bvd2skc/cgPjv6iGOH just unzip in /data/data/com.pdaxrom.cctools/root)

You can login via dropbear server (port 22022) after dropbear add-one is installed.

Uninstall perl add-one if already installed.

Precompiled Perl binaries:

cd /sdcard/CCTools/backup
wget --no-check-certificate https://dl.dropboxusercontent.com/s/wwsq0nfyxgazz6p/perl_5.18.2-30-ge7e507e_armel.zip
cd /data/data/com.pdaxrom.cctools/root
umask 0002
unzip /sdcard/CCTools/backup/perl_5.18.2-30-ge7e507e_armel.zip 'cctools/*'

Building from source

Environment

The source files should be on ext3 filesystem. If /data partition has too less free space, you can prepare the new one. In such case, root is required:

id # ie.: uid=10205 gid=10205 groups=1015,1028,3003
su
id # uid=0 gid=0
dd if=/dev/zero of=/sdcard/src.bin bs=1024 count=$((512*1024))
mke2fs -f /sdcard/src.bin
tune2fs -j /sdcard/src.bin
mknod /dev/block/loop8 b 7 8 # check if is it a free number before
losetup /dev/block/loop8 /sdcard/src.bin 
mkdir -p /sdcard/src
mount -t ext3 /sdcard/src.bin /sdcard/src
chown -R 10205:10205 /sdcard/src # previous uid:gid
exit

Android doesn't have global temporary directory. You should set up some environment variables:

mkdir -p /data/data/com.pdaxrom.cctools/root/cctools/tmp
chmod 1777 /data/data/com.pdaxrom.cctools/root/cctools/tmp
export TMPDIR=/data/data/com.pdaxrom.cctools/root/cctools/tmp

Clone the source

cd $HOME # or cd /sdcard/src
git clone https://github.com/dex4er/perl5-android -b dexter/android/v5.20.0 perl

Configure

export SYSROOT=/data/data/com.pdaxrom.cctools/root/cctools
cd perl
sh Configure -des \
-Dsysroot=$SYSROOT \
-Dlibpth="/system/lib $SYSROOT/lib" \
-Dusrinc=$SYSROOT/arm-linux-androideabi/include \
-Dprefix=$SYSROOT \
-Uuserelocatableinc

Build and install

make
make install

Does it work?

perl -V

Should be similar to https://gist.github.com/dex4er/8392148#file-perl-v-txt

cpanminus

curl -kL cpanmin.us | perl - App::cpanminus -n
cpanm -v

Broken packages

Some noticed issues:

Disable tests because of broken t/local/get.t

  • CCTools

Name services and DNS don't work for cctools sessions (http://code.google.com/p/cctools/issues/detail?id=6). It means that ie. LWP can't resolve host names. Workaround for cpanminus:

cpanm --no-wget -n LWP

Alternative DNS resolver can be used, ie. AnyEvent::DNS