My webmail provider updated the design and it keeps on logging me out everytime 
I send this. Please delete any double posts/ or triple as this is my third 
attempt to send this thing.
I gave it 20 or so minutes to see if any appeared pm the mailing list.

I was hoping to upload the file to the trac and link them here, but I am 
currently uncertain as to how.  
BTW. HLFS team, heres that community support you were commenting on. I have 
spent much time getting this system working and as far as I can tell it is much 
more stable that the previous one by the hlfs-dev book.  As a warning I 
continue to weed out problems that do not relate to pie and other security 
related features added this project by not using the security features, 
everything else is pretty much closely followed.
---------

TOOLCHAIN:
I am using 2.6.16.16 as the stable kernel headers for this project.  This is 
probably the only 2.6.* kernel in which is worth being called stable in any 
manner.  Only use this headers if you want a stable kernel. Due to numerous 
changes in the kernel itself using 2.6.12 headers by maz?? will break many 
things.  There are too many changes and to many programs uses kernel headers.  
Most notably is of course anything relating to Xorg and Mesa. If you want the 
2.6.12 headers, do not use a kernel past 2.6.13.  This will cause numerous 
problems and I believe many of those problems that recenlty appeared to the 
2.6.14 are related to this. (The kernel just changes to much these days to use 
*any* kernel headers for *any* version. 

As I have been told by Jerome Pinot, you can use make prepare to generate the 
kernel versioning info. As I am sticking with the specific kernel, I did this 
once and backed up the version.h file to just copy and paste across.
No problems regarding the toolchain installation arise from these headers.
# make mrproper
# make prepare
# cp -R linux-2.6.16.16/include/asm-i386 /newsystempath/usr/include/asm
# cp -R linux-2.6.16.16/include/asm-generic 
/newsystempath/usr/include/asm-generic
# cp -R linux-2.6.16.16/include/linux /newsystempath/usr/include/linux
or
# cp -R linux-2.6.16.16/include/asm-i386 /newsystempath/usr/include/asm
# cp -R linux-2.6.16.16/include/linux /newsystempath/usr/include/linux
# cp /somewheresafe/premadeversion.h /newsytempath/usr/include/linux/version.h

uClibc can now directly use safe kernel headers. (there are only one or two 
know problems that I have discovered and they donot effect to toolchain.  These 
will be discused later.
Follow the instructions from the hlfs-dev book as nothing changes here.

This is part only on uClibc so, the gcc-phase that follows this will be under a 
different mailing. (Instead of using headers in the toolchain I have uClibc 
getting them from the target system, so the linux source path uClibc uses is 
pointed directly to the linux source.
second pass of uClibc is identical to the book as well.

TARGET_SYSTEM:
the linux headers are already installed, so we can skip most of that.

Here is where the problems exist in the kernel headers(all two of them):
1)
2.6.16.* now have the #ifdef __KERNEL__ to allow using kernel headers safely, 
but some projects missed some parts (with somewhat good reason):
 /usr/include/linux/input.h
is missing the #ifdef __KERNEL__
lines: 796-> 814 where:
struct input_device_id {
is defined and ends
I have a patch I can individually mail, as this posting will be big enough as 
is.

2)
/usr/include/linux/config.h:
is a stub-file pointing to a non-existant file (or no-longer existing)
I run this to fix it:
sed -i -e 's|#include <linux/autoconf.h>|//&|' 
/newsystempath/usr/include/linux/config.h

The normal binutils -ld  stuff would happen here.
Now to the target system's uClibc.
I perform a bootstrap here as the gcc-4.1.0 hardcodes it's specfile, so 
uClibc/gcc/binutils will get installed twice.
This first install, the ld gets installed statically. (In the uClibc .cofig 
file make sure LD gets linked statically)

I have a series of files and a patch to add more mathlib support that shamefuly 
does not exist in uClibc.  The following functions are added to the math 
library:
llroundf, llroundl, lroundf, lroundl, round, roundf, trunc, truncf.
Once again I can mail these files seperately.

FIRST PASS (bootstrap):
#patch /somewheresafe/uClibc-0.9.28-add_round-1.patch
# cp -v 
/somewheresafe/s_{llroundf,llroundl,lroundf,lroundl,round,roundf,trunc,truncf}.c
 libm/
perform normal uClibc stuff from this point on, but make sure the LD is 
statically linked
DO NOT attempt to install the utils using the CC="gcc 
-Wl,--dynamic-linker,...." as the linker is NOT dynamic in this stage.
REMOVE ALL *.a files installed by uClibc (even libc.a)

at this point gcc and binutils get installed (not statically linked)

SECOND PASS (clean install):
same steps as FIRST PASS, except:
LD must now be dynamic and the CC="gcc -WL,.." option should be used on the 
utils.
continue to remove libc.a we donot want gcc linking to the static libc file. 
(or I donot, the hlfs team may have other reasons for doing this)

uClibc should now be installed without a single problem on gcc-4.1.0. In fact, 
it should be better than ever as more standard mathlib functions are there.

The next mailing should be about gcc-4.1.0.
I am doing it this way so discussions can be focused on individual packages.

As a final warning, I disable NLS everywhere on my system, but I am still 
currently required to build NLS support into uClibc.  My initial gcc-4.1.0 
system did, however, include NLS everywhere so my instructions still seem to 
apply to both cases.

I hope this helps you guys and the hlfs-team.  Please e-mail me for the needed 
files, I donot want to flood this list with the numerous patches/hacks/fixes 
and other files I have created to get things to work.

- Kevin Day
-- 
http://linuxfromscratch.org/mailman/listinfo/hlfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to