CSSU-thumb toolchain setup (gcc4.7.2-linaro)

(Added Errors I faced and how to solve them.)
 
(6 intermediate revisions not shown)
Line 19: Line 19:
  [sbox->:~]sb-conf st FREMANTLE_ARMEL_GCC472 -c linaro-4.7-2012.07-fremantle-armv7a -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb
  [sbox->:~]sb-conf st FREMANTLE_ARMEL_GCC472 -c linaro-4.7-2012.07-fremantle-armv7a -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb
 +
 +
replace debian-etch with debian-squeeze if you use ScratchBox Hathor release
  [sbox->:~]sb-conf se FREMANTLE_ARMEL_GCC472
  [sbox->:~]sb-conf se FREMANTLE_ARMEL_GCC472
Line 25: Line 27:
  [sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf in -edL
  [sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf in -edL
 +
 +
[sbox-FREMANTLE_ARMEL_GCC472: ~] > dpkg -i /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/packages/libfakeroot_1.14.4-0+sb1_armel.deb
  [sbox-FREMANTLE_ARMEL_GCC472: ~] > apt-get update
  [sbox-FREMANTLE_ARMEL_GCC472: ~] > apt-get update
Line 56: Line 60:
  [sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update
  [sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update
  [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get upgrade
  [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get upgrade
 +
 +
'''IF ERROR''' When you now get an error the next step will show how to solve this, otherwise go to the step where libstdc++6 get installed.
 +
 +
Errors were encountered while processing: /var/cache/apt/archives/libssl0.9.8-dbg_0.9.8zh-1+maemo1+0m5+0cssu0_armel.deb
 +
 +
'''IF ERROR''' Solve it with otherwise go next step.
 +
 +
fakeroot apt-get -f install
 +
 +
'''IF ERROR''' Next errors will pop up.
 +
 +
Sub-process dpkg returned an error code (1)
 +
Setting up libgtk2.0-0 (2:2.14.7-1maemo34+0cssu2+thumb0) ...
 +
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
 +
dpkg: error processing libgtk2.0-0 (--configure):
 +
subprocess installed post-installation script returned error exit status 126
 +
 +
'''IF ERROR''' Solve it by editing following file:
 +
 +
vi /var/lib/dpkg/info/libgtk2.0-0.postinst
 +
 +
'''IF ERROR''' The command in the postinst script could not run, so we will comment out the following lines.
 +
 +
#if [ "$1" = configure ]; then
 +
#  Regenerate theme caches which may need updating after gtk changes
 +
#  if command -v hildon-theme-recache-all >/dev/null 2>&1; then
 +
#    hildon-theme-recache-all
 +
#  fi
 +
#fi
 +
 +
'''IF ERROR''' There is another script which fails.
 +
 +
vi /var/lib/dpkg/info/libgtk2.0-bin.postinst
 +
 +
'''IF ERROR''' So we will comment out the following lines.
 +
 +
#/usr/sbin/update-gtk-immodules
 +
#/usr/sbin/update-gdkpixbuf-loaders
 +
 +
'''IF ERROR''' Now fix it.
 +
 +
fakeroot apt-get -f install
Download and install [http://maemo.merlin1991.at/cssu/develdebs/gcc-4.7.2_fremantle_armel/packages/libstdc%2b%2b6-dev_4.7.2-0%2bcssu0_armel.deb libstdc++6-dev_4.7.2-0+cssu0_armel.deb]
Download and install [http://maemo.merlin1991.at/cssu/develdebs/gcc-4.7.2_fremantle_armel/packages/libstdc%2b%2b6-dev_4.7.2-0%2bcssu0_armel.deb libstdc++6-dev_4.7.2-0+cssu0_armel.deb]
Line 61: Line 107:
''It can complain about libstdc++6 on system is 4.2.1-4maemo13+0m5.''
''It can complain about libstdc++6 on system is 4.2.1-4maemo13+0m5.''
-
 
-
apt-get -f install
 
-
 
-
''can fix that by installing the proper libstdc++6 afterwards.''
 
Line 70: Line 112:
  echo "export DEB_BUILD_OPTIONS=maemo-launcher,thumb,vfp" > /targets/FREMANTLE_ARMEL_GCC472.environment
  echo "export DEB_BUILD_OPTIONS=maemo-launcher,thumb,vfp" > /targets/FREMANTLE_ARMEL_GCC472.environment
 +
echo "export PIXMAN_DISABLE=arm-neon" >> /targets/FREMANTLE_ARMEL_GCC472.environment
Your target should be ok at that point. Make sure to reenter the target, so updated FREMANTLE_ARMEL_GCC472.environment to take effect
Your target should be ok at that point. Make sure to reenter the target, so updated FREMANTLE_ARMEL_GCC472.environment to take effect
 +
 +
fakeroot apt-get -f install
 +
 +
''can fix that by installing the proper libstdc++6 afterwards.''
Line 79: Line 126:
  /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.22 assertion fail ../../../sources/binutils-2.22/bfd/elf32-arm.c:11467
  /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.22 assertion fail ../../../sources/binutils-2.22/bfd/elf32-arm.c:11467
These warnings can be ignored. For some reason, the linker thinks that the object is hardfp, but as it is softfp the assertion fails.
These warnings can be ignored. For some reason, the linker thinks that the object is hardfp, but as it is softfp the assertion fails.
 +
 +
'''ERROR ON UPGRADE''' A note I made.
 +
 +
fakeroot apt-get upgrade
 +
fakeroot apt-get install libcurl3
 +
fakeroot apt-get install ke-recv
 +
fakeroot apt-get install obexd
 +
 +
'''ERROR ON UPGRADE''' To install this clock-ui we need another resource.
 +
 +
echo "deb http://maemo.muarf.org/apt-mirror/mirror/downloads.maemo.nokia.com/fremantle/ssu/mr0 ./" >> /etc/apt/sources.list
 +
 +
fakeroot apt-get install clock-ui
 +
 +
 +
 +
[[Category:Documentation]]
 +
[[Category:Fremantle]]
 +
[[Category:Scratchbox]]
 +
[[Category:Community]]

Latest revision as of 19:32, 10 September 2019

This document describes how to setup the CSSU-thumb toolchain (gcc4.7.2-linaro) in scratchbox.


GCC 4.7.2 does not produce thumb binaries by default, you should pass -mthumb if you want thumb resulting executables! without -mthumb it produces regular ARM ELFs


1. You need to have ScratchBox environment already set up.

2. Download gcc-4.7.2-linaro toolchain and extract it under /scratchbox/compilers (may need root privileges for extracting there)

tar xvf linaro-4.7-2012.07-fremantle-armv7a.tar.bz2

3. Create new ScratchBox target FREMANTLE_ARMEL_GCC472

- Login to ScratchBox

$ /scratchbox/login

- Create new ScratchBox target

[sbox->:~]sb-conf st FREMANTLE_ARMEL_GCC472 -c linaro-4.7-2012.07-fremantle-armv7a -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb

replace debian-etch with debian-squeeze if you use ScratchBox Hathor release

[sbox->:~]sb-conf se FREMANTLE_ARMEL_GCC472
[sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf rs maemo-sdk-rootstrap_5.0_20.2010.36-2_armel.tgz
[sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf in -edL
[sbox-FREMANTLE_ARMEL_GCC472: ~] > dpkg -i /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/packages/libfakeroot_1.14.4-0+sb1_armel.deb
[sbox-FREMANTLE_ARMEL_GCC472: ~] > apt-get update
[sbox-FREMANTLE_ARMEL_GCC472: ~] > fakeroot apt-get install maemo-sdk-debug

- Accept Maemo5 SDK EULA and copy the URL. Add nokia-binaries repository URL to /etc/apt/sources.list

[sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update
[sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get install nokia-binaries nokia-apps
[sbox-FREMANTLE_ARMEL_GCC472: ~] >rm -rf /targets/FREMANTLE_ARMEL_GCC472/opt
[sbox-FREMANTLE_ARMEL_GCC472: ~] >mkdir /targets/FREMANTLE_ARMEL_GCC472/opt

- Download ScratchBox errata dependency provider package sb-thumb-errata-provider_0.1-1_armel.deb and install it

dpkg -i sb-thumb-errata-provider_0.1-1_armel.deb

- Add CSSU-testing and CSSU-thumb repos to your /etc/apt/sources.list

echo "deb http://repository.maemo.org/community-testing/ fremantle free non-free" >> /etc/apt/sources.list
echo "deb-src http://repository.maemo.org/community-testing/ fremantle free" >> /etc/apt/sources.list
echo "deb http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free non-free" >> /etc/apt/sources.list
echo "deb-src http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free" >> /etc/apt/sources.list

Remove unneeded package maemo-core-debug

apt-get remove maemo-core-debug

Upgrade your target to latest CSSU-thumb

[sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update
[sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get upgrade

IF ERROR When you now get an error the next step will show how to solve this, otherwise go to the step where libstdc++6 get installed.

Errors were encountered while processing: /var/cache/apt/archives/libssl0.9.8-dbg_0.9.8zh-1+maemo1+0m5+0cssu0_armel.deb

IF ERROR Solve it with otherwise go next step.

fakeroot apt-get -f install

IF ERROR Next errors will pop up.

Sub-process dpkg returned an error code (1)
Setting up libgtk2.0-0 (2:2.14.7-1maemo34+0cssu2+thumb0) ...
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
dpkg: error processing libgtk2.0-0 (--configure):
subprocess installed post-installation script returned error exit status 126

IF ERROR Solve it by editing following file:

vi /var/lib/dpkg/info/libgtk2.0-0.postinst

IF ERROR The command in the postinst script could not run, so we will comment out the following lines.

#if [ "$1" = configure ]; then
#   Regenerate theme caches which may need updating after gtk changes
#  if command -v hildon-theme-recache-all >/dev/null 2>&1; then
#    hildon-theme-recache-all
#  fi
#fi

IF ERROR There is another script which fails.

vi /var/lib/dpkg/info/libgtk2.0-bin.postinst

IF ERROR So we will comment out the following lines.

#/usr/sbin/update-gtk-immodules
#/usr/sbin/update-gdkpixbuf-loaders

IF ERROR Now fix it.

fakeroot apt-get -f install

Download and install libstdc++6-dev_4.7.2-0+cssu0_armel.deb

dpkg -i libstdc++6-dev_4.7.2-0+cssu0_armel.deb

It can complain about libstdc++6 on system is 4.2.1-4maemo13+0m5.


Create FREMANTLE_ARMEL_GCC472.environment in your /targets directory

echo "export DEB_BUILD_OPTIONS=maemo-launcher,thumb,vfp" > /targets/FREMANTLE_ARMEL_GCC472.environment
echo "export PIXMAN_DISABLE=arm-neon" >> /targets/FREMANTLE_ARMEL_GCC472.environment

Your target should be ok at that point. Make sure to reenter the target, so updated FREMANTLE_ARMEL_GCC472.environment to take effect

fakeroot apt-get -f install

can fix that by installing the proper libstdc++6 afterwards.


Interesting new flags can be: -mfpu=neon -ftree-vectorize -fgraphite -lto

The compiler will give the following warning:

/scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.22 assertion fail ../../../sources/binutils-2.22/bfd/elf32-arm.c:11467

These warnings can be ignored. For some reason, the linker thinks that the object is hardfp, but as it is softfp the assertion fails.

ERROR ON UPGRADE A note I made.

fakeroot apt-get upgrade
fakeroot apt-get install libcurl3
fakeroot apt-get install ke-recv
fakeroot apt-get install obexd

ERROR ON UPGRADE To install this clock-ui we need another resource.

echo "deb http://maemo.muarf.org/apt-mirror/mirror/downloads.maemo.nokia.com/fremantle/ssu/mr0 ./" >> /etc/apt/sources.list
fakeroot apt-get install clock-ui