Some updated notes on Haxe 3 and OpenFL are now available.
I love Haxe and NME. But they’re at times not the most pleasantly packaged of software. There are some definite lapses in checking the released versions for packaging problems, the nightly snapshots often have problems, and few of the setup scripts will work if you’re not using an apt-based system (i.e., Ubuntu). Having just installed on two 64bit machines running Arch Linux, the following are some notes on getting it all to work.
Flash Player
You’ll have to install the 32bit multilib stuff in order to install the Flashplayer standalone debug player. You definitely want this as the debug player seems to be the only way to get reports on null pointers and such in your Flash programs.
Enable the multilib repository by editing /etc/pacman.conf
to uncomment:
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
Then udate the repo DB and install the multilibs:
sudo pacman -Syu sudo pacman -S gcc-multilib
Accept everything pacman asks in running that command. Then install the player.
sudo packer -S flashplayer-standalone-debug
Haxe/NME Toolchain
The Haxe/NME stack includes a number of components. You could try installing these from the NME install script, but it’s based on Ubuntu and several components won’t work even after you adjust for that. Instead you need to cherry pick some parts and replace others. The rest of this sort of follows the script, but injects some variations and other steps.
The first thing to install is Neko. You want to do this from the AUR package, e.g.:
sudo packer -S neko
Installing from the tarball like the NME script does will result in a broken dependency with libpcre3. Manually compiling from source to fix that seems to be a rathole, and using the AUR package seems cleaner than jury-rigging a .so fix.
Next is Haxe itself. Tragically, you seemingly don’t want to pull this from the AUR package. I haven’t looked at it closely to confirm, but believe it pulls from SVN, which often leads to problems. Today on installing from that I get errors along the lines of “Missing Standard library.” (not an exact quote). Instead, download the stable release and patch up an install:
wget -c http://haxe.org/file/haxe-2.10-linux.tar.gz tar xzvf haxe-2.10-linux.tar.gz sudo mkdir -p /usr/lib/haxe/lib sudo chmod -R 777 /usr/lib/haxe/lib sudo cp -r haxe-2.10-linux/* /usr/lib/haxe sudo ln -s /usr/lib/haxe/haxe /usr/bin/haxe sudo ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib sudo ln -s /usr/lib/haxe/haxedoc /usr/bin/haxedoc haxe /usr/lib/haxe/std/tools/haxelib/haxelib.hxml sudo cp haxelib /usr/lib/haxe/haxelib haxe /usr/lib/haxe/std/tools/haxedoc/haxedoc.hxml sudo cp haxedoc /usr/lib/haxe/haxedoc sudo haxelib setup /usr/lib/haxe/lib wget -c http://www.haxenme.org/builds/hxcpp-2.10.3.zip sudo haxelib test hxcpp-2.10.3.zip
Finally, install NME and friends. Begin with the basic download.
sudo haxelib install nme
From here I have tremendous problems. Nothing will actually work yet, including the rest of the setup process; I simply get errors from tls.ndll about missing libopenssl.so.0.9.8. Seemingly there is a persistent problem in the packaging of NME such that it’s not properly searching the appropriate 64/32 bit Neko libraries. At this point you’re standing on the edge of a huge rathole. Compiling NME from source seems to be fairly complex to setup outside of the assumed Ubuntu environment. Installing that version of OpenSSL doesn’t work because it’s 32 bit. After repeatedly screwing around with this at length on several major releases of NME, short of setting up NME from source I don’t think you have any option here but the ugliest:
cd /usr/lib sudo ln -s libssl.so.1.0.0 libssl.so.0.9.8 sudo ln -s libcrypto.so.1.0.0 libcrypto.so.0.9.8 cd -
Now you can continue installing and hope you haven’t just set some lurking booby trap to slam you on some other project months down the road…
sudo haxelib run nme setup sudo haxelib install actuate sudo haxelib install svg sudo haxelib install swf
At this point things should work. However, I had trouble getting some of the RocketHaxe demos to compile with NME 3.5.4. It produced inscrutable and inexplicable errors about exceptions creating the output files. Updating to 3.5.5 seemed to fix these; I have no idea what else it broke in return. You can upgrade to a nightly build by downloading a new version from the NME builds repository. Then have haxelib switch to that version, e.g.:
sudo haxelib test nme-3.5.5-165-g354e1e6.zip
Test
Now you should be able to test everything out. Go into a random temporary directory and build a sample program:
nme create Addingtext cd AddingText nme build project.nmml flash flashplayerdebugger Export/flash/bin/AddingText.swf
If that works, it works. If it doesn’t… Slaugther a chicken and call a priest or something. Please leave any comments you have about improvements to this process or other notes. Thanks!
Further notes about setting up Haxe for Android development are here.