maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Development (https://talk.maemo.org/forumdisplay.php?f=13)
-   -   Gentoo x86_64 SDK (https://talk.maemo.org/showthread.php?t=33073)

pinsh 2009-10-20 12:59

Re: Gentoo x86_64 SDK
 
allnameswereout,

I just verified everything with the beta installer :-( maybe some else can test the following with the final version. Please look at the final instructions http://wiki.maemo.org/Documentation/...K_Installation and adjust the SDK installation part below.

Here are updated instructions, please use these not the instructions above:

1. Re-emerge x11-base/xorg-server with the "kdrive" USE flag enabled, this will give you Xephyr.

2. Install app-arch/dpkg (Debian package maintenance system), this is needed by the maemo 5 SDK installer.

3. Instead of using the scratchbox installer from maemo, install scratchbox using portage. Unfortunately, scratchbox-devkit-git
and scratchbox-devkit-svn are not yet in portage, so we roll our own ebuilds (assuming PORTDIR_OVERLAY="/usr/portage/local"):

Create /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-git-1.0.1.ebuild and paste the following into it:
Code:

SBOX_GROUP="sbox"
RESTRICT="strip binchecks"

DESCRIPTION="A cross-compilation toolkit designed to make embedded Linux application development easier."
HOMEPAGE="http://www.scratchbox.org/"
SRC_URI="http://scratchbox.org/download/files/sbox-releases/stable/tarball/${P}-i386.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE=""

RDEPEND="=dev-embedded/scratchbox-1.0*"
RDEPEND=""

TARGET_DIR="/opt/scratchbox"

S=${WORKDIR}/scratchbox

src_install() {
        dodir ${TARGET_DIR}
        cp -pRP * "${D}/${TARGET_DIR}"
}

Create /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-svn-1.0.ebuild and paste the following into it:
Code:

SBOX_GROUP="sbox"
RESTRICT="strip binchecks"

DESCRIPTION="A cross-compilation toolkit designed to make embedded Linux application development easier."
HOMEPAGE="http://www.scratchbox.org/"
SRC_URI="http://scratchbox.org/download/files/sbox-releases/stable/tarball/${P}-i386.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE=""

RDEPEND="=dev-embedded/scratchbox-1.0*"
RDEPEND=""

TARGET_DIR="/opt/scratchbox"

S=${WORKDIR}/scratchbox

src_install() {
        dodir ${TARGET_DIR}
        cp -pRP * "${D}/${TARGET_DIR}"
}

Do the following to add the ebuilds to portage:
Code:

ebuild /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-git-1.0.1.ebuild digest
ebuild /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-svn-1.0.ebuild digest

Unmask the necessary packages:

/etc/portage/package.keywords/maemo5 :
Code:

dev-embedded/scratchbox ~*
dev-embedded/scratchbox-devkit-apt-https ~*
dev-embedded/scratchbox-devkit-debian ~*
dev-embedded/scratchbox-devkit-doctools ~*
dev-embedded/scratchbox-devkit-perl ~*
dev-embedded/scratchbox-devkit-qemu ~*
dev-embedded/scratchbox-toolchain-cs2007q3-glibc2_5 ~*
dev-embedded/scratchbox-devkit-git ~*
dev-embedded/scratchbox-devkit-svn ~*

/etc/portage/package.unmask/maemo5 :
Code:

=dev-embedded/scratchbox-1.0.16
dev-embedded/scratchbox-devkit-apt-https
dev-embedded/scratchbox-devkit-debian
dev-embedded/scratchbox-devkit-doctools
dev-embedded/scratchbox-devkit-perl
dev-embedded/scratchbox-devkit-qemu
dev-embedded/scratchbox-toolchain-cs2007q3-glibc2_5


Install everything:
Code:

emerge -av scratchbox scratchbox-devkit-apt-https scratchbox-devkit-debian scratchbox-devkit-doctools scratchbox-devkit-perl scratchbox-devkit-qemu scratchbox-toolchain-cs2007q3-glibc2_5 scratchbox-toolchain-cs2007q3-glibc2_5 scratchbox-devkit-git scratchbox-devkit-svn
4. Start scratchbox:
Code:

/etc/init.d/scratchbox start
5. Read the instructions "4. Installing on 64bit Debian based distrubution" at http://maemo.org/development/sdks/ma...0_installation (the stuff about vdso
and where to download the installer). Install the SDK as follows:

Code:

./maemo-sdk-install_5.0beta2.sh -s /opt/scratchbox/
NOTE: This installs the beta SDK, please try the script for the final version instead (not yet tested by me):
http://wiki.maemo.org/Documentation/...K_Installation


6. Install the nokia-binaries (URL shown by the installer script, see instructions for more info)

7. Follow the instructions "2. Starting/shutting down the SDK UI", but use
Code:

/opt/scratchbox login
to login.

Note that the versions of the scratchbox packages installed are slightly different than those installed by the maemo scratchbox installer. So far I haven't done any serious development using the SDK setup as described here nor have I tried compiling and running packages for the ARM target (unfortunately I don't have a N900 to test it).

gwax 2009-11-11 22:20

Re: Gentoo x86_64 SDK
 
Quote:

Originally Posted by pinsh (Post 352531)
a whole bunch of instructions

Having just gone through the process of installing the Maemo 5 Final SDK on my x86_64 Gentoo system, I'll tell you what worked for me (taken and slightly modified from pinsh's instructions):

1. (as root) Re-emerge x11-base/xorg-server with the "kdrive" USE flag enabled, this will give you Xephyr.

2. (as root) Install app-arch/dpkg (Debian package maintenance system), this is needed by the maemo 5 SDK installer.

3. (as root) Instead of using the scratchbox installer from maemo, install scratchbox using portage. Unfortunately, scratchbox-devkit-git
and scratchbox-devkit-svn are not yet in portage, so we roll our own ebuilds (assuming make.conf specifies PORTDIR_OVERLAY="/usr/portage/local"):

Create /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-git-1.0.1.ebuild and paste the following into it:
Code:

SBOX_GROUP="sbox"
RESTRICT="strip binchecks"

DESCRIPTION="A cross-compilation toolkit designed to make embedded Linux application development easier."
HOMEPAGE="http://www.scratchbox.org/"
SRC_URI="http://scratchbox.org/download/files/sbox-releases/stable/tarball/${P}-i386.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE=""

RDEPEND="=dev-embedded/scratchbox-1.0*"
RDEPEND=""

TARGET_DIR="/opt/scratchbox"

S=${WORKDIR}/scratchbox

src_install() {
        dodir ${TARGET_DIR}
        cp -pRP * "${D}/${TARGET_DIR}"
}

Create /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-svn-1.0.ebuild and paste the following into it:
Code:

SBOX_GROUP="sbox"
RESTRICT="strip binchecks"

DESCRIPTION="A cross-compilation toolkit designed to make embedded Linux application development easier."
HOMEPAGE="http://www.scratchbox.org/"
SRC_URI="http://scratchbox.org/download/files/sbox-releases/stable/tarball/${P}-i386.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE=""

RDEPEND="=dev-embedded/scratchbox-1.0*"
RDEPEND=""

TARGET_DIR="/opt/scratchbox"

S=${WORKDIR}/scratchbox

src_install() {
        dodir ${TARGET_DIR}
        cp -pRP * "${D}/${TARGET_DIR}"
}

Do the following to add the ebuilds to portage:
Code:

ebuild /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-git-1.0.1.ebuild digest
ebuild /usr/portage/local/dev-embedded/scratchbox-devkit-git/scratchbox-devkit-svn-1.0.ebuild digest

Unmask the necessary packages:

/etc/portage/package.keywords/maemo5 :
Code:

## maemo5
dev-embedded/scratchbox ~*
dev-embedded/scratchbox-devkit-apt-https ~*
dev-embedded/scratchbox-devkit-debian ~*
dev-embedded/scratchbox-devkit-doctools ~*
dev-embedded/scratchbox-devkit-perl ~*
dev-embedded/scratchbox-devkit-qemu ~*
dev-embedded/scratchbox-toolchain-cs2007q3-glibc2_5 ~*
dev-embedded/scratchbox-devkit-git ~*
dev-embedded/scratchbox-devkit-svn ~*

Install everything:
Code:

emerge -av scratchbox scratchbox-devkit-apt-https scratchbox-devkit-debian scratchbox-devkit-doctools scratchbox-devkit-perl scratchbox-devkit-qemu scratchbox-toolchain-cs2007q3-glibc2_5 scratchbox-toolchain-cs2007q3-glibc2_5 scratchbox-devkit-git scratchbox-devkit-svn
4. (as root) check if vdso/vsyscall is enabled:
Code:

sysctl abi.vsyscall32
sysctl vm.vdso_enabled
sysctl kernel.vdso

if any are non-zero repeat the query command and append =0 as:
Code:

sysctl abi.vsyscall32=0
ONLY if you test this and it works, you can update your /etc/sysctl.conf file by adding a line (minus the sysctl command):
Code:

abi.vsyscall32=0
make sure you test this first or it may make your system unbootable (alternatively, you can issue the sysctl command before using the SDK).

5. (as root) Start scratchbox:
Code:

/etc/init.d/scratchbox start
6. (as root) Add yourself to the scratchbox group:
Code:

gpassed sbox -a YOURUSERNAME
7. (as root) Add yourself as a scratchbox user:
Code:

/opt/scratchbox/sbin/sbox_adduser YOURUSERNAME
8. (as YOURUSERNAME) Install Maemo 5 SDK:
Code:

./maemo-sdk-install_5.0.sh -s /opt/scratchbox/
Follow the link at the end of the install to get access to the Nokia Binaries repository (STORE THIS LINE FOR LATER).

9. (as YOURUSERNAME) login to scratchbox:
Code:

/opt/scratchbox/login
10. (in scratchbox) add Nokia Binaries:
Code:

[sbox-FREMANTLE_X86: ~] > sb-conf select FREMANTLE_ARMEL
[sbox-FREMANTLE_ARMEL: ~] > nano /etc/apt/sources.list  # add deb line stored in step 8
[sbox-FREMANTLE_ARMEL: ~] > apt-get update
[sbox-FREMANTLE_ARMEL: ~] > fakeroot apt-get install nokia-binaries nokia-apps

Code:

[sbox-FREMANTLE_ARMEL: ~] > sb-conf select FREMANTLE_X86
[sbox-FREMANTLE_X86: ~] > nano /etc/apt/sources.list  # add deb line stored in step 8
[sbox-FREMANTLE_X86: ~] > apt-get update
[sbox-FREMANTLE_X86: ~] > fakeroot apt-get install nokia-binaries nokia-apps

Now you should be all set and ready to go

erdferkel 2009-12-04 08:26

Re: Gentoo x86_64 SDK
 
It appears that scratchbox-devkit-git and scratchbox-devkit-svn are now available in portage, so you can skip step 3. I am currently trying an install...

Ok, was able to get everything installed and working.

Oops, spoke too soon. The scratchbox environment seems to work, can start the maemo GUI. Successfully compiled the helloworld.c and gtk_helloworld-1.c for x86 target. But compile fails for the ARM target. It fails with:

Code:

[sbox-FREMANTLE_ARMEL: ~/MyDocs] > gcc -Wall helloworld.c -o helloworld
/scratchbox/compilers/cs2007q3-glibc2.5-arm7/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /scratchbox/compilers/cs2007q3-glibc2.5-arm7/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/libgcc.a when searching for -lgcc
/scratchbox/compilers/cs2007q3-glibc2.5-arm7/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lgcc
collect2: ld returned 1 exit status

It seems like a problem with the emerged scratchbox environment, if I install with the maemo-scratchbox-install_5.0.sh script, both targets compiled successfully...

Rob1n 2009-12-08 21:14

Re: Gentoo x86_64 SDK
 
Looks like the gentoo ebuild uses an older version of the arm toolchain (1.0.12-10 instead of 1.0.12+lt1-12). I'll try modifying the ebuild to use the newer version and see whether this fixes it.

erdferkel 2009-12-09 08:55

Re: Gentoo x86_64 SDK
 
Hi Rob1n, I just tried doing what you suggested by creating an overlay with the 1.0.12+lt1-12 package and it installed successfully. But it still fails on compile. I found a quick way to test it is to do this in /opt/scratchbox:

Code:

./compilers/cs2007q3-glibc2.5-arm7/bin/arm-none-linux-gnueabi-gcc packages/hello.c -o /tmp/helloArm

./compilers/cs2007q3-glibc2.5-i486/bin/i486-pc-linux-gnu-gcc packages/hello.c -o /tmp/helloX86

It seems like a bug in the gentoo install, i've filed a bug 296294 at bugs.gentoo.org.

Rob1n 2009-12-09 11:46

Re: Gentoo x86_64 SDK
 
I've found the issue - it would appear to be stripping the binaries/libraries during install, which presumably doesn't work properly for ARM files.

Adding:
Code:

RESTRICT="strip binchecks"
to the scratchbox-toolchain-cs2007q3-glibc2_5-1.0.12.ebuild file fixes the issue.

erdferkel 2009-12-09 18:01

Re: Gentoo x86_64 SDK
 
Cool, hopefully that fixes it then. Will try it out when I get a chance. Is this install process documented in a wiki page anywhere?

Ok, I modified the ebuild, did emerge, quick check works. Installed fremantle from nokia, now can compile and run under both targets!

pinsh 2009-12-10 14:30

Re: Gentoo x86_64 SDK
 
Quote:

Originally Posted by erdferkel (Post 419325)
Cool, hopefully that fixes it then. Will try it out when I get a chance. Is this install process documented in a wiki page anywhere?

Ok, I modified the ebuild, did emerge, quick check works. Installed fremantle from nokia, now can compile and run under both targets!

Great! Yes, we should put everything on a wiki page and try to keep it updated. It would also make sense to file a Gentoo bug report for adding the "strip binchecks" to the ebuild.

Rob1n 2009-12-10 14:32

Re: Gentoo x86_64 SDK
 
Quote:

Originally Posted by pinsh (Post 420935)
It would also make sense to file a Gentoo bug report for adding the "strip binchecks" to the ebuild.

I've already added this information to the bug report erdferkel opened (Gentoo bug #296294).

blubbi 2009-12-17 11:10

Re: Gentoo x86_64 SDK
 
Nice to see some Gentoo folks around here.

And thanks for documenting this. I'll try it and report back as soon as I ported my favorite editor "joe" to memo :-)


Cheers
Bjoern


All times are GMT. The time now is 22:02.

vBulletin® Version 3.8.8