Open main menu

CDOT Wiki β

Changes

Fennec on a Nokia N810

7,197 bytes added, 21:54, 25 February 2009
Created page with '== Documentation on Building and Testing Fennec on the Nokia N810 device. == == Setting up your environment. == There are instructions available on the Fennec Mobile page In o...'
== Documentation on Building and Testing Fennec on the Nokia N810 device. ==

== Setting up your environment. ==

There are instructions available on the Fennec Mobile page
In order to develop for Fennec on an Nokia device one
must install scratchbox.

In order to compile Fennec for the nokia devices.
we need 3 different components in order to make this work
'''
scratchbox'''
(Scratchbox is the cross platform compilation tool that is
needed.)


'''scratchbox toolchain'''
(A set of tools used for a certain versions of compiler
libraries, special headers and other tools a cross-toolchain
enables compiling binaries for different CPU architecture
than the host CPU)

'''maemo sdk'''
(Maemo is an open source development platform that runs
on Linux and the SDK provides a set of libraries and compilier
and emulator that "emulates" the Nokia for developing and
debugging)

'''note:''' theres an installer(choose to install everything)

instructions are available at
[https://wiki.mozilla.org/Mobile/Build/cs2007q3]


'''note:''' sometimes you will require to install the
libIDL and setup the PKG_CONFIG_PATH

to do that you must login into scratchbox.
/scratchbox/login

wget http://ftp.gnome.org/pub/gnome/sources/libIDL/0.8/libIDL-0.8.9.tar.gz
tar -xzvf libIDL-0.8.9.tar.gz
cd libIDL-0.8.9
./configure
make
fakeroot make install
cd ..

'''note:''' if the libIDL error appears on build run this.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pgkconfig


== Unistalling Scratchbox ==

If at any point in time you wish to uninstall Scratchbox
you can follow these instructions.

'''note:''' these commands are done as root.

# apt-get remove scratchbox-libs

removes all info int he users folder(save all your important files)

# /scratchbox/sbin/sbox_ctl stop

/scratchbox directory should be empty

# rm -rf /scratchbox/users

scratchbox mounts directories sbox_ctl stop then you can remove the rest of scratchbox

# rm -r /scratchbox


== Setting up your N810 for development ==

In order to access the N810 remotely on your wireless network
you will need a wireless router.

In order to access the device from outside your wireless network
over the internet you will need a service like DynDNS if your IP is not
static. Then port forward the ssh communcation to the device.

You might also want to consider giving the device a dedicated IP address.

It is required for you to install SSH and fix the mounting options on the device.

Install SSH on the device:
[http://maemo.org/downloads/product/OS2007/openssh/]

Fix the mounting options on the device in order to be able to
run your builds on the built in memory card (/media/mmc2)
There are instructions available here on how to do it.
[https://wiki.mozilla.org/ReferencePlatforms/Test/Maemo#Fix_mount_options]

For more information on setting up your device visit:
[https://wiki.mozilla.org/ReferencePlatforms/Test/Maemo]


'''note:'''
To find out the IP address of the device if you are on your local wireless network
in Settings>Connection Manager>menu>Internet connection>IP address



== Building Fennec ==

Mozilla currently uses Mercurial for version tracking
ref: [https://developer.mozilla.org/en/Mercurial]

To get a copy of the Fennec Source
Login to scratchbox and run these commands.

hg clone http://hg.mozilla.org/mozilla-central

cd mozilla-central

hg clone http://hg.mozilla.org/mobile-browser mobile

Depending on your connection this might take a while.
Once you have the source you will want to create a .mozconfig file
you will want to place this inside the mozilla-central directory.

Here is a sample of a .mozconfig:
[http://mozilla.pastebin.com/f70a8a5af .mozconfig]

'''note:''' If you want to know what other build options are available to you
check out: [https://developer.mozilla.org/en/Configuring_Build_Options]

Once you have your .mozconfig saved in the mozilla-central directory
To build Fennec just run

# make -f client.mk build

'''note:''' this will take a while

Once that is done you will have 2 directories in your
object directory ''mobile'' and ''xulrunner''


== Packaging Fennec ==

It is required for you to package Fennec and then copy it over to the device
using '''scp''' command to do this follow these instructions

cd $objdir/mobile
make package
cd dist
ls

then you should have a file called
''fennec-1.0a3pre.en-US.linux-arm.tar.bz2''
'''note:''' if its not linux-arm you didn't build in the right environment

you will want to bunzip the file
bunzip2 fennec-1.0a3pre.en-US.linux-arm.tar.bz2

then copy it over to the device
scp bunzip2 fennec-1.0a3pre.en-US.linux-arm.tar root@ip.address.to.device:/media/mmc2/
'''note:''' /media/mmc2 is the built in memory card on the device

== Running Chrome Tests ==

To run Chrome tests on Fennec on the Nokia N810
currently it is required that you apply 3 patches
from bugs
470971, 460515, and 421611
then build it again

Follow these steps in scratchbox.

from your $objdir/xulrunner/
cd _tests/testing/mochitest

## create backup
cp -R chrome chrome.bak

## NOTE: you need to do the following steps in a look for each directory
## dirs: [content, docshell, dom, toolkit, widget]
rm -Rf chrome/*

cp -R chrome.bak/content chrome/

Then you will want to package and port your tests over to the device.

cd $objdir/xulrunner
make test-package

you will end up with a file called

xulrunner-1.9.2a1pre.en-US.linux-arm.tests.tar.bz2

You will first want to uncompress the .bz2

bunzip2 xulrunner-1.9.2a1pre.en-US.linux-arm.tests.tar.bz2

then you will end up with a file called

xulrunner-1.9.2a1pre.en-US.linux-arm.tests.tar

This file you will copy over to the device.

scp xulrunner-1.9.2a1pre.en-US.linux-arm.tests.tar root@ip.address.to.device:/media/mmc2/
'''note:''' media/mmc2 is the built in memory card on the device that you can use to test things.

python mochitest/runtests.py --appname=/path/to/fennec/fennec --chrome --utility-path=/path/to/bin --certificate-path=/path/to/bin --xre-path=/path/to/fennec/xulrunner --log-file=chrome_content.log --autorun --close-when-done


For more information visit:
[https://wiki.mozilla.org/Mobile/Fennec_Chrome]


== Running Mochitests ==


Mochitest is a automated testing framework.
[https://developer.mozilla.org/en/Mochitest]

'''note:''' Due to Fennec's constant development these instructions
will probably change. Please refer to these instructions
[https://wiki.mozilla.org/Mobile/Fennec_Mochitest]
It is also highly encouraged that you go on IRC in
to stay up-to-date with the information.

On IRC:
irc.mozilla.org #mobile


== Debugging on Fennec on a Nokia N810 ==

Currently gdb is not working on Fennec on the device.
The symbols get stripped during the packaging process.

So you must rely on dump() in javascript and printf() in C++
and your console/terminal in order to debug.

'''note:''' Usually I put "DEBUG" in front of all the dump() and printf()
so that you can grep for them on the console/terminal.

There are instructions on how to get gdb installed here:
[http://maemo.org/development/tools/#apt-example]
1
edit