|
|
| Line 1: |
Line 1: |
| == What this is About == | | == What this is About == |
|
| |
|
| This document explains "How to build Mobile Firefox for Meego Netbook Platform". | | This document explains "How to build Mobile Firefox for Meego Netbook Platform".<br> |
| | |
| <br> | |
|
| |
|
| == Versions == | | == Versions == |
| Line 11: |
Line 9: |
| == Current State == | | == Current State == |
|
| |
|
| Configuration successful, Build successful. Run successful with flash support in software mode. | | Configuration successful, Build successful. Run successful with flash support in software mode. |
|
| |
|
| == Known Issues == | | == Known Issues == |
| === Crash on Start ===
| |
| Issues with Mesa Drivers. Starting in EGL accelerated version does not work. Fennec is crashing with:
| |
|
| |
|
| <pre> | | === Crash on Start === |
| Mesa 7.9 implementation error: glIndexPointer should be mapped to 336, not 314 | | |
| | Issues with Mesa Drivers. Starting in EGL accelerated version does not work. Fennec is crashing with: |
| | <pre>Mesa 7.9 implementation error: glIndexPointer should be mapped to 336, not 314 |
| Please report at bugzilla.freedesktop.org | | Please report at bugzilla.freedesktop.org |
| Mesa 7.9 implementation error: glUniformMatrix4fv should be mapped to 337, not 485 | | Mesa 7.9 implementation error: glUniformMatrix4fv should be mapped to 337, not 485 |
| Please report at bugzilla.freedesktop.org | | Please report at bugzilla.freedesktop.org |
| </pre> | | </pre> |
| | Solution: Disable hardware acceleration within mobile.js |
|
| |
|
| Solution:
| | === Multitouch === |
| Disable hardware acceleration within mobile.js
| |
|
| |
|
| === Multitouch ===
| | Multitouch is not working in meego.com release TBI |
| Multitouch is not working in meego.com release TBI | |
|
| |
|
| === Flash Renderspeed === | | === Flash Renderspeed === |
| For some people the Renderspeed with native is really slow, it seems to get better when using this for starting fennec:
| |
|
| |
|
| <pre> MOZ_QT_GRAPHICSSYSTEM=meego ./fennec -graphicssystem meego </pre> | | For some people the Renderspeed with native is really slow, it seems to get better when using this for starting fennec: |
| | <pre> MOZ_QT_GRAPHICSSYSTEM=meego ./fennec -graphicssystem meego </pre> |
| | == Setup your Netbook == |
|
| |
|
| == Setup your Netbook ==
| | I use a Lenovo Ideapad S10-3t supporting multitouch. This is the recommended target device of Intel. [http://meego.com/devices/netbook/installing-meego-your-netbook Follow Instructions] |
| I use a Lenovo Ideapad S10-3t supporting multitouch. This is the recommended target device of Intel. | |
| [http://meego.com/devices/netbook/installing-meego-your-netbook Follow Instructions] | |
| == Steps ==
| |
|
| |
|
| #Get MeegoSDK<br>Follow the steps from the [http://wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux official Meego Website]. '''Stop at the point "Install MeeGo Runtime"''', we will continue from this point on. <br>
| | == Presteps, Install the SDK on your System<br> == |
| #Download and install the [http://wiki.meego.com/SDK/Docs/1.1/Configuring_QEMU_runtimes Runtime]<br><pre>sudo mad-admin create -f -e meego-netbook-ia32-qemu-1.1.20101031.2037-sda-runtime</pre> <br>
| |
| #Mount the SDK<br>It is important to know that it is not a good idea to use Qemu and the Meego SDK. This is because of:<br>a) In case Qemu crash once, you can not start it again, everything is gone.<br>b) Qemu is very slow on compiling<br>c) For mounting working directories into Qemu you need to use nfs which is possible but increase complexity<br>d) The Image Partitions for netbook and handset are just to small in order to hold the mozilla sources<br><br>Steps:<br>1. Create mount point on your HOST Storage wherever you like it best<br><pre>sudo mkdir ~/meegoSDK </pre> 2. Create a working directory on your HOST Storage whereever you like it best<br><pre>sudo mkdir ~/meegoWorkingDirectory</pre>3. Mount the SDK Image into your Host System<br><pre>sudo mount -o loop,offset=512 /usr/lib/madde/linux-i686/runtimes/meego-netbook-ia32-qemu-1.1.20101031.2037-sda-runtime/meego-netbook-ia32-qemu-1.1.20101031.2037-sda.raw ~/meegoSDK </pre>4. Create a mount point within the meegoSDK Directory<br><pre>sudo mkdir ~/meegoSDK/meegoWorkingDirectory</pre> 5. Bind Mount your external Working Directory into the SDK Working Directory<br><pre>sudo mount --bind ~/meegoWorkingDirectory ~/meegoSDK/meegoWorkingDirectory</pre>
| |
| #ChangeRoot into MeegoSDK<br>1. Copy the changeroot script from this page (see section "Scripts"<br> 2. Use this script by calling<br><pre>sudo sdk-changeroot ~/meegoSDK</pre>
| |
| #Download and install dependencies / needed packages<br><pre>zypper in python-devel docutils libidl-devel libcontentaction-devel alsa-lib-devel gst-plugins-base-devel libXext-devel git doxygen libXrender-devel freetype-devel fontconfig-devel glib2-static libXt-devel libffi-devel python sharutils bc quilt yasm zip wget</pre>
| |
| #Get and Compile Mercurial<br>MeegoSDK is missing Mercurial packages, we need to download, compile and install them by our own.<br><pre>cd /meegoWorkingDirectory</pre><pre>wget http://mercurial.selenic.com/release/mercurial-1.7.3.tar.gz </pre><pre>tar -xzf mercurial-1.7.3.tar.gz </pre> <pre>cd mercurial-1.7.3 </pre><pre>make install</pre> <pre>echo "[extensions] hgext.mq=" >> ~/.hgrc</pre>
| |
| #Get and Compile autoconf2.13<pre>wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz</pre><pre>tar -xvzf autoconf-2.13.tar.gz</pre><pre>cd autoconf-2.13/</pre><pre>./configure --program-suffix=2.13</pre><pre>make</pre><pre>sudo make install</pre>
| |
| #Get and Compile libresourceqt <pre>git clone git://gitorious.org/maemo-multimedia/libresourceqt.git</pre><pre>qmake</pre><pre>make</pre><pre>make install</pre>
| |
| #Get Xulrunner Sources from Meego Developer Preview Repository<br><pre>cd /meegoWorkingDirectory </pre><pre>hg clone http://hg.mozilla.org/mozilla-central</pre> <pre>cd mozilla-central</pre><pre>hg clone http://hg.mozilla.org/mobile-browser mobile</pre><pre>cd mobile/.hg</pre> Get patchsets <pre>hg clone http://hg.mozilla.org/users/romaxa_gmail.com/workbase_prc2 patches</pre> <pre>cd patches</pre> <pre>hg update -C mobile-browser</pre> <pre>cd ../../../.hg/</pre> <pre>hg clone http://hg.mozilla.org/users/romaxa_gmail.com/workbase_prc2 patches </pre><pre>cd ../</pre> Apply patches using mqueue <pre>hg qpush --all</pre> <pre>cd mobile</pre> <pre>hg qpush --all</pre><pre>cd ..</pre>
| |
| #Copy mozconfig from this page into the /meegoWorkingDirectory
| |
| #Compile<br>The checkout there is still debian based, this needs to be adjusted. For now it's good enough to use the mozconfig provided in the bottom of this page.<br><pre>mkdir ./build-tree</pre><pre>make -f client.mk build</pre>
| |
| #Package it<br><pre>cd build-tree/obj-qt-buildxulrunner/xulrunner</pre><br><pre>make package</pre>
| |
| #Copy it to your device<br>Find the fennec*tar* within your build-tree/obj-qt-buildxulrunner/xulrunner directory<pre>scp fennec-#####.en-US.linux-i686.tar.bz2 <user>@IPTOYOURMEEGONETBOOK:/home/<user></pre><br>
| |
| #Extract it
| |
| #Run it
| |
|
| |
|
| <br> | | Add the package respository of the SDK to your system: [http://wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux#Configuring_distributions_package_manager (see source for more)]<br> |
|
| |
|
| = Scripts<br> = | | ==== On Ubuntu or Debian ==== |
|
| |
|
| == The SDK-Change-Root-Script ==
| | <!-- Replaced '#' with <li> so that multi-line <pre> statements would appear in a single block --> |
| <pre># Copyright 2010, Intel Inc. | |
| #
| |
| # This program is free software; you can redistribute it and/or modify
| |
| # it under the terms of the GNU General Public License as published by
| |
| # the Free Software Foundation; version 2 of the License.
| |
| #
| |
| # This program is distributed in the hope that it will be useful,
| |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
| |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| |
| # GNU Library General Public License for more details.
| |
| #
| |
| # You should have received a copy of the GNU General Public License
| |
| # along with this program; if not, write to the Free Software
| |
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
| |
|
| |
|
| # Authors: | | #Add the following line to <code>/etc/apt/sources.list.d/meego-sdk.list</code>.<br> Replace ${distribution}/${version} with one of the following: "debian/5.0", "ubuntu/09.10", "ubuntu/10.04" or "ubuntu/10.10". <pre>deb http://repo.meego.com/MeeGo/sdk/host/repos/${distribution}/${version}/ / </pre> |
| # Haitao Feng <haitao.feng@intel.com> | | #Add the repository public key: <pre>$ gpg --keyserver pgpkeys.mit.edu --recv 0BC7BEC479FC1F8A</pre><pre>$ gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -</pre> |
| # Jackie Wu <jackie.wu@intel.com> | | #Update the packages database: <pre>$ sudo apt-get update</pre> |
| | #To check that the MeeGo repository has been correctly added, run the following command. The details of the MADDE package should be printed. <pre>$ apt-cache policy madde</pre> |
|
| |
|
| CHROOT_NAME=$0
| | *Install <pre>$ sudo apt-get install meego-sdk</pre> |
|
| |
|
| usage()
| | ==== On openSUSE ==== |
| {
| |
| echo Usage: "$CHROOT_NAME NEWROOT [COMMAND [ARG]...]"
| |
| echo " or: $CHROOT_NAME OPTION"
| |
| echo "Run COMMAND with root directory set to NEWROOT."
| |
| echo
| |
| echo " OPTIONS:"
| |
| echo " --help display this help and exit"
| |
| echo
| |
| echo "If no command is given, run ``${SHELL} -i''"
| |
| }
| |
|
| |
|
| reference_increase()
| | *To add the MeeGo repository, run the following command. <br> Replace ${distribution}/${version} with one of the following values: "opensuse/11.2" or "opensuse/11.3". <pre>$ sudo zypper addrepo -f http://repo.meego.com/MeeGo/sdk/host/repos/${distribution}/${version}/meego-sdk.repo</pre> |
| { | |
| if [ -f $1 ]; then
| |
| count=`cat $1`
| |
| if [ "X$count" != "X" ]; then
| |
| count=`expr $count + 1`
| |
| echo $count > $1
| |
| fi
| |
| fi
| |
| } | |
|
| |
|
| reference_decrease()
| | *Install <pre>$ sudo zypper install meego-sdk</pre> |
| {
| |
| if [ -f $1 ]; then
| |
| count=`cat $1`
| |
| if [ "X$count" != "X" ] && [ $count -gt 0 ]; then
| |
| count=`expr $count - 1`
| |
| echo $count > $1
| |
| fi
| |
| fi
| |
| }
| |
|
| |
|
| reference_print()
| | == Configure SDK == |
| {
| |
| if [ -f $1 ]; then
| |
| count=`cat $1`
| |
| if [ "X$count" != "X" ]; then
| |
| echo "The reference count of [$1]: $count"
| |
| fi
| |
| fi
| |
| }
| |
|
| |
|
| setup()
| | Download the mozilla-meego-assistant script from this website. |
| {
| |
| chroot=$1
| |
| # normal preparation for chroot
| |
| echo mount --bind /proc $chroot/proc
| |
| mount --bind /proc $chroot/proc
| |
| echo mount --bind /sys $chroot/sys
| |
| mount --bind /sys $chroot/sys
| |
| echo mount --bind /dev $chroot/dev
| |
| mount --bind /dev $chroot/dev
| |
| echo mount --bind /dev/pts $chroot/dev/pts
| |
| mount --bind /dev/pts $chroot/dev/pts
| |
|
| |
|
| # preparation for X | | #untar the tarball |
| # X sockets are at /tmp/.X11-unix | | #<pre>sudo ./meego-assistant install</pre> |
| # echo mount --bind /tmp $chroot/tmp
| |
| # mount --bind /tmp $chroot/tmp
| |
|
| |
|
| # preparation for dbus
| | == Steps == |
| # echo mount --bind /var/lib/dbus $chroot/var/lib/dbus
| |
| # mount --bind /var/lib/dbus $chroot/var/lib/dbus
| |
| # echo mount --bind /var/run/dbus $chroot/var/run/dbus
| |
| # mount --bind /var/run/dbus $chroot/var/run/dbus
| |
| | |
| # preparation for network
| |
| echo cp /etc/resolv.conf $chroot/etc/resolv.conf
| |
| cp /etc/resolv.conf $chroot/etc/resolv.conf
| |
| }
| |
| | |
| cleanup()
| |
| {
| |
| chroot=$1
| |
| #clean up processes using chroot
| |
| pid_set=$( ps ax | awk '{ print $1 }')
| |
| for pid in $pid_set
| |
| do
| |
| if [ -h /proc/$pid/root ]; then
| |
| ps=$( ls -l /proc/$pid/root 2>/dev/null | grep $chroot)
| |
| if [ "X$ps" != "X" ]; then
| |
| kill $pid
| |
| fi
| |
| fi
| |
| done
| |
| | |
| sleep 3
| |
| | |
| # umount directories
| |
| echo umount $chroot/proc
| |
| umount $chroot/proc
| |
| echo umount $chroot/sys
| |
| umount $chroot/sys
| |
| echo umount $chroot/dev/pts
| |
| umount $chroot/dev/pts
| |
| echo umount $chroot/dev
| |
| umount $chroot/dev
| |
| | |
| echo umount $chroot/tmp
| |
| umount $chroot/tmp
| |
| | |
| echo umount $chroot/var/lib/dbus
| |
| umount $chroot/var/lib/dbus
| |
| echo umount $chroot/var/run/dbus
| |
| umount $chroot/var/run/dbus
| |
| }
| |
| | |
| if test "x$1" = "x"
| |
| then
| |
| echo "$CHROOT_NAME: missing operand";
| |
| echo "Try '$CHROOT_NAME --help' for more information";
| |
| exit;
| |
| fi
| |
| | |
| if [ -e $1 ]; then
| |
| CHROOT=$(readlink -f $1)
| |
| if [ -e $CHROOT/proc ] && [ -e $CHROOT/sys ] && [ -e $CHROOT/dev ] && [ -e $CHROOT/dev/pts ]; then
| |
| chroot_reference_count=`echo $CHROOT | sed 's/\//_/g'`
| |
| chroot_reference_count=/tmp/meego_chroot$chroot_reference_count.ref_count
| |
| chroot_mount=$( mount | grep $CHROOT/proc )
| |
| if [ "X$chroot_mount" = "X" ]; then
| |
| touch $chroot_reference_count
| |
| echo 0 > $chroot_reference_count
| |
| reference_increase $chroot_reference_count
| |
|
| |
|
| setup $CHROOT
| | #<pre>sudo ./meego-assistant login</pre>On first start this actually does the final configuration of the Image. Like downloading basic build dependencies, installing mercurial and autoconf2.13. |
| else
| | #Get Mozilla Sources and apply Meego Developer Patches on it<br> |
| if [ "x$2" != "x" ]; then
| |
| if [ $2 = "force-clean" ]; then
| |
| echo "$CHROOT_NAME: clean up meego chroot $CHROOT"
| |
| cleanup $CHROOT
| |
| exit;
| |
| fi
| |
| fi
| |
| reference_increase $chroot_reference_count
| |
| fi
| |
|
| |
|
| #patch from Graham Cobb, see bug #3156 for detail
| | <pre>cd /meegoWorkingDirectory |
| unset DBUS_SESSION_BUS_ADDRESS
| | hg clone http://hg.mozilla.org/mozilla-central cd mozilla-central hg clone http://hg.mozilla.org/mobile-browser mobile cd mobile/.hg hg clone http://hg.mozilla.org/users/romaxa_gmail.com/workbase_prc2 patches cd patches hg update -C mobile-browser cd ../../../.hg/ hg clone http://hg.mozilla.org/users/romaxa_gmail.com/workbase_prc2 patches cd ../ hg qpush --all cd mobile hg qpush --all cd .. wget [THIS MOZCONFIG] make -f client.mk build <span style="font-family: sans-serif;" /> |
| | |
| export HOME=/root
| |
| export PWD=/root
| |
| export CHROOTFROM=$CHROOT
| |
| export DISPLAY=:0.0
| |
| | |
| #perform the command in chroot
| |
| chroot $@
| |
| | |
| reference_decrease $chroot_reference_count
| |
| count=`cat $chroot_reference_count`
| |
| if [ "X$count" != "X" ] && [ $count -eq 0 ]; then
| |
| cleanup $CHROOT
| |
| else
| |
| echo "$CHROOT_NAME: warning: The housekeeping is not done. There might be other meego-chroot running."
| |
| fi
| |
| else
| |
| echo "$CHROOT_NAME: invalid meego chroot directory: $CHROOT";
| |
| exit;
| |
| fi
| |
| else
| |
| if [ $1 = "--help" ]; then
| |
| usage;
| |
| else
| |
| echo "$CHROOT_NAME: invalid meego chroot directory: $CHROOT";
| |
| echo "Try '$CHROOT_NAME --help' for more information";
| |
| fi
| |
| fi
| |
| </pre> | | </pre> |
|
| |
|
| == MOZCONFIG, i386 Build ==
| | MOZCONFIG, i386 Build |
| <pre> | | <pre>export LDFLAGS="-Wl,--no-keep-memory,-rpath-link,$PWD/dist/bin/:/usr/lib:/lib" |
| | |
| export LDFLAGS="-Wl,--no-keep-memory,-rpath-link,$PWD/dist/bin/:/usr/lib:/lib" | |
| export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib" | | export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib" |
|
| |
|
| Line 262: |
Line 79: |
| mk_add_options MOZ_BUILD_PROJECTS="xulrunner mobile" | | mk_add_options MOZ_BUILD_PROJECTS="xulrunner mobile" |
| mk_add_options AUTOCONF=autoconf2.13 | | mk_add_options AUTOCONF=autoconf2.13 |
| mk_add_options MOZ_MAKE_FLAGS=-j5 | | mk_add_options MOZ_MAKE_FLAGS=-j9 |
| | | |
| # XULRunner options | | # XULRunner options |
| Line 270: |
Line 87: |
| # Mobile options | | # Mobile options |
| ac_add_app_options mobile --enable-application=mobile | | ac_add_app_options mobile --enable-application=mobile |
| ac_add_app_options mobile --with-libxul-sdk=../xulrunner/dist
| |
|
| |
|
| #Enable RTTI | | #Enable RTTI |
| Line 304: |
Line 120: |
|
| |
|
|
| |
|
| mk_add_options MOZ_OBJDIR=./build-tree/obj-qt-buildxulrunner | | mk_add_options MOZ_OBJDIR=./obj-qt-buildxulrunner |
| mk_add_options MOZ_MAKE_FLAGS=
| | </pre> |
| | | <br> |
| </pre> | |