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.
Which version of libpcre is that?
That's dev-libs/libpcre-8.02
8.12 same issue it seems.
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.
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
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.
Should be fixed in newer versions.