I decided to run farce on the svn book, because it looked as if some of
the issues I was seeing in CLFS were also present in LFS. Here are my
results for LFS svn-20060103 ICA, built from svn-20050902, kernel
2.6.13.
(this is with the first toolchain linked againist /tools as recently
discovered).
Variations from the book: no tests, except that I accidentally tested
glibc on build two (so obviously that doesn't need expect), no locales,
stop after chapter 6, rebuild in place without /tools in the path, for a
total of three builds. Then tarred up with --one-file-system (so, no
/dev) and extracted as a user.
The following initial results are with my development copy of farce.
Comparison between first and second builds:
___________________________________________
4 files in only one of the builds
16453 files compared
15315 files identical
2 files differed as expected (/root/.bash_history, /usr/share/info/dir)
1101 allowable differences (my date/time regexps and/or strip-all)
21 differed but with the same disassembled code (i.e. the data differs)
14 differed
The disassembly of code replaces, for the moment, my categorization of
"these always differ".
Files only in one build:
(these are all only in the second build, they look harmless)
/etc/man.conf.orig
/lib/libhistory.so.5.1.old
/lib/libreadline.so.5.1.old
/root/.lesshst
Files that differ, but with same code:
e2fsck, fsck.ext2, fsck.ext3 (the same file, by three names)
insmod.static
ldconfig
sln
vim
libBrokenLocale.a
libanl.a
libc.a
libc_nonshared.a
libcrypt.a
libdl.a
libm.a
libnsl.a
libopcodes.a
libpthread.a
libresolv.a
librpcsvc.a
librt.a
libutil.a
Files which differ between first and second:
man.conf this is a funny one, on the first build it contains
# COL
and on the second
# COL /usr/bin/col
- these are both commented, so I'm not too bothered
and anyway, we've moved to man-db now.
bison as Dan noted
gccbug this will use mktemp if it was present when gcc was compiled,
so I guess we need to build mktemp earlier.
libtool EGREP is coded in, was initially /tools/bin/grep -E !!!
O0g.gch precompiled header
o2g.gch ditto
libbfd.a
libiberty.a
libstdc++.a anonymous namespaces, I guess
libstdc++.la acquires
-L/usr/lib/gcc/i686-pc-linux-gnu/4.0.2
-L/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/../../..
for second build
libstdc++.so.6.0.6 anonymous namespaces, I guess
libsupc++.a anonymous namespaces, I guess
libsupc++.la as libstdc++.la
Config_heavy.pl hostcat changes, from
hostcat=''
to
hostcat='cat /etc/hosts'
(I suspect this is harmless)
Comparison between second and third builds:
___________________________________________
16457 files compared
15791 files identical
2 files differed as expected (/root/.bash_history, /usr/share/info/dir)
658 allowable differences (my date/time regexps and/or strip-all)
0 differed but with the same disassembled code (i.e. the data differs)
6 differed
files which differ between second and third builds
man.conf.orig (harmless)
O0g.gch
O2g.gch
libstdc++.a
libstdc++.so.6.0.6
libsupc++.a
Issues:
______
(i) toolchain - I'm hoping that linking correctly will remove some of
the other differences. But, any indications how we're likely to fix
the toolchain ?
(ii) bison - as Dan has already noted. For my next build I'll ignore
this and try to get sme of the other issues out of the way ( I can
already see multiple tests for this, to se if both flex and bison are
indeed needed in /tools).
(iii) gccbug will use mktemp if it is present at compile time, so I'll
try building mktemp earlier.
(iv) libtool - looks as if this version needs to be built after grep,
will try moving grep between file and libtool.
(v) perl - I'll try creating /etc/hosts before the configure, but I
think this is probably cosmetic.
(vi) I think that using objdump -S is interesting, but the lack of any
files which differ but have the same code between builds 2 and 3
suggests these differences are real.
For the moment, I won't include the utf8 changes in my testing, because
I want to concentrate on these issues.
Changes with farce-001-5:
_________________________
I'm going to label the precompiled headers and these specific
libstdc++ and libsupc++ libraries as "differed as expected" in farce.
This gives the following restated totals in farce-001-5
build 1-2 build 2-3
in only one build 4 0
compared 16453 16457
identical 15315 15791
differed as expected 7 7
allowable differences 1101 658
differed, same code 21 0
differed 9 1
In other words, only man.conf.orig is flagged as different after the
third build.
please also note that farce-001-5 accepts a '--directory directory-name'
option before the existing tree1 filelist1 tree2 filelist2 options.
Oh, and if you do have a lot of ELF files that differ, farce now takes
considerably longer to execute, because it runs them all through objdump -S
- for the moment I'm keeping this code path so that I can identify files
with the same code, but I may change my mind.
The release is now available at
http://www.linuxfromscratch.org/~ken/farce-001-5.tar.bz2
As ever, E&O E.
Ken
--
das eine Mal als Trag?die, das andere Mal als Farce
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page