Mobile/Fennec/RaspberryPi: Difference between revisions

From MozillaWiki
< Mobile‎ | Fennec
Jump to navigation Jump to search
Line 70: Line 70:
</pre>
</pre>


== Switch into chroot and perform basic setup ==
== Setup Scratchbox 2 around installed toolchain and dev rootfs ==


<pre>
<pre>
sudo chroot $CHROOTPATH su - "`whoami`"
# Install sbox2 with:
</pre>
 
==== Set up the /etc/apt/sources.list inside the chroot : ====
<pre>
sudo su -c 'echo "# Squeeze cross sources list
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://www.emdebian.org/debian squeeze main
deb [arch=i386] http://ftp.fi.debian.org/debian/ squeeze main contrib non-free
deb [arch=armel] http://ftp.fi.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fi.debian.org/debian/ squeeze main contrib non-free
" > /etc/apt/sources.list'
</pre>
 
==== In /etc/apt/apt.conf.d/10local disable installing recommends: ====
<pre>
sudo su -c 'echo "APT::Install-Recommends \"0\";
APT::Install-Suggests \"0\";" > /etc/apt/apt.conf.d/10local'
sudo apt-get update
</pre>


==== Install toolchain and essentials ====
sudo apt-get install scratchbox2
<pre>
sudo apt-get update
sudo apt-get install apt-utils xapt g++-4.4-arm-linux-gnueabi build-essential pkg-config unzip zip autoconf2.13 gdb-arm-linux-gnueabi -y --force-yes
</pre>


==== Create cross arm pkg-config:====
# or use these instructions:
<pre>
# http://russelldavis.org/2011/09/07/setting-up-scratchbox2-from-scratch-for-the-raspberry-pi/
echo '#!/bin/sh
triplet=`basename $0 | sed -e "s:-pkg-config::"`
PKG_CONFIG_LIBDIR=/usr/${triplet}/lib/pkgconfig pkg-config $@
' > /tmp/arm-linux-gnueabi-pkg-config
sudo mv /tmp/arm-linux-gnueabi-pkg-config /usr/local/bin/arm-linux-gnueabi-pkg-config
sudo chmod a+x /usr/local/bin/arm-linux-gnueabi-pkg-config
</pre>
</pre>


==== Add some useful packages for development environment ====
==== Initialize sb2 config ====
<pre>
sudo apt-get install automake libtool debhelper mercurial git-core openssh-client wget -y --force-yes
</pre>


==== Setup mercurial config ====
<pre>
<pre>
echo "[ui]
cd $CHROOTPATH
username = UserName
sb2-init Raspi /opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
[extensions]
sb2-config -d Raspi
hgext.mq =
hgext.color =
hgext.graphlog =
hgext.rebase =
" > ~/.hgrc
</pre>
</pre>



Revision as of 08:45, 14 February 2013

Build Qt5 Mozilla for Raspberry Pi

Build crosstool-ng toolchain

Install crosstool-ng using this tutorial: http://www.bootc.net/archives/2012/05/26/how-to-build-a-cross-compiler-for-your-raspberry-pi

In addition to step 13. enable C++

Prepare target wheezy armhf chroot

Download raspbian public key from root

sudo su
wget http://archive.raspbian.org/raspbian.public.key;apt-key add raspbian.public.key
CTRL^D

sudo apt-get install qemu-user-static

Debootstrap wheezy chroot

export CHROOTPATH=$HOME/wheezy-armhf
export CHROOTPREFIX=whrp
sudo debootstrap --verbose --arch=armhf --keyring /etc/apt/trusted.gpg  --include=apt  wheezy $CHROOTPATH http://archive.raspbian.org/raspbian

sudo cp /usr/bin/qemu-arm-static $CHROOTPATH/usr/bin/
sudo cp -f /etc/apt/apt.conf $CHROOTPATH/etc/apt/
sudo cp -f /etc/apt/apt.conf.d/* $CHROOTPATH/etc/apt/apt.conf.d/
sudo cp -f /etc/resolv.conf $CHROOTPATH/etc/
sudo cp -f /etc/hosts $CHROOTPATH/etc/

Install required packages inside chroot

sudo chroot $CHROOTPATH apt-get update
sudo chroot $CHROOTPATH apt-get install -y --force-yes sudo adduser python2.7 bash-completion

make chroot alias

echo "alias o"$CHROOTPREFIX"chroot='sudo chroot $CHROOTPATH su - " >> ~/.bashrc
 . ~/.bashrc

Make chroot shell different from host

echo "PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]-"$CHROOTPREFIX":\[\033[01;34m\]\w\[\033[00m\]\$ '" >>  $CHROOTPATH/root/.bashrc

Make sure that proc mounted in order to avoid some warnings

echo "sudo mount -t proc proc /proc" >> $CHROOTPATH/root/.bashrc

fix undefined locale warnings, and enable bash completion

echo "
export LANGUAGE=C
export LC_ALL=C
export LANG=C
if [ -f /etc/bash_completion ]; then
   . /etc/bash_completion
fi
" >> $CHROOTPATH/root/.bashrc

Setup Scratchbox 2 around installed toolchain and dev rootfs

# Install sbox2 with:

sudo apt-get install scratchbox2

# or use these instructions:
# http://russelldavis.org/2011/09/07/setting-up-scratchbox2-from-scratch-for-the-raspberry-pi/

Initialize sb2 config

cd $CHROOTPATH
sb2-init Raspi /opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
sb2-config -d Raspi

Build Qt5-Mozilla inside chroot

mkdir ~/build && cd ~/build

install pre-compiled Qt5 and GLES libraries into chroot SDK

wget http://romaxa.info/raspberrypi/qt5rmx.tar.gz
wget http://romaxa.info/raspberrypi/vc.tar.gz
sudo tar -zxvf qt5rmx.tar.gz -C /opt/
sudo tar -zxvf vc.tar.gz -C /opt/

Install common Mozilla build dependencies

sudo xapt -k -a armel libpango1.0-dev libasound-dev libfreetype6-dev

Fix pango dependencies pkg-config path

sudo ln -s /usr/arm-linux-gnueabi/share/pkgconfig/pthread-stubs.pc /usr/arm-linux-gnueabi/lib/pkgconfig/pthread-stubs.pc

Clone Mozilla-Central and build

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

# Qt5 No-X11 mozconfig
wget http://romaxa.info/raspberrypi/mozconfig

# Minimal build patch queue, (hope will be 0 soon)
hg clone http://hg.mozilla.org/users/romaxa_gmail.com/rmxmq .hg/patches
hg update -C raspberrypi -R .hg/patches
hg update -C `cat .hg/patches/changeset`
hg qpush -a

# Finally build
MOZCONFIG=$(pwd)/mozconfig make -f client.mk build_all