ReferencePlatforms/Linux-scratchbox: Difference between revisions
(Blanked the page) |
No edit summary |
||
| Line 1: | Line 1: | ||
This page has been created based on our existing steps and the steps used to create the new scratchbox. Because we now deploy scratchbox as a large tarball | |||
==Scratchbox as of Maemo4== | |||
=== Installing Scratchbox === | |||
As root:<br /> | |||
wget http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.1.sh | |||
chmod a+x ./maemo-scratchbox-install_4.0.1.sh | |||
./maemo-scratchbox-install_4.0.1.sh -s /scratchbox | |||
/scratchbox/sbin/sbox_adduser cltbld yes | |||
As cltbld:<br /> | |||
Comment out the PYTHONHOME and PATH entries in ~/.bash_profile. | |||
source ~/.bash_profile | |||
wget http://tablets-dev.nokia.com/chinook/maemo-sdk-install_4.0.1.sh | |||
chmod +x maemo-sdk-install_4.0.1.sh | |||
bash maemo-sdk-install_4.0.1.sh | |||
/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 --prefix=/usr | |||
make | |||
make install | |||
Remove the comments from the PYTHONHOME and PATH entries in ~/.bash_profile and source it again. | |||
=== Fixup Scratchbox Install === | |||
On Centos5, need to make the following changes to sysctl.conf | |||
<code><pre> | |||
$ su | |||
# vi /etc/sysctl.conf | |||
...and append | |||
vm.vdso_enabled = 0 | |||
vm.mmap_min_addr = 4096 | |||
# | |||
# /sbin/sysctl -p | |||
... | |||
vm.vdso_enabled = 0 | |||
vm.mmap_min_addr = 4096 | |||
# exit | |||
</pre> | |||
</code> | |||
...there is no need to reboot. | |||
<code><pre> | |||
su - | |||
cd ~ | |||
wget http://scratchbox.org/download/files/sbox-releases/stable/tarball/scratchbox-toolchain-cs2007q3-glibc2.5-arm6-1.0.7-3-i386.tar.gz | |||
wget http://scratchbox.org/download/files/sbox-releases/stable/tarball/scratchbox-devkit-cputransp-1.0.7-i386.tar.gz | |||
cd / | |||
tar zxvf ~/scratchbox-toolchain-cs2007q3-glibc2.5-arm6-1.0.7-3-i386.tar.gz | |||
tar zxvf ~/scratchbox-devkit-cputransp-1.0.7-i386.tar.gz | |||
cd /scratchbox | |||
wget https://bugzilla.mozilla.org/attachment.cgi?id=334232 | |||
chmod a+x moz_scratchbox | |||
cd /scratchbox/etc | |||
mv resolv.conf resolv.conf.orig | |||
cp /etc/resolv.conf . | |||
# exit from running as root, now back to cltbld account. | |||
/scratchbox/moz_scratchbox | |||
sb-conf setup CHINOOK-ARMEL-2007 -c cs2007q3-glibc2.5-arm6 -d cputransp:debian-etch:doctools:maemo3-tools:perl -t /scratchbox/devkits/cputransp/bin/qemu-arm-cvs-m | |||
sb-conf rootstrap CHINOOK-ARMEL-2007 http://repository.maemo.org/stable/4.0.1/armel/maemo-sdk-rootstrap_4.0.1_armel.tgz | |||
sb-conf install CHINOOK-ARMEL-2007 -cedFGS | |||
sb-conf select CHINOOK-ARMEL-2007 | |||
exit | |||
wget http://repository.maemo.org/stable/chinook/maemo-sdk-nokia-binaries_4.0.1.sh | |||
chmod +x maemo-sdk-nokia-binaries_4.0.1.sh | |||
## following line failed out with permission errors | |||
## sh ./maemo-sdk-nokia-binaries_4.0.1.sh | |||
## so did the following instead: | |||
$ su - | |||
# cd /scratchbox | |||
# sh /home/cltbld/maemo-sdk-nokia-binaries_4.0.1.sh | |||
</pre></code> | |||
Note: you'll have to space/more to the end of the EULA, and then enter 'I accept' | |||
<code><pre> | |||
/scratchbox/login | |||
wget http://people.mozilla.com/~vladimir/misc/execstack.armel | |||
chmod a+x execstack.armel | |||
fakeroot mv execstack.armel /usr/bin/execstack | |||
execstack -c `find /lib/ -name \*.so.\* -type f` | |||
execstack -c `find /usr/lib/ -name \*.so.\* -type f` | |||
fakeroot echo "deb http://repository.maemo.org/extras-devel chinook free non-free" >> /etc/apt/sources.list | |||
fakeroot echo "deb file:/home/$USER/maemo-sdk-nokia-binaries_4.0.1 chinook explicit" >> /etc/apt/sources.list | |||
fakeroot apt-get update | |||
fakeroot apt-get install libgtk2.0-dev libxaw7-dev libfreetype6-dev libxi-dev libhildonmime-dev libosso-dev libidl-dev liblocation-dev libasound2-dev | |||
exit | |||
</pre></code> | |||
=== Move scratchbox === | |||
You should have a /builds drive added to the VM before completing this section. | |||
All of this should be run as root. | |||
Move scratchbox off root partition. Scratchbox takes up a non-trivial amount of space and should be moved to a different partition. | |||
<code><pre> | |||
# as root | |||
/etc/init.d/sbox stop | |||
umount /scratchbox/users/cltbld/dev/* | |||
umount /scratchbox/users/cltbld/* | |||
mv /scratchbox /builds/scratchbox | |||
# scratchbox needs this symlink to function properly | |||
# | |||
ln -s /builds/scratchbox /scratchbox | |||
/etc/init.d/sbox start | |||
</pre></code> | |||
To verify that scratchbox is working, do: | |||
<code><pre> | |||
$ moz_scratchbox | |||
> ls | |||
... | |||
> exit | |||
$ | |||
</pre></code> | |||
=== Update scratchbox mercurial and python === | |||
First, fix the DNS in scratchbox. | |||
cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK_X86/etc/resolv.conf | |||
cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK_ARMEL/etc/resolv.conf | |||
cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK-ARMEL-2007/etc/resolv.conf | |||
Allow cltbld to write to the tool areas | |||
su - | |||
chown -R cltbld /scratchbox/devkits/maemo3-tools | |||
exit | |||
Initial setup | |||
/scratchbox/moz_scratchbox | |||
wget http://people.mozilla.org/~asasaki/mercurial-1.1.2.tar.gz | |||
tar zxvf mercurial-1.1.2.tar.gz | |||
echo 'export PYTHONPATH=/usr/lib/python2.5/site-packages:$PYTHONPATH' >> .bashrc | |||
Do the following for CHINOOK_X86, while still running <tt>/scratchbox/moz_scratchbox</tt>: | |||
sb-conf select CHINOOK_X86 | |||
echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list | |||
apt-get update | |||
yes | apt-get install python2.5 python2.5-dev python2.5-xml | |||
cd /usr/bin | |||
rm python; ln -s python2.5 python | |||
cd ~/mercurial-1.1.2 | |||
python2.5 setup.py install | |||
cd /scratchbox/devkits/maemo3-tools/bin | |||
mv hg hg.old | |||
mv hgmerge hgmerge.old | |||
ln -s /usr/bin/hg . | |||
hg --version | |||
The <tt>hg --version</tt> should give you no errors. | |||
Repeat for CHINOOK_ARMEL... but I was unsuccessful getting hg 1.1.2 installed/working there. | |||
sb-conf select CHINOOK_ARMEL | |||
echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list | |||
apt-get update | |||
yes | apt-get install python2.5 python2.5-dev python2.5-xml | |||
cd /usr/bin | |||
rm python; ln -s python2.5 python | |||
Repeat for CHINOOK-ARMEL-2007. | |||
sb-conf select CHINOOK-ARMEL-2007 | |||
echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list | |||
apt-get update | |||
yes | apt-get install python2.5 python2.5-dev python2.5-xml | |||
cd /usr/bin | |||
rm python; ln -s python2.5 python | |||
cd ~/mercurial-1.1.2 | |||
python2.5 setup.py install | |||
cd | |||
hg --version | |||
rm -rf mercurial-1.1.2* | |||
=== Install libxdamage-dev and libxcomposite-dev in Scratchbox === | |||
/scratchbox/moz_scratchbox | |||
sb-conf select CHINOOK_X86 | |||
apt-get install --force-yes -y libxdamage-dev libxcomposite-dev | |||
sb-conf select CHINOOK_ARMEL | |||
apt-get install --force-yes -y libxdamage-dev libxcomposite-dev | |||
sb-conf select CHINOOK-ARMEL-2007 | |||
apt-get install --force-yes -y libxdamage-dev libxcomposite-dev | |||
=== Install libhildon1-dev to scratchbox === | |||
/scratchbox/moz_scratchbox | |||
apt-get install --force-yes -y libhildon1-dev | |||
=== Install libnotify for scratchbox === | |||
/scratchbox/moz_scratchbox | |||
apt-get install --force-yes -y libnotify-dev | |||
=== Fix scratchbox wireless devel === | |||
/scratchbox/moz_scratchbox -p 'apt-get install --force-yes -y libiw-dev' | |||
=== libhildonfm2-dev === | |||
Installed inside of scratchbox with the following command: | |||
su - cltbld -c '/scratchbox/moz_scratchbox -p apt-get --yes --force-yes install libhildonfm2-dev | |||
=== libconic0-dev === | |||
Installed inside of scratchbox with the following command: | |||
su - cltbld -c '/scratchbox/moz_scratchbox -p apt-get --yes --force-yes install libconic0-dev' | |||
=== access keys from within scratchbox === | |||
/bin/mount --bind /scratchbox/users/cltbld/home/cltbld/.ssh /home/cltbld/.ssh/ | |||
==Updates for Maemo5== | |||
This update was deployed with Puppet | |||
su - | |||
unset PYTHONHOME | |||
unset PYTHONPATH | |||
export PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/cltbld/bin | |||
umount /home/cltbld/.ssh #until no longer mounted | |||
umount /builds/slave #might not be mounted | |||
/scratchbox/sbin/sbox stop | |||
/scratchbox/sbin/sbox_umount_all | |||
sh maemo-scratchbox-install_5.0.sh -U -s /scratchbox | |||
/etc/init.d/sbox start | |||
exit | |||
sh maemo-sdk-install_5.0.sh -y -d -s /scratchbox | |||
/scratchbox/login | |||
echo deb http://repository.maemo.org/fremantle/<token> nokia-binaries >> /etc/apt/sources.list | |||
fakeroot apt-get install autoconf2.13 libnotify-dev libIDL-dev libqt4-dev | |||
exit | |||
/scratchbox/moz_scratchbox | |||
sb-conf select FREMANTLE_ARMEL | |||
wget http://www.python.org/ftp/python/2.5.5/Python-2.5.5.tar.bz2 | |||
tar jxf Python-2.5.5.tar.bz2 | |||
cd Python-2.5.5 | |||
CC='host-gcc' --prefix=/usr/local | |||
make -j4 | |||
/scratchbox/moz_scratchbox | |||
openssl md5 openssl-0.9.8m.tar.gz Python-2.5.5.tar.bz2 | |||
#MD5(openssl-0.9.8m.tar.gz)= 898bf125370926d5f692a2201124f8ec | |||
#MD5(Python-2.5.5.tar.bz2)= 1d00e2fb19418e486c30b850df625aa3 | |||
tar jxf Python-2.5.5.tar.bz2 | |||
tar zxf openssl-0.9.8m.tar.gz | |||
cd openssl-0.9.8m | |||
CC=host-gcc CXX=host-g++ ./config shared --prefix=/usr/local | |||
make -j4 | |||
make install | |||
cd Python-2.5.5 | |||
CC=host-gcc CXX=host-g++ ./configure --prefix=/host_usr | |||
make -j4 | |||
make altinstall | |||
find /usr/local -name "*.so*" -exec ldd {} \; | grep "not found" # should have no output | |||
Revision as of 19:10, 17 June 2010
This page has been created based on our existing steps and the steps used to create the new scratchbox. Because we now deploy scratchbox as a large tarball
Scratchbox as of Maemo4
Installing Scratchbox
As root:
wget http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.1.sh chmod a+x ./maemo-scratchbox-install_4.0.1.sh ./maemo-scratchbox-install_4.0.1.sh -s /scratchbox /scratchbox/sbin/sbox_adduser cltbld yes
As cltbld:
Comment out the PYTHONHOME and PATH entries in ~/.bash_profile.
source ~/.bash_profile wget http://tablets-dev.nokia.com/chinook/maemo-sdk-install_4.0.1.sh chmod +x maemo-sdk-install_4.0.1.sh bash maemo-sdk-install_4.0.1.sh /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 --prefix=/usr make make install
Remove the comments from the PYTHONHOME and PATH entries in ~/.bash_profile and source it again.
Fixup Scratchbox Install
On Centos5, need to make the following changes to sysctl.conf
$ su
# vi /etc/sysctl.conf
...and append
vm.vdso_enabled = 0
vm.mmap_min_addr = 4096
#
# /sbin/sysctl -p
...
vm.vdso_enabled = 0
vm.mmap_min_addr = 4096
# exit
...there is no need to reboot.
su -
cd ~
wget http://scratchbox.org/download/files/sbox-releases/stable/tarball/scratchbox-toolchain-cs2007q3-glibc2.5-arm6-1.0.7-3-i386.tar.gz
wget http://scratchbox.org/download/files/sbox-releases/stable/tarball/scratchbox-devkit-cputransp-1.0.7-i386.tar.gz
cd /
tar zxvf ~/scratchbox-toolchain-cs2007q3-glibc2.5-arm6-1.0.7-3-i386.tar.gz
tar zxvf ~/scratchbox-devkit-cputransp-1.0.7-i386.tar.gz
cd /scratchbox
wget https://bugzilla.mozilla.org/attachment.cgi?id=334232
chmod a+x moz_scratchbox
cd /scratchbox/etc
mv resolv.conf resolv.conf.orig
cp /etc/resolv.conf .
# exit from running as root, now back to cltbld account.
/scratchbox/moz_scratchbox
sb-conf setup CHINOOK-ARMEL-2007 -c cs2007q3-glibc2.5-arm6 -d cputransp:debian-etch:doctools:maemo3-tools:perl -t /scratchbox/devkits/cputransp/bin/qemu-arm-cvs-m
sb-conf rootstrap CHINOOK-ARMEL-2007 http://repository.maemo.org/stable/4.0.1/armel/maemo-sdk-rootstrap_4.0.1_armel.tgz
sb-conf install CHINOOK-ARMEL-2007 -cedFGS
sb-conf select CHINOOK-ARMEL-2007
exit
wget http://repository.maemo.org/stable/chinook/maemo-sdk-nokia-binaries_4.0.1.sh
chmod +x maemo-sdk-nokia-binaries_4.0.1.sh
## following line failed out with permission errors
## sh ./maemo-sdk-nokia-binaries_4.0.1.sh
## so did the following instead:
$ su -
# cd /scratchbox
# sh /home/cltbld/maemo-sdk-nokia-binaries_4.0.1.sh
Note: you'll have to space/more to the end of the EULA, and then enter 'I accept'
/scratchbox/login
wget http://people.mozilla.com/~vladimir/misc/execstack.armel
chmod a+x execstack.armel
fakeroot mv execstack.armel /usr/bin/execstack
execstack -c `find /lib/ -name \*.so.\* -type f`
execstack -c `find /usr/lib/ -name \*.so.\* -type f`
fakeroot echo "deb http://repository.maemo.org/extras-devel chinook free non-free" >> /etc/apt/sources.list
fakeroot echo "deb file:/home/$USER/maemo-sdk-nokia-binaries_4.0.1 chinook explicit" >> /etc/apt/sources.list
fakeroot apt-get update
fakeroot apt-get install libgtk2.0-dev libxaw7-dev libfreetype6-dev libxi-dev libhildonmime-dev libosso-dev libidl-dev liblocation-dev libasound2-dev
exit
Move scratchbox
You should have a /builds drive added to the VM before completing this section. All of this should be run as root.
Move scratchbox off root partition. Scratchbox takes up a non-trivial amount of space and should be moved to a different partition.
# as root
/etc/init.d/sbox stop
umount /scratchbox/users/cltbld/dev/*
umount /scratchbox/users/cltbld/*
mv /scratchbox /builds/scratchbox
# scratchbox needs this symlink to function properly
#
ln -s /builds/scratchbox /scratchbox
/etc/init.d/sbox start
To verify that scratchbox is working, do:
$ moz_scratchbox
> ls
...
> exit
$
Update scratchbox mercurial and python
First, fix the DNS in scratchbox.
cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK_X86/etc/resolv.conf cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK_ARMEL/etc/resolv.conf cp /etc/resolv.conf /scratchbox/users/cltbld/targets/CHINOOK-ARMEL-2007/etc/resolv.conf
Allow cltbld to write to the tool areas
su - chown -R cltbld /scratchbox/devkits/maemo3-tools exit
Initial setup
/scratchbox/moz_scratchbox wget http://people.mozilla.org/~asasaki/mercurial-1.1.2.tar.gz tar zxvf mercurial-1.1.2.tar.gz echo 'export PYTHONPATH=/usr/lib/python2.5/site-packages:$PYTHONPATH' >> .bashrc
Do the following for CHINOOK_X86, while still running /scratchbox/moz_scratchbox:
sb-conf select CHINOOK_X86 echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list apt-get update yes | apt-get install python2.5 python2.5-dev python2.5-xml cd /usr/bin rm python; ln -s python2.5 python cd ~/mercurial-1.1.2 python2.5 setup.py install cd /scratchbox/devkits/maemo3-tools/bin mv hg hg.old mv hgmerge hgmerge.old ln -s /usr/bin/hg . hg --version
The hg --version should give you no errors.
Repeat for CHINOOK_ARMEL... but I was unsuccessful getting hg 1.1.2 installed/working there.
sb-conf select CHINOOK_ARMEL echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list apt-get update yes | apt-get install python2.5 python2.5-dev python2.5-xml cd /usr/bin rm python; ln -s python2.5 python
Repeat for CHINOOK-ARMEL-2007.
sb-conf select CHINOOK-ARMEL-2007 echo 'deb http://repository.maemo.org/extras/ bora free' >> /etc/apt/sources.list apt-get update yes | apt-get install python2.5 python2.5-dev python2.5-xml cd /usr/bin rm python; ln -s python2.5 python cd ~/mercurial-1.1.2 python2.5 setup.py install cd hg --version rm -rf mercurial-1.1.2*
Install libxdamage-dev and libxcomposite-dev in Scratchbox
/scratchbox/moz_scratchbox sb-conf select CHINOOK_X86 apt-get install --force-yes -y libxdamage-dev libxcomposite-dev sb-conf select CHINOOK_ARMEL apt-get install --force-yes -y libxdamage-dev libxcomposite-dev sb-conf select CHINOOK-ARMEL-2007 apt-get install --force-yes -y libxdamage-dev libxcomposite-dev
Install libhildon1-dev to scratchbox
/scratchbox/moz_scratchbox apt-get install --force-yes -y libhildon1-dev
Install libnotify for scratchbox
/scratchbox/moz_scratchbox apt-get install --force-yes -y libnotify-dev
Fix scratchbox wireless devel
/scratchbox/moz_scratchbox -p 'apt-get install --force-yes -y libiw-dev'
libhildonfm2-dev
Installed inside of scratchbox with the following command:
su - cltbld -c '/scratchbox/moz_scratchbox -p apt-get --yes --force-yes install libhildonfm2-dev
libconic0-dev
Installed inside of scratchbox with the following command:
su - cltbld -c '/scratchbox/moz_scratchbox -p apt-get --yes --force-yes install libconic0-dev'
access keys from within scratchbox
/bin/mount --bind /scratchbox/users/cltbld/home/cltbld/.ssh /home/cltbld/.ssh/
Updates for Maemo5
This update was deployed with Puppet
su - unset PYTHONHOME unset PYTHONPATH export PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/cltbld/bin umount /home/cltbld/.ssh #until no longer mounted umount /builds/slave #might not be mounted /scratchbox/sbin/sbox stop /scratchbox/sbin/sbox_umount_all sh maemo-scratchbox-install_5.0.sh -U -s /scratchbox /etc/init.d/sbox start exit sh maemo-sdk-install_5.0.sh -y -d -s /scratchbox /scratchbox/login echo deb http://repository.maemo.org/fremantle/<token> nokia-binaries >> /etc/apt/sources.list fakeroot apt-get install autoconf2.13 libnotify-dev libIDL-dev libqt4-dev exit /scratchbox/moz_scratchbox sb-conf select FREMANTLE_ARMEL wget http://www.python.org/ftp/python/2.5.5/Python-2.5.5.tar.bz2 tar jxf Python-2.5.5.tar.bz2 cd Python-2.5.5 CC='host-gcc' --prefix=/usr/local make -j4 /scratchbox/moz_scratchbox openssl md5 openssl-0.9.8m.tar.gz Python-2.5.5.tar.bz2 #MD5(openssl-0.9.8m.tar.gz)= 898bf125370926d5f692a2201124f8ec #MD5(Python-2.5.5.tar.bz2)= 1d00e2fb19418e486c30b850df625aa3 tar jxf Python-2.5.5.tar.bz2 tar zxf openssl-0.9.8m.tar.gz cd openssl-0.9.8m CC=host-gcc CXX=host-g++ ./config shared --prefix=/usr/local make -j4 make install cd Python-2.5.5 CC=host-gcc CXX=host-g++ ./configure --prefix=/host_usr make -j4 make altinstall find /usr/local -name "*.so*" -exec ldd {} \; | grep "not found" # should have no output