Mobile/Build/cs2007q3
Contents
Introduction
These are instructions for building Fennec for Nokia Maemo using the Scratchbox cross-compilation environment on Linux.
Maemo 5 (Fremantle)
We currently use the Maemo 4 SDK for our official Firefox for Maemo 1.x builds, because Maemo 5 is not compatible with the Nokia N800/N810. If you want to build with the Maemo 5 SDK, see the instructions at /Fremantle.
Maemo 4 (Chinook)
sudo su echo "deb http://scratchbox.org/debian/ stable main" >> /etc/apt/sources.list apt-get update apt-get install scratchbox-toolchain-cs2007q3-glibc2.5-arm6 exit ############## # do the section below if on ubuntu 8.04, skip for Ubuntu 7.1. Other OS may # also have this problem. If you see a problem when running nsinstall that # says something "mmap - permission denied", come back here an try this. # Ubuntu 8.10 sets vm.mmap_min_addr /etc/sysctl.d/10-process-security.conf # So it is probably better to set the following variables in # /etc/sysctl.d/40-scratchbox # and then run 'sudo invoke-rc.d procps restart' ############## # add the following to /etc/sysctl.conf vm.vdso_enabled = 0 vm.mmap_min_addr = 4096 Then run sudo sysctl -p ############## # Continue from here for all versions of Ubuntu, including 7.10 ############## wget http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.1.sh sudo chmod a+x ./maemo-scratchbox-install_4.0.1.sh sudo ./maemo-scratchbox-install_4.0.1.sh -s /scratchbox sudo /scratchbox/sbin/sbox_adduser $USER yes # you may need to relog into your machine here. sudo /scratchbox/sbin/sbox_ctl start wget http://tablets-dev.nokia.com/4.0.1/maemo-sdk-install_4.0.1.sh chmod +x maemo-sdk-install_4.0.1.sh bash maemo-sdk-install_4.0.1.sh /scratchbox/login sb-conf setup CHINOOK-ARMEL-2007 -c cs2007q3-glibc2.5-arm6 \ -d cputransp:debian-etch:doctools:maemo3-tools:perl \ -t /scratchbox/devkits/cputransp/bin/qemu-arm-cvs-m sb-conf rootstrap CHINOOK-ARMEL-2007 \ http://repository.maemo.org/stable/4.0.1/armel/maemo-sdk-rootstrap_4.0.1_armel.tgz sb-conf install CHINOOK-ARMEL-2007 -cedFGS sb-conf select CHINOOK-ARMEL-2007 wget http://people.mozilla.com/~vladimir/misc/execstack.armel chmod a+x execstack.armel fakeroot mv execstack.armel /usr/bin/execstack execstack -c `find /lib/ -name \*.so.\* -type f` execstack -c `find /usr/lib/ -name \*.so.\* -type f` fakeroot echo "deb http://repository.maemo.org/extras-devel chinook free non-free" >> /etc/apt/sources.list fakeroot echo "deb file:/home/$USER/maemo-sdk-nokia-binaries_4.0.1 chinook explicit" >> /etc/apt/sources.list yes | fakeroot apt-get update yes | fakeroot apt-get install \ libgtk2.0-dev libxaw7-dev libfreetype6-dev libxi-dev \ libhildonmime-dev libosso-dev libidl-dev liblocation-dev \ libasound2-dev libhildon1-dev libiw-dev #these packages are needed as of March 3, 2009 for a plugins fix yes | fakeroot apt-get install libxdamage-dev libxcomposite-dev #this package is needed as of May, 2009 for an alerts service feature in toolkit yes | fakeroot apt-get install libnotify-dev #this package is needed as of Oct, 2009 for using native hildon file picker in toolkit yes | fakeroot apt-get install libhildonfm2-dev #this package is needed as of Nov, 2009 for using conic for auto network connections yes | fakeroot apt-get install libconic0-dev #you now need Python 2.4 to build also yes | fakeroot apt-get install python2.4 exit
Now continue to Mobile/Build/Fennec to check out and build the Fennec source code.
Electrolysis
To build the Electrolysis branch, see Mobile/e10s.
Qt
Future versions of Maemo will be based primarily on Qt instead of GTK. To build with Qt see User:Pjohnsen/MozillaQtBuild.
Notes on 64 Bit Ubuntu Ibex
Scratchbox contains 32 bit binaries which must be accommodated on a 64 bit system. The easiest way to do this is with a 32 bit chroot. Scratchbox also uses a chroot - so they will be executing 2 deep when the build is done.
Steps 1 through 4 in http://danielkitta.org/howto/maemo-amd64 provide a guide to setting up a 32 bit chroot under ubuntu. Use "hardy" or "intrepid" instead of "dapper" in the instructions in order to have a glibc current enough to run scratchbox.
When that is complete, change to the chroot (linux32 dchroot -c hardy-i386 -d) and you can install scratchbox largely based on the instructions above, with a few modifications:
- change `uname -m` in maemo-scratchbox-install to be `linux32 uname -m`
- in sysctl.conf, instead of vm.vdso_enabled =0 , use abi.vsyscall32 = 0 (do this in the real root, not the chroot), Indeed this is needed for either 32 or 64 bit Ibex.
- make certain binfmt_misc is loaded (modprobe -a binfmt_misc)
- inside chroot make sure /proc is mounted (mount /proc)