Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 683280 - media-tv/mythtv-29.1-r1 : /.../ld: ../.../libmythtv-29.so: undefined reference to DVBChannel::Open(DVBChannel*)
Summary: media-tv/mythtv-29.1-r1 : /.../ld: ../.../libmythtv-29.so: undefined referenc...
Status: RESOLVED UPSTREAM
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Wilson M. Michaels
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-04-14 07:52 UTC by Toralf Förster
Modified: 2019-09-27 17:09 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge-info.txt (emerge-info.txt,17.20 KB, text/plain)
2019-04-14 07:52 UTC, Toralf Förster
Details
emerge-history.txt (emerge-history.txt,143.30 KB, text/plain)
2019-04-14 07:52 UTC, Toralf Förster
Details
environment (environment,163.07 KB, text/plain)
2019-04-14 07:52 UTC, Toralf Förster
Details
etc.portage.tbz2 (etc.portage.tbz2,10.94 KB, application/x-bzip)
2019-04-14 07:52 UTC, Toralf Förster
Details
logs.tbz2 (logs.tbz2,626 bytes, application/x-bzip)
2019-04-14 07:52 UTC, Toralf Förster
Details
media-tv:mythtv-29.1-r1:20190414-050833.log.bz2 (media-tv:mythtv-29.1-r1:20190414-050833.log.bz2,43.89 KB, application/x-bzip)
2019-04-14 07:52 UTC, Toralf Förster
Details
Patch to fix gcc 8.3 compile failure (fix_dvb_include.patch,588 bytes, patch)
2019-07-25 05:22 UTC, Paul B. Henson
Details | Diff
Patch for use in /etc/portage/patches directory (01_dvb-patch.patch,513 bytes, patch)
2019-08-18 17:59 UTC, Daniel Frey
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Toralf Förster gentoo-dev 2019-04-14 07:52:20 UTC
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"
Comment 1 Toralf Förster gentoo-dev 2019-04-14 07:52:22 UTC
Created attachment 572706 [details]
emerge-info.txt
Comment 2 Toralf Förster gentoo-dev 2019-04-14 07:52:25 UTC
Created attachment 572708 [details]
emerge-history.txt
Comment 3 Toralf Förster gentoo-dev 2019-04-14 07:52:28 UTC
Created attachment 572710 [details]
environment
Comment 4 Toralf Förster gentoo-dev 2019-04-14 07:52:31 UTC
Created attachment 572712 [details]
etc.portage.tbz2
Comment 5 Toralf Förster gentoo-dev 2019-04-14 07:52:33 UTC
Created attachment 572714 [details]
logs.tbz2
Comment 6 Toralf Förster gentoo-dev 2019-04-14 07:52:36 UTC
Created attachment 572716 [details]
media-tv:mythtv-29.1-r1:20190414-050833.log.bz2
Comment 7 slackin 2019-05-24 12:48:28 UTC
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.
Comment 8 Tom Dexter 2019-05-29 13:26:25 UTC
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?
Comment 9 Tom Dexter 2019-05-29 14:39:29 UTC
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.
Comment 10 Tom Dexter 2019-05-30 16:17:50 UTC
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.
Comment 11 Gordon Pritchard 2019-07-15 18:49:28 UTC
me too :-(
I just hit this bug also.
Comment 12 Paul B. Henson 2019-07-25 05:21:12 UTC
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.
Comment 13 Paul B. Henson 2019-07-25 05:22:00 UTC
Created attachment 584466 [details, diff]
Patch to fix gcc 8.3 compile failure
Comment 14 Daniel Frey 2019-08-18 17:04:23 UTC
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.)
Comment 15 Daniel Frey 2019-08-18 17:58:19 UTC
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.
Comment 16 Daniel Frey 2019-08-18 17:59:19 UTC
Created attachment 587370 [details, diff]
Patch for use in /etc/portage/patches directory
Comment 17 Florian Evers 2019-08-19 16:49:35 UTC
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
Comment 18 Wilson M. Michaels 2019-09-21 22:04:21 UTC
Fixed by upstream in mythtv-30.0_p20190808.ebuild