I originally wrote a very long post about this but somehow it wasn't probably saved while restarting so you'll have the benefit of a shorter version.
I've decided to stop focusing on Perl for Android for now. This is not to say I'll never get back to it, but that I definitely won't be involved with it in the near future.
I assume many are wondering about the current status of Perl on Android. Starting with "there is Perl for Android already" and ending with "it probably isn't the Perl you wish you had" seems like a good summarize. There is a patched-but-not-documented Perl 5.10.1 cross-compiled for Android. It might be relatively old and missing some very useful core modules, but it works for most uses. Also, you could hack around what's missing.
The reason I decided to step back is because I don't feel the Android environment is mature and ripe enough to develop native applications for it. For example, you have no linker to work with to find out about shared libraries and when a binary has an error, the error string you get is "not found" which it completely pointless to a developer.
Another reason I found important is that Google don't seem to maintain a good knowledge base on how to develop for Android so you end up finding a lot of issues that there are no record of anyone ever encountering them. Google themselves don't seem to document many things which seem important to note down.
Last but not least is that the team around Android (excluding SL4A) are sometimes oblivious to issues and sometimes completely uncaring. People ignore you constantly when you raise an issue which isn't simple enough to answer. Don't wait for a "sorry, can't help you there" answer. It feels like you're always working with first tier and never with someone who actually knows enough about the system to help you with difficult matters. Documentation is non-existent.
So, if you're feel like taking a jab at it, this should save you some time:
- The people over at #Debian are amazing. They know more about Android than almost anyone you'll meet that works on it or with it. Same goes for the #GCC people. They're both very kind and helpful.
- Cross-compiling in Perl is not documented very well and not everyone knows how to do it. It's worthwhile exploring if you have an iron will and you'll probably do the entire community a favor. I would support a grant on this matter. Most likely you won't want to go through this path.
- Native compiling is possible. I suggest picking up a Debian ARM-based QEMU image and hacking on that.
- While Perl compiles great on GNU libc, Android uses Bionic libc, which is awful. Again, the people at #Debian would know more about it than most Android developers (at least more than anyone I got to meet over a relatively long period). Instead of setting up Bionic on Debian, you can try to statically compile Perl so it would use GNU libc. This is where #GCC shines. Not the busiest channel but very helpful people!
Also, I have a few magic oneliners for compiling Perl statically, but they never seem to include everything statically all the way. It might be a start.
I want to thank a lot of people, so if you're tired of me thanking people, you can stop reading now. :)
- Damon Kohler who runs SL4A: for helping me with so much throughout this experience. Damon also maintains the Python build for SL4A and might be able to help with static compilation. Also, he's a great guy! :)
- Gabor Szabo: the crazy guy who seems to be everywhere. Got me interested in Android, pushed me towards YAPC::EU (which I would probably miss without him) and countless other things I could only fit in a series of posts.
- Nicholas Clark: had the courage of answering a long email of mine on #p5p after a while and say "ok, I have no idea how to do what you want, but here are a few ideas!" I'm happy I was able to say "thank you" in person.
- Steffen Müller: thank you for the technical help and the emotional support throughout compilation frustration. :)
- The people at #Debian and #GCC: you guys rock, end of story!
If you ever find yourself wanting to tackle this issue, let me know, I might be able to help you.
Catch you on the flip side!