On Sun, Jul 01, 2012 at 11:21:44AM -0700, Bryan Kadzban wrote:
> Fun fun fun. :-)
>
> Andrew Benton wrote:
> > test-installation.pl failed with an error:
> >
> > root:/sources/glibc-2.16.0# CC="gcc" /usr/bin/perl
> > scripts/test-installation.pl /sources/glibc-build/
> > Unmatched ( in regex; marked by <-- HERE in m/$( <-- HERE if
> > $(abi-64-ld-soname),$(abi-64-ld-soname),ld/ at scripts/test-installation.pl
> > line 172, <LDD> line 1.
>
> Is this an issue with the output of ldd?
> If you can find the ldd that
> this glibc built (preferably not the one in the chapter5 /tools/bin),
> what happens if you run it on any of the /tmp/tst-prg* files?
No, the built but not yet installed version works fine:
root in chroot /building# glibc-build/elf/ldd /tmp/test-prg23425
linux-vdso.so.1 (0x00007fff77dff000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f057033f000)
through to
libnss_compat.so.2 => /lib64/libnss_compat.so.2 (0x00007f056d958000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0570542000)
> Because the test-installation.pl script simply builds a tiny C program
> with "all" the glibc libraries, and runs ldd on it. Also it run sthis
> on the contents of soversions.mk:
>
> if (/^ld\.so/) {
> ($ld_so_name, $ld_so_version)= /=(.*)\.so\.(.*)$/;
> }
>
> so it might be useful to ensure the file's contents still work with that
> regexp, not extracting something silly that would cause the later syntax
> error.
>
Bryan, you were perspicacious. I've just spent a few hours
re-energising my limited perl knowledge. First, to try to
instrument test-installation.pl, then to understand what is
happening.
When the ld.so regexp triggers on x86_64, the line contains:
ld.so-version=$(if $(abi-64-ld-soname),$(abi-64-ld-soname),ld.so.1)
My initial reaction when I saw that was unprintable - I still have
no idea where the $(abi-64-ld-soname) comes from. But:
That gets split:
ld_so_name now set to $(if $(abi-64-ld-soname),$(abi-64-ld-soname),ld
ld_so_version now set to 1)
A couple of =~ s/foo/bar/ later and I have:
ld_so_name now set to $(abi-64-ld-soname),$(abi-64-ld-soname),ld
ld_so_version now set to 1
Your new glibc installation seems to be ok.
[ can I say QED ? Perhaps best not to :) ]
The loop with context from line 115 now reads:
} else {
if (/^ld\.so/) {
($ld_so_name, $ld_so_version)= /=(.*)\.so\.(.*)$/;
$ld_so_name =~ s/^\$\(if//;
$ld_so_version =~ s/\)$//;
}
}
I *assume* that those "seds" won't trigger on non-multi-whatever
platforms (multi-ABI ?), but nowadays I only build on x86_64.
So, my next step will be to see I can find a way of adding both
those lines in a sed. But not tonight, I'm supposed to be spraying
some paint before I go to bed :)
After that, I'll try to fix my build so that I can install glibc,
then stop and tar it all up - I'm guessing this is a perl-5.16
issue [ nobody apart from LFS seems to have noticed anything amiss ]
so I'll see if I can revert to perl-5.14 with everything else as in
last night's svn. Hopefully, that will successfully run
test-installation.pl, and also my modified version. [sigh/]
ĸen
--
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