Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 719320 - media-libs/libmetalink: ignores -Wl,--as-needed for some libraries
Summary: media-libs/libmetalink: ignores -Wl,--as-needed for some libraries
Status: UNCONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: No maintainer - Look at https://wiki.gentoo.org/wiki/Project:Proxy_Maintainers if you want to take care of it
URL:
Whiteboard:
Keywords:
: 917622 (view as bug list)
Depends on:
Blocks: as-needed
  Show dependency tree
 
Reported: 2020-04-24 22:40 UTC by Maciej S. Szmigiero
Modified: 2023-12-03 10:36 UTC (History)
4 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 Maciej S. Szmigiero 2020-04-24 22:40:04 UTC
As in bug 719314 for sys-auth/oath-toolkit the media-libs/libmetalink build process ignores -Wl,--as-needed for some libraries it builds and so links in a ton of unnecessary dependent libraries.

The linking command that make / libtool uses is:
x86_64-pc-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/metalink_types.o .libs/metalink_pstm.o .libs/metalink_pstate.o .libs/metalink_pstate_v3.o .libs/metalink_pstate_v4.o .libs/metalink_pctrl.o .libs/metalink_parser_common.o .libs/metalink_session_data.o .libs/metalink_stack.o .libs/metalink_list.o .libs/metalink_string_buffer.o .libs/metalink_helper.o .libs/libxml2_metalink_parser.o   -lxml2 -lz -llzma -licui18n -licuuc -licudata -lm -ldl  -O3 -march=znver1 -Wl,-O1 -Wl,--as-needed   -Wl,-soname -Wl,libmetalink.so.3 -o .libs/libmetalink.so.3.1.0

readelf -a .libs/libmetalink.so.3.1.0 | grep NEEDE
 0x0000000000000001 (NEEDED)             Shared library: [libxml2.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [liblzma.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libicui18n.so.66]
 0x0000000000000001 (NEEDED)             Shared library: [libicuuc.so.66]
 0x0000000000000001 (NEEDED)             Shared library: [libicudata.so.66]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

After moving the "-Wl,--as-needed" parameter to a position before depended libraries are specified a much cleaner library is built instead:
x86_64-pc-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/metalink_types.o .libs/metalink_pstm.o .libs/metalink_pstate.o .libs/metalink_pstate_v3.o .libs/metalink_pstate_v4.o .libs/metalink_pctrl.o .libs/metalink_parser_common.o .libs/metalink_session_data.o .libs/metalink_stack.o .libs/metalink_list.o .libs/metalink_string_buffer.o .libs/metalink_helper.o .libs/libxml2_metalink_parser.o  -Wl,--as-needed -lxml2 -lz -llzma -licui18n -licuuc -licudata -lm -ldl  -O3 -march=znver1 -Wl,-O1 -Wl,-soname -Wl,libmetalink.so.3 -o .libs/libmetalink.so.3.1.0

readelf -a .libs/libmetalink.so.3.1.0 | grep NEEDE
 0x0000000000000001 (NEEDED)             Shared library: [libxml2.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

This bug causes the package to require a (unnecessary) manual rebuild after a dev-libs/icu update:
>>> package: dev-libs/icu-66.1
 *  - /usr/lib32/libicudata.so.65
 *  - /usr/lib32/libicudata.so.65.1
 *      used by /usr/lib32/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
 *  - /usr/lib32/libicui18n.so.65
 *  - /usr/lib32/libicui18n.so.65.1
 *      used by /usr/lib32/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
 *  - /usr/lib32/libicuuc.so.65
 *  - /usr/lib32/libicuuc.so.65.1
 *      used by /usr/lib32/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
 *  - /usr/lib64/libicudata.so.65
 *  - /usr/lib64/libicudata.so.65.1
 *      used by /usr/lib64/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
 *  - /usr/lib64/libicui18n.so.65
 *  - /usr/lib64/libicui18n.so.65.1
 *      used by /usr/lib64/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
 *  - /usr/lib64/libicuuc.so.65
 *  - /usr/lib64/libicuuc.so.65.1
 *      used by /usr/lib64/libmetalink.so.3.1.0 (media-libs/libmetalink-0.1.3-r1)
Comment 1 jospezial 2020-12-08 23:06:45 UTC
confirming the automagic dependency on dev-libs/icu
Comment 2 jospezial 2023-12-03 10:36:49 UTC
*** Bug 917622 has been marked as a duplicate of this bug. ***