Mobile/Fennec/RaspberryPi

From MozillaWiki
< Mobile‎ | Fennec
Revision as of 14:03, 11 June 2012 by Romaxa (talk | contribs) (Created page with "= Build Qt5 Mozilla for Raspberry Pi = == Prepare multiarch chroot == <pre> sudo apt-get install debootstrap export CHROOTPATH=$HOME/squeezeRP export CHROOTPREFIX=sqrp sudo deb...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Build Qt5 Mozilla for Raspberry Pi

Prepare multiarch chroot

sudo apt-get install debootstrap
export CHROOTPATH=$HOME/squeezeRP
export CHROOTPREFIX=sqrp
sudo debootstrap --arch=i386 --variant=buildd squeeze $CHROOTPATH
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/

Better to make user inside chroot, same as your host user, with sudo permissions

sudo chroot $CHROOTPATH apt-get install -y --force-yes sudo adduser vim bash-completion

Setup chroot sdk user, enter password and name

sudo chroot $CHROOTPATH adduser `whoami`

Setup sudo group

sudo chroot $CHROOTPATH adduser `whoami` sudo

make chroot alias

echo "alias o"$CHROOTPREFIX"chroot='sudo chroot $CHROOTPATH su - "`whoami`"'" >> ~/.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/home/`whoami`/.bashrc

Make sure that proc mounted in order to avoid some warnings

echo "sudo mount -t proc proc /proc" >> $CHROOTPATH/home/`whoami`/.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/home/`whoami`/.bashrc

Setup non-passwd sudo, Make user sudo without password requests

sudo echo `whoami`" ALL=(ALL)NOPASSWD: ALL" > $CHROOTPATH/tmp/user_full
sudo chmod 0440 $CHROOTPATH/tmp/user_full
sudo chown root: $CHROOTPATH/tmp/user_full
sudo chroot $CHROOTPATH mv /tmp/user_full /etc/sudoers.d/

Switch into chroot and perform basic setup

sudo chroot $CHROOTPATH su - "`whoami`"

Set up the /etc/apt/sources.list inside the chroot :

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'

In /etc/apt/apt.conf.d/10local disable installing recommends:

sudo su -c 'echo "APT::Install-Recommends \"0\";
APT::Install-Suggests \"0\";" > /etc/apt/apt.conf.d/10local'
sudo apt-get update

Install toolchain and essentials

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

Create cross arm pkg-config:

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

Add some useful packages for development environment

sudo apt-get install automake libtool debhelper mercurial git-core openssh-client -y --force-yes

Setup mercurial config

echo "[ui]
username = UserName
[extensions]
hgext.mq =
hgext.color =
hgext.graphlog =
hgext.rebase =
" > ~/.hgrc

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
hg clone http://hg.mozilla.org/users/romaxa_gmail.com/rmxmq .hg/patches
hg qpush -a

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