android
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
exitAndroid 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/tmpClone the source
cd $HOME # or cd /sdcard/src
git clone https://github.com/dex4er/perl5-android -b dexter/android/v5.20.0 perlConfigure
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 \
-UuserelocatableincBuild and install
make
make installDoes it work?
perl -VShould be similar to https://gist.github.com/dex4er/8392148#file-perl-v-txt
cpanminus
curl -kL cpanmin.us | perl - App::cpanminus -n
cpanm -vBroken packages
Some noticed issues:
- LWP (libwww-perl) https://github.com/libwww-perl/libwww-perl/pull/53
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 LWPAlternative DNS resolver can be used, ie. AnyEvent::DNS