i.MX515 Project
Debian/Ubuntu Mono porter boxin category Linux Distributions
proposed by directhex on 17th September 2010 (accepted on 26th September 2010)
Moonlight plugin, in more detail
posted by directhex on 12th October 2010
Time for some specifics on what was required to make Moonlight work on ARM.
There were two issues, which I'll discuss separately.
Firstly, there's Firefox's plugin ABI. In order to ensure that you don't try to install plugins intended only for one architecture onto a different architecture, Firefox assigns a browser an ABI, such as Linux_x86_64-gcc3 or Linux_ia64-gcc2. This is detailed here: https://developer.mozilla.org/en/XPCOM_ABI
Now, the way we build Moonlight packages doesn't technically need this info (as we're not generating an XPI file), but Moonlight's build system makes use of firefox-xpi.m4 for some build checks. And, infuriatingly, there is no XPCOM ABI defined for Linux ARM. So... cheap workaround: edit firefox-xpi.m4 to set the null value, Linux_UnknownABI, on Linux/ARM
Next, there was some untested API skew upstream. Some portions of the Moonlight plugin code are duplicated - one version for platforms with official Microsoft-provided binary codecs (i386 and AMD64), and one version for other platforms. At some point in the past, the method signature in one of these files was changed in the codec version of a file - but not the nocodec version. As a result, the nocodec version no longer compiled. I told the Moonlight upstream about the problem, and they committed a simple fix to the API in the nocodec version of the file, fixing compilation on ARM, PowerPC, Itanium, etc.
Here's a picture: