Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 349297 - dev-lang/parrot-2.9.1 doesn't find libpcre.so.0 in /lib(64) - fails tests, possibly runtime
Summary: dev-lang/parrot-2.9.1 doesn't find libpcre.so.0 in /lib(64) - fails tests, po...
Status: RESOLVED TEST-REQUEST
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: High normal with 1 vote (vote)
Assignee: Gentoo Perl team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-21 14:33 UTC by David Leverton
Modified: 2012-03-22 13:11 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Leverton 2010-12-21 14:33:01 UTC
dev-lang/parrot-2.9.1 fails the test phase with:

t/library/pcre.t ............................ Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/2 subtests 

#   Failed test 'libpcre loading'
#   at t/library/pcre.t line 51.
#          got: 'Failed to load libpcre
# '
#     expected: 'Loaded
# '

#   Failed test 'soup to nuts'
#   at t/library/pcre.t line 106.
# Exited with error code: 1
# Received:
# ok 1
# Failed to load libpcre
# current instr.: 'parrot;PCRE;init' pc 135 (runtime/parrot/library/pcre.pir:133)
# called from Sub 'main' pc 32 (/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/t/library/pcre_2.pir:28)
# 
# Expected:
# ok 1
# ok 2
# ok 3
# ok 4
# ok 5
# 
# Looks like you failed 2 tests of 2.

(I suspect it also wouldn't work if installed without running tests and someone tried to use the pcre binding with the installed version, although I haven't tried it.)

strace shows it looking for the pcre shared library only in /usr/lib(64), not /lib(64) which is the proper location at least with dev-libs/libpcre-8.02:

shiny-one ~ # cd /var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/t/library/
shiny-one library # LD_LIBRARY_PATH=/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/blib/lib strace -f -o >(grep libpcre) perl pcre.t &>/dev/null
13213 stat("/usr/lib/libpcre.so", {st_mode=S_IFREG|0755, st_size=526, ...}) = 0
13213 open("/usr/lib/libpcre.so", O_RDONLY) = 3
13213 stat("/usr/lib/libpcre.so", {st_mode=S_IFREG|0755, st_size=526, ...}) = 0
13213 open("/usr/lib/libpcre.so", O_RDONLY) = 3
13213 stat("/usr/lib/libpcre.so.3", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/runtime/parrot/dynext/libpcre.so.3", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("dynext/libpcre.so.3", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/dynext/libpcre.so.3", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("//usr/lib64/parrot/2.9.1/dynext/libpcre.so.3", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("libpcre.so.3", 0x7fffb26bdff0) = -1 ENOENT (No such file or directory)
13213 stat("/usr/lib/libpcre.so.0", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/runtime/parrot/dynext/libpcre.so.0", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("dynext/libpcre.so.0", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/dynext/libpcre.so.0", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("//usr/lib64/parrot/2.9.1/dynext/libpcre.so.0", 0x7fffb26bdf90) = -1 ENOENT (No such file or directory)
13213 stat("libpcre.so.0", 0x7fffb26bdff0) = -1 ENOENT (No such file or directory)
13213 write(1, "Failed to load libpcre", 22) = 22
13207 read(3, "Failed to load libpcre\n", 4096) = 23
13207 write(6, "not ok 1 - libpcre loading\n", 27) = 27
13207 write(7, "#   Failed test 'libpcre loading"..., 34) = 34
13215 stat("/usr/lib/libpcre.so", {st_mode=S_IFREG|0755, st_size=526, ...}) = 0
13215 open("/usr/lib/libpcre.so", O_RDONLY) = 3
13215 stat("/usr/lib/libpcre.so", {st_mode=S_IFREG|0755, st_size=526, ...}) = 0
13215 open("/usr/lib/libpcre.so", O_RDONLY) = 3
13215 stat("/usr/lib/libpcre.so.3", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/runtime/parrot/dynext/libpcre.so.3", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("dynext/libpcre.so.3", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/dynext/libpcre.so.3", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("//usr/lib64/parrot/2.9.1/dynext/libpcre.so.3", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("libpcre.so.3", 0x7fffa557b800) = -1 ENOENT (No such file or directory)
13215 stat("/usr/lib/libpcre.so.0", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/runtime/parrot/dynext/libpcre.so.0", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("dynext/libpcre.so.0", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("/var/tmp/paludis/dev-lang-parrot-2.9.1/work/parrot-2.9.1/dynext/libpcre.so.0", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("//usr/lib64/parrot/2.9.1/dynext/libpcre.so.0", 0x7fffa557b7a0) = -1 ENOENT (No such file or directory)
13215 stat("libpcre.so.0", 0x7fffa557b800) = -1 ENOENT (No such file or directory)
13215 write(2, "Failed to load libpcre\n", 23) = 23
13207 read(3, "ok 1\nFailed to load libpcre\ncurr"..., 4096) = 220

(/usr/lib(64)/libpcre.so exists, but is a linker script produced by the gen_usr_ldscript function from toolchain-funcs.eclass, so it can't be dlopened.)

Creating /usr/lib64/libpcre.so.0 as a symlink to /lib64/libpcre.so.0 allows the tests and installation to complete successfully.
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2010-12-21 15:05:34 UTC
Which version of libpcre is that?
Comment 2 David Leverton 2010-12-21 16:16:37 UTC
That's dev-libs/libpcre-8.02
Comment 3 Diego Elio Pettenò (RETIRED) gentoo-dev 2011-03-11 21:38:54 UTC
8.12 same issue it seems.
Comment 4 Martin von Gagern 2011-08-01 20:52:55 UTC
dev-lang/parrot-3.6.0[pcre] fails to build for me:

Compiled: parrot_nci_thunk_gen.o
x86_64-pc-linux-gnu-gcc -o parrot_nci_thunk_gen "parrot_nci_thunk_gen.o" "/var/tmp/portage/dev-lang/parrot-3.6.0/work/parrot-3.6.0/src/parrot_config.o"  -L"/var/tmp/portage/dev-lang/parrot-3.6.0/work/parrot-3.6.0/blib/lib" -lparrot -Wl,-E -Wl,--as-needed   -lnsl -ldl -lm -lcrypt -lutil -lpthread -lrt -lreadline  -lffi    -lpthread -ldl -lm   -L/usr/lib64  -licuuc -licudata  -lpthread -ldl -lm   
Linked: parrot_nci_thunk_gen
./parrot_nci_thunk_gen \
        --loader-name=Parrot_glut_nci_loader \
        --loader-storage-class=PARROT_DYNEXT_EXPORT \
        --output=src/glut_nci_thunks.c \
        <src/glut_nci_thunks.nci
Failed to load libpcre
current instr.: 'parrot;PCRE;init' pc 249 (runtime/parrot/library/pcre.pir:162)
called from Sub 'read_one_sig' pc 1982 (tools/dev/nci_thunk_gen.pir:861)
called from Sub 'read_sigs' pc 1903 (tools/dev/nci_thunk_gen.pir:823)
called from Sub 'main' pc 40 (tools/dev/nci_thunk_gen.pir:48)
make: *** [src/glut_nci_thunks.c] Error 1
emake failed

I guess this is the same problem.
Comment 5 Sergiy Borodych 2011-08-02 10:29:28 UTC
Has the same failure as #c4
stable amd64

[ebuild     U ~] dev-lang/parrot-3.6.0 [3.3.0] USE="gdbm nls opengl pcre ssl unicode -doc -examples -gmp" 0 kB
[ebuild     U ~] dev-lang/rakudo-2011.07 [2011.04] USE="-doc" 0 kB
Comment 6 Martin von Gagern 2011-08-02 14:41:07 UTC
Bug 377379 comment 5 has a patch that might help for this issue here as well. Should apply to parrot versions since 2.9.0, as those are the ones containing the commit that is suspected to have introduced this issue.
Comment 7 Patrick Lauer gentoo-dev 2012-03-22 13:11:04 UTC
Should be fixed in newer versions.