diff options
author | Michael Weber <xmw@gentoo.org> | 2013-06-06 22:19:14 +0000 |
---|---|---|
committer | Michael Weber <xmw@gentoo.org> | 2013-06-06 22:19:14 +0000 |
commit | 4aaaba61f70879a3b7872ff3b75449575d76e713 (patch) | |
tree | 865aac6c4f8aa29524531aef61ed0f7cb009a4d0 /media-libs/openjpeg | |
parent | Add dep on mplayer2/mplayer wrt bug 472456, credit to <tjmillers@gmail.com> f... (diff) | |
download | historical-4aaaba61f70879a3b7872ff3b75449575d76e713.tar.gz historical-4aaaba61f70879a3b7872ff3b75449575d76e713.tar.bz2 historical-4aaaba61f70879a3b7872ff3b75449575d76e713.zip |
Add mupdf patches (USE vanilla)
Package-Manager: portage-2.2.0_alpha177/cvs/Linux x86_64
Manifest-Sign-Key: 0x62EEF090
Diffstat (limited to 'media-libs/openjpeg')
-rw-r--r-- | media-libs/openjpeg/ChangeLog | 6 | ||||
-rw-r--r-- | media-libs/openjpeg/Manifest | 11 | ||||
-rw-r--r-- | media-libs/openjpeg/files/openjpeg-9999-mupdf.patch | 173 | ||||
-rw-r--r-- | media-libs/openjpeg/openjpeg-9999.ebuild | 15 |
4 files changed, 194 insertions, 11 deletions
diff --git a/media-libs/openjpeg/ChangeLog b/media-libs/openjpeg/ChangeLog index 07addb3f9761..cc2fc8ea5f5a 100644 --- a/media-libs/openjpeg/ChangeLog +++ b/media-libs/openjpeg/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for media-libs/openjpeg # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/openjpeg/ChangeLog,v 1.73 2013/06/06 21:57:56 xmw Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-libs/openjpeg/ChangeLog,v 1.74 2013/06/06 22:19:04 xmw Exp $ + + 06 Jun 2013; Michael Weber <xmw@gentoo.org> +files/openjpeg-9999-mupdf.patch, + openjpeg-9999.ebuild: + Add mupdf patches (USE vanilla) *openjpeg-9999 (06 Jun 2013) diff --git a/media-libs/openjpeg/Manifest b/media-libs/openjpeg/Manifest index b70066fdaf45..3a41e655f109 100644 --- a/media-libs/openjpeg/Manifest +++ b/media-libs/openjpeg/Manifest @@ -10,6 +10,7 @@ AUX openjpeg-1.5.1-build.patch 1466 SHA256 ce27ce56235d88e462ffa3fbfc1952d526a71 AUX openjpeg-2.0.0-build.patch 473 SHA256 21f5d1f465c99c41e05d461c1d184aad4bf0c359b08262e8da7625f3e59d1161 SHA512 1ff2ada7fb502f25e8154e0e1dd82073db8a009fe309dcbe209dee98f2787bb2df03643754ae2627fbb78bb60d9cc0110e8f821a8bd70db1bc9790514150e32a WHIRLPOOL 7189cf91e412946e9ebe9a79f27c0eb4061697530b837bea937d8f25a1e50183e288176e2e9661adfff11f1d1e821969c5a109a7db5533114044c0f46a6f3788 AUX openjpeg-2.0.0-pkgconfig.patch 1341 SHA256 8f1f8ce432bac29fe50c21b530bc2bcc2d409e990621d5cefbef3b3e7da41aa7 SHA512 426a3bfe0e34c5496047d42b6d7316b3e71eea99aef2fd25b525738c278ace70c35ea2c690f57b3d0b48e2aa2395950c69db4569342c68a05933387cb0908650 WHIRLPOOL 7f0065d6787badca188ef56fc406a84358b7d0012750176b6fee5eec5f07c16a2f3b50b0a4fb65d61d99c098aff5b09963d6ece697aee2a2a455c8a05b96f377 AUX openjpeg-9999-build.patch 553 SHA256 26e39ee9bb58aec36db06814b7f0889ef353be10a495ec3c57458a03ee6ed630 SHA512 93c21290d182a3d99e340f8b9c8ca6850efc7310194af00817d3e01d35dfe154ea49d8d15fa943f02951703b90283c2ff5ddb5439c62757fb3f9baed565caf30 WHIRLPOOL 4023cd669e5f7bcdd83d51b916133b07e181f01f18c26ada062d2219f36a52e9207edeb54e3572db3867ed076f674d720336ce13b28eb67303ed882eba17a8e5 +AUX openjpeg-9999-mupdf.patch 8762 SHA256 046e6a0c1a29fd8aa839c05858d9d32a66ca37fac25c5ac2b6adf625afc16164 SHA512 33823a7841bfb690ee623f5d395812342e6dbffdad04566b8f6960899b7cfb6a2acfbd9af8ae0ab9d6e75a37d1c4e669f1290ce9447e442792ffe99ebbedadf5 WHIRLPOOL 8a7e31bae2b11e03c6181c3d3b6e9c26c3b7dabac387ca72a04b89763123a04912df47a432723de562a2e71abb253f352669817a3d679a32a212b1a8236ae7a8 DIST openjpeg-1.5.0.tar.gz 2117572 SHA256 c9908fab44432a2ed2550c457cb7e736da6d7c326f1203d23d1082d992364ace SHA512 59501fde86a7f0ab5a1b7e369feb9c4dcb8ea67ead8ffd706592cbba1e0ee7b2a2a9aaa32778632febe0c3dc4171c7af738c5899c732eb420358df3b16d7cf47 WHIRLPOOL 5267edb2809ce8ed96b1a0680049e84c5edefff959b35017dc6d9f645ba180860f89f12dd32b629f777e272ae0c5a25dc2e72a8ff308c02c66ce709f07154865 DIST openjpeg-1.5.1.tar.gz 2112443 SHA256 6cfb3097a1c8e9550131b17663daf927f42707bc3f84196c1390642e87f3ab8d SHA512 7b6c6889eb478008bd659cf2f2dcc0551ebb0c15f6765d1df04bc75208acb300929e399d0ea9b5c69a6d43b39cd1e58ab94bc71c3b6efdfba35903f46b54dd2d WHIRLPOOL 9b28ac807ad6a2b118a0f1cf4322852002bba993feeb07d57f4bf0320a4b92a577ef1ca4fd17644f3f71f3b374cc0bb672eb3dadd2cd5aa9d044411ba049a6fb DIST openjpeg-2.0.0.tar.gz 1770392 SHA256 334df538051555381ee3bbbe3a804c9c028a021401ba2960d6f35da66bf605d8 SHA512 4ef6b3b6933190c845cc376efbfe8bf655954668eb35c2b878c572107fb5d620fc2fc4df0e7de177c8798bee031f33350715c6da44ef07978df29762d89f29a6 WHIRLPOOL cfcc567a292c0a42d618c9f37b8665f98c580b768a74f63caa9f50b0747fed927c1fafe0b1bb86772ff56768c7a102e645792b960051a44da7a556ba4b41195d @@ -18,13 +19,13 @@ EBUILD openjpeg-1.4-r1.ebuild 1407 SHA256 e3432ae9d9487e2b5ac396aa4745dcb288a56a EBUILD openjpeg-1.5.0.ebuild 1371 SHA256 9591572691142c5cb4c1bce0e3ad92ae7fb165498bf858f592707cbb32f7a623 SHA512 5ef56f4cbb9c881d57d9739581ebdd2c69236e78e8d78e9e81eeab20d32b90eba0e032848203cf5b0864a8dcfe51fe10b8fd47ea49fc10400310aa257f833cef WHIRLPOOL 3833e33679156d594184e58feb17280228fdab0aeeae0bbfd504ce4ea064755e13a2e2d15ed43b44fca95d19437acf63f64338b17de0c7c030f030c282902b7b EBUILD openjpeg-1.5.1.ebuild 1375 SHA256 377fef622e4d04f61f30de962067b5ce472c36f9b74e14fdcacfb783fc682ff1 SHA512 669596a8b0ad01bbb66e3d65610e143118fb16e111e8a1eae42137f14fdd112ef71bbff3c8f2245512d7f52363c394a9cdaf798c17f06ecb497fb7541aeb2e97 WHIRLPOOL cea81626344c47205e9009e68a82bb3aaab458fbd6a7353ccba7152c70164cb3bad3ffbb9e9f979d21a534804736cf9061e49d2bef6a4fb1016463ca0c8ef0cf EBUILD openjpeg-2.0.0.ebuild 1188 SHA256 48c2c35e0b1669bf887fff78f7c0c691a8db2d97dfad87ee0b76e9d71f2e8b24 SHA512 a0e2aad5e422661a4c7d704a8a2bdf59c1f64d8690dd792b87c8675e72aed2bb708999ec269b1f2e0fd129ce9047b932f334e642448fc4867668ac1ab8cc24ed WHIRLPOOL 53d2b44fe02bd2c9edda1e6c4a9f99140a98298ca540133f77d3b408976b2bdefd5fb0c26d3c625355eac0805d05e2bf14cf687afd187831e98fa704f4b75e6c -EBUILD openjpeg-9999.ebuild 904 SHA256 3539e0b7ec8b3d64837aac4184cb090544d8d0495d06e052230d98019fa1b021 SHA512 afac5c6ca17ffbc21441a1a28279a9592bf498c05f1bb80ca941f9944f807b1a92d7e3c34af398aaec25c8c65a598069c6ea4bdb30b548b9647e5a468824a0b9 WHIRLPOOL 53f274e8fe65efecc6724ccee0637a956f6a6d4c659c47f40fdcd28f10f23234479997571c48e48f031266a4819997cf3c9a81177cfe1bf4141537093bbbfb77 -MISC ChangeLog 10540 SHA256 366dbf48806b1fba7a1a405a89624cd4b597fab42a8aaf8a16c1bee666a883dc SHA512 07cecc88bbe12cbe2925fd61e2ce308d71b14533678e20667f28847ae41ca1a405bbb7154d71dc3dad007e8348405301373247dad77dfb57a79dfcc3a3c2da23 WHIRLPOOL e842c60cdf4caf5f5703e4f8efd007466609a004e20eb58d79671b4000f8214cb8b2113dfcf9269cc5544ed71964c5eb7895381e9f12854cf452f94b5ed4b7ac +EBUILD openjpeg-9999.ebuild 1003 SHA256 557c9f0076326f1990a1492624ec1b93ab389822352dc4617736161923cb687a SHA512 9a9aa38ac3381d9a79b70a3f573dcfd0e5e4eaa1ea5f44c7b5ff78d308ee30dbebb448638117fcf1a3c1fffa314a18ffa707c2ada1933e51b37ad6af7f89e063 WHIRLPOOL 6a3b763118b3aad6caebc09666bb5a33a5ae25f4da2ca1f99d312d65081cf3165a75dda1768f1e01bf2d163923e9f384cf8776a378c9d1367a71d62b6aa8b038 +MISC ChangeLog 10679 SHA256 54556d6b1713360ed3d96fd867579e3c839d8fe907b67b574bce538460deb850 SHA512 b4ac42b51c4b6d6c2ce80fcb50fd1d0074ac99758623af0c8873896178c127cc239333db58b606de46a93624a9b0e185ddc19e3e5594a7ba2ee5426c724a0858 WHIRLPOOL 272ea7183cd37e6fc0654ec997a78517c8b31b9e51bca8e470928d2f173de5c7a46585d08ee76f05bca4b470a5c9299129cba2d88a709f7e904e5b72368d5ce5 MISC metadata.xml 240 SHA256 798e4e23637a9ded9dae0967f92aa498b39ad088a555aa94b4f716ba040db68c SHA512 c12ab1993f8b10c50a87bf215eb22613dc54cf8f3c049877959228694afcb1e848d9e13247c376c249b39af35945775f736bcf956c7f50e3d49f456e621ef979 WHIRLPOOL b8b0ff194273de5396bfb4d13c2f169eb481dab034aee85f1ebca948babded8851a1cc6c6047e51b6a20bb40654be025677a9872da63526c78eaa64854436f8b -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) -iF4EAREIAAYFAlGxBdoACgkQknrdDGLu8JAFGgD/cqB6kAOpIpo+uWgU2w+JzLvM -TmX3538SeBQQyeRHw/0A/1Cc3AggraPBwkGsuXUbjJwJRQ3n6gW0RYmaWR+iUMN+ -=xSN7 +iF4EAREIAAYFAlGxCs4ACgkQknrdDGLu8JD/2wD/dGbsI1gkz8Q/POyifTVYm856 +yo5Rl8hx4+HcBv+U7yUA/2HG8EUtg7XwTB7IwnZI+UviY8bmKg+gVjH8kOeEDxwL +=av5G -----END PGP SIGNATURE----- diff --git a/media-libs/openjpeg/files/openjpeg-9999-mupdf.patch b/media-libs/openjpeg/files/openjpeg-9999-mupdf.patch new file mode 100644 index 000000000000..6baa4054750e --- /dev/null +++ b/media-libs/openjpeg/files/openjpeg-9999-mupdf.patch @@ -0,0 +1,173 @@ +diff -ru openjpeg-9999/src/lib/openjp2/j2k.c openjpeg/src/lib/openjp2/j2k.c +--- openjpeg-9999/src/lib/openjp2/j2k.c ++++ openjpeg/src/lib/openjp2/j2k.c +@@ -1932,6 +1932,17 @@ + return OPJ_FALSE; + } + ++ /* testcase 4035.pdf.SIGSEGV.d8b.3375 */ ++ if (l_image->x0 > l_image->x1 || l_image->y0 > l_image->y1) { ++ opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: negative image size (%d x %d)\n", l_image->x1 - l_image->x0, l_image->y1 - l_image->y0); ++ return OPJ_FALSE; ++ } ++ /* testcase 2539.pdf.SIGFPE.706.1712 (also 3622.pdf.SIGFPE.706.2916 and 4008.pdf.SIGFPE.706.3345 and maybe more) */ ++ if (!(l_cp->tdx * l_cp->tdy)) { ++ opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: invalid tile size (tdx: %d, tdy: %d)\n", l_cp->tdx, l_cp->tdy); ++ return OPJ_FALSE; ++ } ++ + #ifdef USE_JPWL + if (l_cp->correct) { + /* if JPWL is on, we check whether TX errors have damaged +@@ -3875,6 +3886,12 @@ + opj_read_bytes(p_header_data,&(p_j2k->m_current_tile_number),2); /* Isot */ + p_header_data+=2; + ++ /* testcase 2.pdf.SIGFPE.706.1112 */ ++ if (p_j2k->m_current_tile_number >= l_cp->tw * l_cp->th) { ++ opj_event_msg(p_manager, EVT_ERROR, "Invalid tile number %d\n", p_j2k->m_current_tile_number); ++ return OPJ_FALSE; ++ } ++ + l_tcp = &l_cp->tcps[p_j2k->m_current_tile_number]; + l_tile_x = p_j2k->m_current_tile_number % l_cp->tw; + l_tile_y = p_j2k->m_current_tile_number / l_cp->tw; +@@ -3961,6 +3978,13 @@ + opj_read_bytes(p_header_data,&l_num_parts ,1); /* TNsot */ + ++p_header_data; + ++ /* testcase 451.pdf.SIGSEGV.ce9.3723 */ ++ if (l_num_parts && l_current_part >= l_num_parts) { ++ opj_event_msg(p_manager, EVT_ERROR, "In SOT marker, TPSot (%d) is not valid regards to TNsot (%d), giving up\n", l_current_part, l_num_parts); ++ p_j2k->m_specific_param.m_decoder.m_last_tile_part = 1; ++ return OPJ_FALSE; ++ } ++ + if (l_num_parts != 0) { /* Number of tile-part header is provided by this tile-part header */ + /* Useful to manage the case of textGBR.jp2 file because two values of TNSot are allowed: the correct numbers of + * tile-parts for that tile and zero (A.4.2 of 15444-1 : 2002). */ +@@ -4436,6 +4460,14 @@ + }; + #endif /* USE_JPWL */ + ++ /* testcase 3635.pdf.asan.77.2930 */ ++ if (l_comp_room >= l_nb_comp) { ++ opj_event_msg(p_manager, EVT_ERROR, ++ "JPWL: bad component number in RGN (%d when there are only %d)\n", ++ l_comp_room, l_nb_comp); ++ return OPJ_FALSE; ++ } ++ + opj_read_bytes(p_header_data,(OPJ_UINT32 *) (&(l_tcp->tccps[l_comp_no].roishift)),1); /* SPrgn */ + ++p_header_data; + +@@ -7442,6 +7474,10 @@ + if( (l_offset_x0_src < 0 ) || (l_offset_y0_src < 0 ) || (l_offset_x1_src < 0 ) || (l_offset_y1_src < 0 ) ){ + return OPJ_FALSE; + } ++ /* testcase 2977.pdf.asan.67.2198 */ ++ if ((OPJ_INT32)l_width_dest < 0 || (OPJ_INT32)l_height_dest < 0) { ++ return OPJ_FALSE; ++ } + /*-----*/ + + /* Compute the input buffer offset */ +diff -ru openjpeg-9999/src/lib/openjp2/jp2.c openjpeg/src/lib/openjp2/jp2.c +--- openjpeg-9999/src/lib/openjp2/jp2.c ++++ openjpeg/src/lib/openjp2/jp2.c +@@ -776,6 +776,13 @@ + for(i = 0; i < nr_channels; ++i) { + pcol = cmap[i].pcol; cmp = cmap[i].cmp; + ++ /* testcase 451.pdf.SIGSEGV.f4c.3723 */ ++ if (cmp >= image->numcomps) { ++ /* TODO: is there a better place to validate the channel index? */ ++ fprintf(stderr, "invalid channel index %d\n", cmp); ++ cmp = 0; ++ } ++ + new_comps[pcol] = old_comps[cmp]; + + /* Direct use */ +@@ -798,6 +805,12 @@ + + /* Palette mapping: */ + cmp = cmap[i].cmp; pcol = cmap[i].pcol; ++ /* testcase 451.pdf.SIGSEGV.f4c.3723 */ ++ if (cmp >= image->numcomps) { ++ /* TODO: is there a better place to validate the channel index? */ ++ fprintf(stderr, "invalid channel index %d\n", cmp); ++ cmp = 0; ++ } + src = old_comps[cmp].data; + dst = new_comps[pcol].data; + max = new_comps[pcol].w * new_comps[pcol].h; +@@ -960,6 +973,13 @@ + opj_read_bytes(p_cmap_header_data, &l_value, 1); /* PCOL^i */ + ++p_cmap_header_data; + cmap[i].pcol = (OPJ_BYTE) l_value; ++ ++ /* testcase 451.pdf.SIGSEGV.5b5.3723 */ ++ if (cmap[i].pcol >= nr_channels) { ++ opj_event_msg(p_manager, EVT_ERROR, "Invalid palette index %d.\n", l_value); ++ opj_free(cmap); ++ return OPJ_FALSE; ++ } + } + + jp2->color.jp2_pclr->cmap = cmap; +@@ -983,6 +1003,13 @@ + cn = info[i].cn; + acn = asoc - 1; + ++ /* testcase 4149.pdf.SIGSEGV.cf7.3501 */ ++ if (cn != acn && (cn >= image->numcomps || acn >= image->numcomps)) { ++ /* TODO: is there a better place to validate these indices? */ ++ fprintf(stderr, "invalid component index %d/%d\n", cn, acn); ++ cn = acn = 0; ++ } ++ + if(cn != acn) + { + opj_image_comp_t saved; +@@ -1685,6 +1712,12 @@ + opj_free(l_current_data); + return OPJ_FALSE; + } ++ /* testcase 1851.pdf.SIGSEGV.ce9.948 */ ++ else if (box.length < l_nb_bytes_read) { ++ opj_event_msg(p_manager, EVT_ERROR, "invalid box size %d (%x)\n", box.length, box.type); ++ opj_free(l_current_data); ++ return OPJ_FALSE; ++ } + + l_current_handler = opj_jp2_find_handler(box.type); + l_current_data_size = box.length - l_nb_bytes_read; +diff -ru openjpeg-9999/src/lib/openjp2/tcd.c openjpeg/src/lib/openjp2/tcd.c +--- openjpeg-9999/src/lib/openjp2/tcd.c ++++ openjpeg/src/lib/openjp2/tcd.c +@@ -663,6 +663,11 @@ + l_tile->y0 = opj_int_max(l_cp->ty0 + q * l_cp->tdy, l_image->y0); \ + l_tile->x1 = opj_int_min(l_cp->tx0 + (p + 1) * l_cp->tdx, l_image->x1); \ + l_tile->y1 = opj_int_min(l_cp->ty0 + (q + 1) * l_cp->tdy, l_image->y1); \ ++ /* testcase 1888.pdf.asan.35.988 */ \ ++ if (l_tccp->numresolutions == 0) { \ ++ fprintf(stderr, "tiles require at least one resolution\n"); \ ++ return OPJ_FALSE; \ ++ } \ + /*fprintf(stderr, "Tile border = %d,%d,%d,%d\n", l_tile->x0, l_tile->y0,l_tile->x1,l_tile->y1);*/ \ + \ + /*tile->numcomps = image->numcomps; */ \ +@@ -674,6 +679,12 @@ + l_tilec->y0 = opj_int_ceildiv(l_tile->y0, l_image_comp->dy); \ + l_tilec->x1 = opj_int_ceildiv(l_tile->x1, l_image_comp->dx); \ + l_tilec->y1 = opj_int_ceildiv(l_tile->y1, l_image_comp->dy); \ ++ /* testcase 1336.pdf.asan.47.376 */ \ ++ if (compno > 0 && (l_tilec->x1 - l_tilec->x0 != l_tile->comps->x1 - l_tile->comps->x0) || \ ++ (l_tilec->y1 - l_tilec->y0 != l_tile->comps->y1 - l_tile->comps->y0)) { \ ++ fprintf(stderr, "tiles don't all have the same dimension: %d x %d and %d x %d\n", l_tilec->x1 - l_tilec->x0, l_tilec->y1 - l_tilec->y0, l_tile->comps->x1 - l_tile->comps->x0, l_tile->comps->y1 - l_tile->comps->y0); \ ++ return OPJ_FALSE; \ ++ } \ + /*fprintf(stderr, "\tTile compo border = %d,%d,%d,%d\n", l_tilec->x0, l_tilec->y0,l_tilec->x1,l_tilec->y1);*/ \ + \ + l_data_size = (l_tilec->x1 - l_tilec->x0) \ diff --git a/media-libs/openjpeg/openjpeg-9999.ebuild b/media-libs/openjpeg/openjpeg-9999.ebuild index e7f29a7e9e08..28d56e890bea 100644 --- a/media-libs/openjpeg/openjpeg-9999.ebuild +++ b/media-libs/openjpeg/openjpeg-9999.ebuild @@ -1,9 +1,9 @@ # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/openjpeg/openjpeg-9999.ebuild,v 1.1 2013/06/06 21:57:56 xmw Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-libs/openjpeg/openjpeg-9999.ebuild,v 1.2 2013/06/06 22:19:04 xmw Exp $ EAPI=5 -inherit cmake-utils multilib subversion +inherit cmake-utils eutils multilib subversion DESCRIPTION="An open-source JPEG 2000 library" HOMEPAGE="http://code.google.com/p/openjpeg/" @@ -12,7 +12,7 @@ ESVN_REPO_URI="http://openjpeg.googlecode.com/svn/trunk/" LICENSE="BSD-2" SLOT="2" KEYWORDS="" -IUSE="doc test" +IUSE="doc test +vanilla" RDEPEND="media-libs/lcms:2= media-libs/libpng:0= @@ -23,10 +23,15 @@ DEPEND="${RDEPEND} DOCS=( AUTHORS NEWS README THANKS ) -PATCHES=( "${FILESDIR}"/${P}-build.patch ) - RESTRICT="test" #409263 +src_prepare() { + epatch "${FILESDIR}"/${P}-build.patch + if ! use vanilla ; then + epatch "${FILESDIR}"/${P}-mupdf.patch + fi +} + src_configure() { local mycmakeargs=( -DOPENJPEG_INSTALL_LIB_DIR="$(get_libdir)" |