x86_64-pc-linux-gnu-g++ -Wl,-O1 -o mythavtest main.o commandlineparser.o -L../../libs/libmyth -L../../libs/libmythtv -L../../external/FFmpeg/libswresample -L../../external/FFmpeg/libavutil -L../../external/FFmpeg/libavcodec -L../../external/FFmpeg/libavformat -L../../external/FFmpeg/libswscale -L../../external/FFmpeg/libpostproc -L../../external/FFmpeg/libavfilter -L../../libs/libmythbase -L../../libs/libmythui -L../../libs/libmythupnp -L../../libs/libmythmetadata -L../../libs/libmythservicecontracts -L../../libs/libmythprotoserver -lmythswscale -lmythavformat -lmythswresample -lmythavutil -lmythavcodec -lmythpostproc -lmythavfilter -lmythtv-29 -lmythupnp-29 -lmythbase-29 -lmythui-29 -lmyth-29 -lmythmetadata-29 -lmythservicecontracts-29 -lmythprotoserver-29 -L../../libs/libmythfreemheg -lmythfreemheg-29 -L../../external/libhdhomerun -lmythhdhomerun-29 -L/usr/lib64 -ltag -lXext -lXinerama -lXxf86vm -lXv -lXrandr -lxml2 -lcrypto -lxcb -lxcb-shm -lxcb-xfixes -lxcb-shape -lX11 -ljack -lasound -lfreetype -lxvidcore -lx264 -lvpx -lvorbisenc -lvorbis -ltheoraenc -ltheoradec -logg -lmp3lame -lm -llzma -lbz2 -lz -ludev -pthread -ldl -lGL /usr/lib64/libGL.so -lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Xml -lQt5Sql -lQt5Core -lpthread /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: ../../libs/libmythtv/libmythtv-29.so: undefined reference to `DVBChannel::Open(DVBChannel*)' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:277: mythavtest] Error 1 make[2]: Leaving directory '/var/tmp/portage/media-tv/mythtv-29.1-r1/work/mythtv-29.1-r1/mythtv/programs/mythavtest' ------------------------------------------------------------------- This is an unstable amd64 chroot image at a tinderbox (==build bot) name: 17.1-desktop-plasma_abi32+64_20190410-101928 ------------------------------------------------------------------- gcc-config -l: [1] x86_64-pc-linux-gnu-8.3.0 * Available Python interpreters, in order of preference: [1] python3.6 [2] python2.7 (fallback) [3] jython2.7 (fallback) Available Ruby profiles: [1] ruby24 (with Rubygems) [2] ruby25 (with Rubygems) [3] ruby26 (with Rubygems) * Available Rust versions: [1] rust-1.34.0 * java-config: The following VMs are available for generation-2: *) IcedTea JDK 3.10.0 [icedtea-bin-8] Available Java Virtual Machines: [1] icedtea-bin-8 system-vm emerge -qpvO media-tv/mythtv [ebuild N ] media-tv/mythtv-29.1-r1 USE="alsa dvd hls theora vorbis wrapper xml xvid (-altivec) -autostart -bluray -cec -crystalhd -debug -dvb -egl -fftw -ieee1394 -jack -lcd -libass -lirc -mythlogserver -perl -pulseaudio -python -systemd -vaapi -vdpau -xmltv -zeroconf" INPUT_DEVICES="-joystick" PYTHON_TARGETS="python2_7"
Created attachment 572706 [details] emerge-info.txt
Created attachment 572708 [details] emerge-history.txt
Created attachment 572710 [details] environment
Created attachment 572712 [details] etc.portage.tbz2
Created attachment 572714 [details] logs.tbz2
Created attachment 572716 [details] media-tv:mythtv-29.1-r1:20190414-050833.log.bz2
A work around for this issue is to just enable the "dvb" use flag. It will then pull in the dvb header file and compile. Obviously not a fix, but works.
Wow. Just ran into this today on my mythfrontend during the recompile by perl-cleaner --all. This is using my own ebuild for mythtv 29.1 but the error is the same. The crazy part is that I literally just compiled this same ebuild a week ago yesterday. The one major difference I'm aware of is that I just upgraded gcc from gcc-8.2.0-r6 to gcc-8.3.0-r1. In the same update there was also an upgrade of qt from 5.11 to 5.12 but this clearly doesn't seem related to qt. Thanks a million slackin for the fix...will try that now. Luckily my mythtv backend (which is recompiling now) already has that dvb USE set. Does anyone have any clue as to what could be causing this?
Oddly, I actually have two such errors in my build.log. The first one is at the same place as what you've posted here...that is in mythavtest. For some reason mine seems to have attempted to continue past that and gotten the same error trying to link mythfrontend. Not sure what that behavior is about.
OK...a few very interesting things to note on this one: First of all I can confirm that my frontend emerge went fine with the addition of the dvb USE flag. However much more interesting is that I've been able to prove that this is somehow being caused by gcc-8.3.0. What I did was to re-enable gcc 8.2...in my case: gcc-config i686-pc-linux-gnu-8.2.0 . /etc/profile Then I removed the dvb USE flag, and from within the ebuild directory did this: ebuild mythtv-29.1-r1.ebuild compile ...and it worked without a hitch. I still have the log file which ends with: make[2]: Leaving directory '/var/tmp/portage/media-tv/mythtv-29.1-r1/work/mythtv-29.1-r1/mythtv/programs/mythtranscode' make[1]: Leaving directory '/var/tmp/portage/media-tv/mythtv-29.1-r1/work/mythtv-29.1-r1/mythtv/programs' >>> Source compiled. I've also verified in the log that it used --disable-dvb in the configure and has this: DVB support no [/usr/include] While I confess that I don't have a very good understanding of these complex make processes, that is some seriously odd behavior from a minor gcc bump.
me too :-( I just hit this bug also.
mythtv/libs/libmythtv/channelscan/channelscanner.cpp unconditionally includes dvbchannel.h, which defines the DVBChannel class. Evidentially the definition of this class with gcc 8.3 causes a symbol resolution, whereas with earlier versions it did not. Dunno, compilers are complicated enough to begin with, but when you throw C++ class symbols into the mix it's a whole new level of black magic ;). In any case, if you guard that include with an #ifdef, as in the included patch, it compiles fine with gcc 8.3. Just put the patch in the mythtv portage files directory, add epatch "${FILESDIR}"/fix_dvb_include.patch to the src_prepare section of the ebuild, remake the manifest, and you're good to go. I'll post this on the mythtv dev mailing list and see if they want to do this upstream or if they have a better fix.
Created attachment 584466 [details, diff] Patch to fix gcc 8.3 compile failure
I just ran into this problem. I created a patches directory and copied the file there, but it fails to apply the patch. Has someone else had this problem? mkdir -p /etc/portage/patches/media-tv/mythtv-29.1-r1/ (Then copy the patch file there.)
I found out that patch was being run with -p0 when emerge was applying patches which caused it to fail. I've created a new patch using git that will work with the ebuild if you place it under /etc/portage/patches/media-tv/mythtv-29.1-r1, and will upload it after this message is posted. So: mkdir -p /etc/portage/patches/media-tv/mythtv-29.1-r1/ Save the patch I've uploaded in that directory, and remerge mythtv.
Created attachment 587370 [details, diff] Patch for use in /etc/portage/patches directory
Hi, I confirm that the patch works for me if copied to: /etc/portage/patches/media-tv/mythtv-29.1-r1/dvb.patch Thank you very much, and I really appreciate your efforts on keeping MythTV on Gentoo alive :-) Regards, Florian
Fixed by upstream in mythtv-30.0_p20190808.ebuild