Mobile/Fennec/RaspberryPi
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