hey pim,

der toolchain wird automatisch mitkompiliert wenn du ein packet kompilierst, zB which

Code:
make directories ipkg-utils which
du kannst den toolchain auch explizit bauen

Code:
make directories ipkg-utils toolchain
und nun mein momentanes problemchen mit dem toolchain das seit einigen tagen hartnäckig nervt

erstmal mein code

Code:
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
make oleg-target
cd oleg
make directories 
make ipkg-utils 
make toolchain
klappt alles gut bis zum toolchain kompilieren. beim bauen desselbigen wird irgendwann versucht die kernel header runterzuladen. das geht schief weil die angeforderte datei linux-libc-headers-oleg.tar.bz2 nicht auf dem angegebenen server http://www.uclibc.org/downloads/toolchain/ vorhanden ist

Code:
Checking build system dependencies:
CC clean:                                       Ok
CXX clean:                                      Ok
CPP clean:                                      Ok
CFLAGS clean:                                   Ok
CXXFLAGS clean:                                 Ok
sed works:                                      Ok
which installed:                                Ok
GNU make version '3.81':                        Ok
C compiler '/usr/bin/gcc'
C compiler version '4.1.1':                     Ok
bison installed:                                Ok
flex installed:                                 Ok
gettext installed:                              Ok
Build system dependencies:                      Ok

wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/toolchain/linux-libc-headers-oleg.tar.bz2
--2008-05-30 12:36:33--  http://www.uclibc.org/downloads/toolchain/linux-libc-headers-oleg.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2008-05-30 12:36:34 ERROR 404: Not Found.

make[1]: *** [/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2] Error 1
das hab ich erstmal temporär gefixt durch folgende zeile ( in rot ) in /optware/oleg/toolchain/buildroot/toolchain/kernel-headers/kernel-headers.mk

Code:
...
include toolchain/kernel-headers/kernel-headers-new.makefile
include toolchain/kernel-headers/kernel-headers-old.makefile

LINUX_HEADERS_SITE=http://www.wlan-sat.com/boleo/optware
...
nun werden die richtigen(?) header runtergeladen

Code:
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.wlan-sat.com/boleo/optware/linux-libc-headers-oleg.tar.bz2
--2008-05-30 12:42:57--  http://www.wlan-sat.com/boleo/optware/linux-libc-headers-oleg.tar.bz2
Resolving www.wlan-sat.com... 212.18.63.81
Connecting to www.wlan-sat.com|212.18.63.81|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3331707 (3.2M) [application/x-tar]
Saving to: `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2'

100%[========================================================================>] 3,331,707    413K/s   in 8.4s

2008-05-30 12:43:06 (388 KB/s) - `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2' saved [3331707/3331707]
aber schon bald geht das patchen der uclibc schief

Code:
toolchain/patch-kernel.sh /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/uClibc toolchain/uClibc/ uClibc-0.9.29\*.patch
cat ../../sources/buildroot/uClibc-patches/*.patch | patch -d /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/uClibc -p1
patching file Makefile
Hunk #1 FAILED at 163.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej
patching file libc/sysdeps/linux/mips/sigaction.c
Hunk #1 FAILED at 49.
1 out of 1 hunk FAILED -- saving rejects to file libc/sysdeps/linux/mips/sigaction.c.rej
patching file libc/sysdeps/linux/mips/pipe.S
Hunk #1 FAILED at 10.
...
die benutzte uclibc ist der letzte snapshot auf http://www.uclibc.org/downloads/snapshots/. das scheint version 0.9.29 zu sein.

Code:
...
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/snapshots/uClibc-snapshot.tar.bz2
--2008-05-30 12:43:09--  http://www.uclibc.org/downloads/snapshots/uClibc-snapshot.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3533575 (3.4M) [application/x-tar]
Saving to: `/opt/slug/optware/oleg/toolchain/buildroot/dl/uClibc-snapshot.tar.bz2'
...
die patches sind aber für version 0.9.28. dummerweise konnte ich die version der uclibc beim konfigurieren des kernels nicht auswählen, da die snapshot version per default aktiviert ist

Code:
choice[1-8?]: 4
*
* uClibc Options
*
uClibc C library Version
  1. uClibc 0.9.28 (BR2_UCLIBC_VERSION_0_9_28)
> 2. daily snapshot (BR2_UCLIBC_VERSION_SNAPSHOT)
choice[1-2?]: 2
Date (yyyymmdd) of snapshot or 'snapshot' for latest (BR2_USE_UCLIBC_SNAPSHOT) [snapshot] (NEW)
deshalb noch einmal ein temporärer hack, diesmal in /oleg/make/buildroot.mk

Code:
...
ifneq ($(OPTWARE_TARGET), ts101)
...
        sed -i -e 's|^# BR2_UCLIBC_VERSION_0_9_28 is not set|BR2_UCLIBC_VERSION_0_9_28=y|' $(BUILDROOT_BUILD_DIR)/.config
        sed -i -e 's|^BR2_UCLIBC_VERSION_SNAPSHOT=.*|# BR2_UCLIBC_VERSION_SNAPSHOT is not set|' $(BUILDROOT_BUILD_DIR)/.config
endif
jetzt benutz ich die richtige uclibc

Code:
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/uClibc-0.9.28.tar.bz2
--2008-05-30 12:56:50--  http://www.uclibc.org/downloads/uClibc-0.9.28.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1763847 (1.7M) [application/x-tar]
...
das bauen läuft dann ne ganze weile durch, bricht dann aber mit folgendem fehler ab

Code:
...
make -C abi/libgcc_eh all
make[3]: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc: Command not found
make[3]: Entering directory `/opt/slug/optware/oleg/builds/libuclibc++/src/abi/libgcc_eh'
/bin/sh: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc: No such file or directory
/bin/sh: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ld: No such file or directory
/bin/sh: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc: No such file or directory
../../../scripts/find_libgcc_eh.sh: line 8: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc: No such file or directory
/opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ar x
make[3]: /opt/slug/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ar: Command not found
make[3]: *** [unwind-c.o] Error 127
make[3]: Leaving directory `/opt/slug/optware/oleg/builds/libuclibc++/src/abi/libgcc_eh'
das fehlen von gcc und ld versteh ich nicht. der angegebene pfad existiert auf meinem system nicht und sollten die nicht ebenfalls automatisch gebaut werden BEVOR sie benötigt werden?

nun frag ich mich: muss das denn alles so sein warum kann ich zb die uclibc nicht auswählen und wie krieg ich ein richtig sauberen build hin ohne selbst in makefiles rumzupfuschen? freu mich auf tips

wenn der build irgendwann läuft wollte ich für den anfang ein silc-server packet erstellen. hoffe, das es bald soweit ist...

olo