Summary: | sys-process/lsof-4.91[static]: cannot find -ltirpc | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Rolf Eike Beer <eike> |
Component: | Current packages | Assignee: | Gentoo's Team for Core System packages <base-system> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | mgorny |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=670334 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 667232 | ||
Attachments: | build.log |
Description
Rolf Eike Beer
![]() Interesting, is this the case for you running current stable (In reply to Mikle Kolyada from comment #1) > Interesting, is this the case for you running current stable oh, this was the question USE=static emerge -1 =sys-process/lsof-4.89 -> works fine The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/gentoo-bugzilla.git/commit/?id=607033bbd1e5b524eaf5c74e3914590d82b3742a commit 607033bbd1e5b524eaf5c74e3914590d82b3742a Author: Michał Górny <mgorny@gentoo.org> AuthorDate: 2018-09-30 08:00:54 +0000 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: 2018-09-30 08:00:54 +0000 attachment/list: Display attachment filename Bug: https://bugs.gentoo.org/667272 Signed-off-by: Michał Górny <mgorny@gentoo.org> template/en/default/attachment/list.html.tmpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Arr, sorry, wrong bug. We can address *this* failure via
--- lsof-4.91.ebuild 2018-10-28 16:19:48.524999040 +0100
+++ lsof-4.91-r1.ebuild 2018-10-29 00:13:45.685190699 +0100
@@ -17,9 +17,12 @@
KEYWORDS="~alpha ~amd64 arm ~arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
IUSE="examples ipv6 rpc selinux static"
-RDEPEND="rpc? ( net-libs/libtirpc )
+LIB_DEPEND="rpc? ( net-libs/libtirpc[static-libs] )"
+
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
selinux? ( sys-libs/libselinux )"
DEPEND="${RDEPEND}
+ static? ( ${LIB_DEPEND} )
rpc? ( virtual/pkgconfig )"
S="${WORKDIR}/${MY_P}/${MY_P}_src"
@@ -77,8 +80,11 @@
fi
fi
+ local RPC_PKG_CONFIG_PARAMS=( libtirpc --libs )
+ use static && RPC_PKG_CONFIG_PARAMS+=( --static )
+
export LSOF_CFGL="${CFLAGS} ${LDFLAGS} \
- $(use rpc && $(tc-getPKG_CONFIG) libtirpc --libs)"
+ $(use rpc && $(tc-getPKG_CONFIG) ${RPC_PKG_CONFIG_PARAMS[@]})"
# Set LSOF_INCLUDE to a dummy location so the script doesn't poke
# around in it and mix /usr/include paths with cross-compile/etc.
But this will end in a new failure:
> x86_64-pc-linux-gnu-gcc -O2 -pipe -march=ivybridge -mtune=ivybridge -mno-xsaveopt -Wno-error=missing-prototypes -Wno-error=enum-compare -Wno-error=unused-function -Wno-error=deprecated-declarations -frecord-gcc-switches -I/usr/include/tirpc -DHASIPv6 -DLINUXV=419000 -DGLIBCV=227 -DHASIPv6 -DNEEDS_NETINET_TCPH -DHASUXSOCKEPT -DHASPTYEPT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DHAS_STRFTIME -DLSOF_VSTR=\"4.19.0\" -I/var/tmp/portage/sys-process/lsof-4.91-r1/temp -I/usr/include/tirpc -DHASIPv6 -c -o util.o util.c
> x86_64-pc-linux-gnu-gcc -o lsof dfile.o dmnt.o dnode.o dproc.o dsock.o dstore.o arg.o main.o misc.o node.o print.o proc.o store.o usage.o util.o -L./lib -llsof -O2 -pipe -march=ivybridge -mtune=ivybridge -mno-xsaveopt -Wno-error=missing-prototypes -Wno-error=enum-compare -Wno-error=unused-function -Wno-error=deprecated-declarations -frecord-gcc-switches -Wl,-O1 -Wl,--as-needed -static -ltirpc -lpthread
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib64/libtirpc.a(libtirpc_la-netnamer.o): in function `netname2user':
> (.text+0x419): warning: Using 'getgrent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x414): warning: Using 'setgrent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x4ba): warning: Using 'endgrent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: arg.o: in function `enter_uid':
> arg.c:(.text+0x3b31): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.o: in function `printuid':
> print.c:(.text+0x1cb6): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib64/libtirpc.a(libtirpc_la-rpcb_clnt.o): in function `getclnthandle':
> (.text+0x407): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.o: in function `gethostnm':
> print.c:(.text+0xc78): warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib64/libtirpc.a(libtirpc_la-auth_time.o): in function `__rpc_get_time_offset':
> (.text+0xb06): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: arg.o: in function `lkup_hostnm':
> arg.c:(.text+0x2fd): warning: Using 'gethostbyname2' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: arg.o: in function `enter_network_address':
> arg.c:(.text+0x2c2d): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.o: in function `lkup_svcnam':
> print.c:(.text+0xe6): warning: Using 'getservbyport' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.c:(.text+0x151): warning: Using 'getservent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.c:(.text+0x13b): warning: Using 'setservent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.c:(.text+0x131): warning: Using 'endservent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: print.o: in function `lkup_port':
> print.c:(.text+0x6d9): undefined reference to `getrpcbynumber'
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:59: lsof] Error 1
> * ERROR: sys-process/lsof-4.91-r1::gentoo failed (compile phase):
> * emake failed
getrpcbynumber, used in lsof's print.c when RPC headers are available, is provided by glibc on newer systems (net-libs/libtirpc detects for example that getrpcbynumber is already available and doesn't provide that function in that case).
I have no idea how we can solve this. I would remove "static" from lsof or at least add RESTRICT="static? ( rpc )" but given that rpc is the only dependency, I would remove USE=static at all.
And before I forget: We would also have to disallow net-libs/libtirpc[kerberos] when USE=static is set because net-libs/libtirpc[kerberos] depends on virtual/krb5 which cannot ensure that providing package is built statically (well, net-libs/libtirpc should restrict "static-libs" when USE=kerberos is set). The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b0cfdd8632ebc85620266018b7f1f6d30183cb6e commit b0cfdd8632ebc85620266018b7f1f6d30183cb6e Author: Thomas Deutschmann <whissi@gentoo.org> AuthorDate: 2018-11-04 22:48:24 +0000 Commit: Thomas Deutschmann <whissi@gentoo.org> CommitDate: 2018-11-04 22:48:38 +0000 sys-process/lsof: remove USE=static USE=static doesn't work with USE=rpc anymore since tirpc was moved to net-libs/libtirpc: - net-libs/libtirpc[static-libs] is broken: When net-libs/libtirpc was build with USE=kerberos it isn't guaranteed that virtual/krb5 provider was linked statically which is causing problems for lsof when trying to statically link against libtirpc. - getrpcbynumber from print.c is now part of libc. However you cannot statically link against that libc component. Closes: https://bugs.gentoo.org/667272 Package-Manager: Portage-2.3.51, Repoman-2.3.11 Signed-off-by: Thomas Deutschmann <whissi@gentoo.org> sys-process/lsof/lsof-4.91.ebuild | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) |