Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 548012

Summary: net-libs/libvncserver-0.9.10-r1 fails with ld.gold - ../libvncclient/.libs/libvncclient.so: error: undefined reference to 'XOpenDisplay' when vaapi is enabled
Product: Gentoo Linux Reporter: Steffen Hau <steffen>
Component: Current packagesAssignee: Alex Xu (Hello71) <alex_y_xu>
Status: RESOLVED FIXED    
Severity: normal CC: esigra, jaak, nikoli, proxy-maint, steffen, ulm
Priority: Normal    
Version: unspecified   
Hardware: AMD64   
OS: Linux   
URL: https://github.com/LibVNC/libvncserver/issues/11
See Also: https://github.com/LibVNC/libvncserver/issues/77
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 269315, 372079, 523590    
Attachments: libvncserver-0.9.10-r2.ebuild
libvncserver-0.9.10-r2.ebuild.patch

Description Steffen Hau 2015-04-28 13:38:01 UTC
/bin/sh ../libtool  --tag=CC   --mode=link x86_64-pc-linux-gnu-gcc  -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wall  -Wl,-O1 -Wl,--as-needed -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wl,-znow -Wl,--sort-common -Wl,--hash-style=gnu -Wl,--enable-new-dtags -o tjunittest tjunittest.o ../common/turbojpeg.o tjutil.o ../libvncserver/libvncserver.la ../libvncclient/libvncclient.la  -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto
/bin/sh ../libtool  --tag=CC   --mode=link x86_64-pc-linux-gnu-gcc  -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wall  -Wl,-O1 -Wl,--as-needed -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wl,-znow -Wl,--sort-common -Wl,--hash-style=gnu -Wl,--enable-new-dtags -o tjbench tjbench.o ../common/turbojpeg.o tjutil.o bmp.o ../libvncserver/libvncserver.la ../libvncclient/libvncclient.la  -lm -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto
libtool: link: x86_64-pc-linux-gnu-gcc -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wall -Wl,-O1 -Wl,--as-needed -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wl,-znow -Wl,--sort-common -Wl,--hash-style=gnu -Wl,--enable-new-dtags -o .libs/tjunittest tjunittest.o ../common/turbojpeg.o tjutil.o  ../libvncserver/.libs/libvncserver.so ../libvncclient/.libs/libvncclient.so -lcrypt -lva -lva-x11 -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto
libtool: link: x86_64-pc-linux-gnu-gcc -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wall -Wl,-O1 -Wl,--as-needed -march=native -O2 -pipe -ggdb -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -fira-loop-pressure -ftree-vectorize -ftree-loop-linear -flto=5 -fuse-linker-plugin -Wl,-znow -Wl,--sort-common -Wl,--hash-style=gnu -Wl,--enable-new-dtags -o .libs/tjbench tjbench.o ../common/turbojpeg.o tjutil.o bmp.o  ../libvncserver/.libs/libvncserver.so ../libvncclient/.libs/libvncclient.so -lcrypt -lva -lva-x11 -lm -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto
../libvncclient/.libs/libvncclient.so: error: undefined reference to 'XOpenDisplay'
collect2: error: ld returned 1 exit status
Makefile:453: recipe for target 'tjbench' failed
make[2]: *** [tjbench] Error 1
make[2]: *** Waiting for unfinished jobs....
../libvncclient/.libs/libvncclient.so: error: undefined reference to 'XOpenDisplay'
collect2: error: ld returned 1 exit status
Makefile:457: recipe for target 'tjunittest' failed
make[2]: *** [tjunittest] Error 1
make[2]: Leaving directory '/home/gentoo/tmp/portage/net-libs/libvncserver-0.9.10-r1/work/libvncserver-LibVNCServer-0.9.10-abi_x86_64.amd64/test'

ld.bfd does not show this issue.

As there is already a patch (libvncserver-0.9.10-libva-1.0.patch) in the tree, the fix would be trivial:
--- a/files/libvncserver-0.9.10-libva-1.0.patch.orig   2015-04-07 15:52:01.000000000 +0200
+++ b/files/libvncserver-0.9.10-libva-1.0.patch        2015-04-28 15:34:22.465570158 +0200
@@ -30,8 +30,9 @@
 +[  --without-libva         disable support for libva],,)
  if test "x$with_libva" != "xno"; then
 -    AC_CHECK_LIB(va, vaInitialize,
+-        VA_LIBS="-lva -lva-x11"
 +    AC_CHECK_LIB(va-x11, vaGetDisplay,
-         VA_LIBS="-lva -lva-x11"
++        VA_LIBS="-lva -lva-x11 -lX11"
          [AC_DEFINE(CONFIG_LIBVA) CONFIG_LIBVA="true"], ,)
  fi
 diff --git a/libvncclient/h264.c b/libvncclient/h264.c





Reproducible: Always

Steps to Reproduce:
1. try to compile net-libs/libvncserver with ld.gold
2.
3.
Actual Results:  
linking of libvnclient shared library failes

Expected Results:  
linking should succedd

https://blog.flameeyes.eu/2010/11/it-s-not-all-gold-that-shines-why-underlinking-is-a-bad-thing
Comment 1 Alex Xu (Hello71) 2015-04-28 21:56:43 UTC
!@#$ %^&*.
Comment 2 Alex Xu (Hello71) 2015-04-30 01:11:53 UTC
Created attachment 402258 [details]
libvncserver-0.9.10-r2.ebuild

as it turns out the configure option last time wasn't even the right one.

now I fix it once and for all. libva support was dropped upstream, so there can be NO MORE PROBLEMS WITH LIBVA.





jinx
Comment 3 Jaak Ristioja 2015-05-04 17:36:43 UTC
When will we see the fix in the tree?
Comment 4 Alex Xu (Hello71) 2015-05-07 16:19:11 UTC
Created attachment 402830 [details, diff]
libvncserver-0.9.10-r2.ebuild.patch
Comment 5 Ian Delaney (RETIRED) gentoo-dev 2015-05-08 01:08:46 UTC
  dependency.missingslot        2
   net-libs/libvncserver/libvncserver-0.9.9-r2.ebuild: RDEPEND: '>=virtual/jpeg-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?]' matches more than one slot, please specify an explicit slot and/or use the := or :* slot operator
   net-libs/libvncserver/libvncserver-0.9.9-r3.ebuild: RDEPEND: '>=virtual/jpeg-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?]' matches more than one slot, please specify an explicit slot and/or use the := or :* slot operator
  repo.eapi.deprecated          1
   net-libs/libvncserver/libvncserver-0.9.7.ebuild: 2

This is a warning by repoman. Substituting :0 with := in this case I am not convinced is desirable since it would displace the selection of SLOT 0 entirely. If the option :* fits here that would be fine.

*libvncserver-0.9.10-r2 (08 May 2015)

  08 May 2015; Ian Delaney <idella4@gentoo.org> +libvncserver-0.9.10-r2.ebuild:
  revbump; Proxy commit for Alex Xu wrt Bug #548012, drop use vaapi and libva
  from ebuild
Comment 6 Alex Xu (Hello71) 2015-05-08 01:13:24 UTC
(In reply to Ian Delaney from comment #5 as excerpted)
>    net-libs/libvncserver/libvncserver-0.9.9-r2.ebuild
>    net-libs/libvncserver/libvncserver-0.9.9-r3.ebuild
>    net-libs/libvncserver/libvncserver-0.9.7.ebuild
Comment 7 Ian Delaney (RETIRED) gentoo-dev 2015-05-20 08:33:42 UTC
right;
libvncserver-0.9.7.ebuild has been removed, the others are older versions and aren't critical. We could do them.  There are many old remaining versions. Can you list any for purging here?
Comment 8 Alex Xu (Hello71) 2015-05-20 11:51:06 UTC
(In reply to Ian Delaney from comment #7)
> right;
> libvncserver-0.9.7.ebuild has been removed, the others are older versions
> and aren't critical. We could do them.  There are many old remaining
> versions. Can you list any for purging here?

Will drop all old versions in bug 523590 once arm finishes stable.