Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] qtwebkit build failure: solutions?
View unanswered posts
View posts from last 24 hours

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Fri Jun 14, 2019 1:36 am    Post subject: [SOLVED] qtwebkit build failure: solutions? Reply with quote

I've got a longstanding problem on my Gentoo/MythTV system that, due to tech wimpiness, I've been putting off dealing with, hoping that some subsequent system update will auto-magically fix it. Since that's not happened for a few months now, it's time to put on my bigboy pants and begin confronting the issue head-on by asking for help here :)

Here is relevant emerge --info output (don't make fun of my ancient kernel--another symptom of my tech wimpiness):
Code:
Portage 2.3.66 (python 2.7.15-final-0, default/linux/amd64/17.0/no-multilib, gcc-7.3.0, glibc-2.29-r2, 3.18.25-gentoo-r1 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.18.25-gentoo-r1-x86_64-Intel-R-_Celeron-R-_CPU_N2808_@_1.58GHz-with-gentoo-2.6
KiB Mem:     3927084 total,   1132020 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Mon, 10 Jun 2019 08:00:01 +0000
Head commit of repository gentoo: ba8d56d7417a537047b1b142b2521b35503765d2
sh bash 4.4_p23-r1
ld GNU ld (Gentoo 2.30 p5) 2.30.0
app-shells/bash:          4.4_p23-r1::gentoo
dev-lang/perl:            5.28.2-r1::gentoo
dev-lang/python:          2.7.15::gentoo, 3.4.8::gentoo, 3.6.5::gentoo
dev-util/cmake:           3.14.3::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.6-r1::gentoo
sys-apps/openrc:          0.41.2::gentoo
sys-apps/sandbox:         2.13::gentoo
sys-devel/autoconf:       2.69-r4::gentoo
sys-devel/automake:       1.15.1-r2::gentoo, 1.16.1-r1::gentoo
sys-devel/binutils:       2.30-r4::gentoo, 2.31.1-r6::gentoo
sys-devel/gcc:            7.3.0-r3::gentoo, 8.2.0-r6::gentoo, 8.3.0-r1::gentoo
sys-devel/gcc-config:     2.0::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1-r4::gentoo
sys-kernel/linux-headers: 4.14-r1::gentoo (virtual/os-headers)
sys-libs/glibc:           2.29-r2::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-jobs: 1
    sync-rsync-verify-metamanifest: yes
    sync-rsync-extra-opts:
    sync-rsync-verify-max-age: 24

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="-j2 --load-average=1.85"
ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://seal.cs.uni.edu http://lug.mtu.edu/gentoo/ http://gentoo.cs.uni.edu/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3 -l1.95"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X acl alsa amd64 berkdb bzip2 cli crypt cxx dri dvb ffmpeg fortran gdbm iconv icu ipv6 libtirpc ncurses nls nptl opengl openmp pam pcre readline seccomp ssl tcpd udev unicode v4l vaapi xattr zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" RUBY_TARGETS="ruby24" USERLAND="GNU" VIDEO_CARDS="intel i965 dummy nouveau" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS


And here is ouptut from emerge -pqv:
Code:
!!! The following installed packages are masked:                                         
- media-fonts/corefonts-1-r7::gentoo (masked by: MSttfEULA license(s))                   
A copy of the 'MSttfEULA' license is located at '/usr/portage/licenses/MSttfEULA'.       

<snip>

For more information, see the MASKED PACKAGES section in the emerge                       
man page or refer to the Gentoo Handbook.

[ebuild     U ] dev-qt/qtwebkit-5.212.0_pre20180120 [5.9.1] USE="X%* gstreamer* hyphen%* jit opengl printsupport* -geolocation -gles2 -multimedia -nsplugin% -orientation -qml -webp (-debug%) (-test%) (-webchannel%)"

 * IMPORTANT: 1 news item needs reading for repository 'gentoo'.
 * Use eselect news read to view new items.


The last 200 lines of the build log can be seen at https://bpaste.net/show/c8cdf5fa77b6 (the build log was too large [4.6 MB] to paste in its entirety--I wound up excluding over 1,000 lines of it).

Other thoughts. I'd like to just get rid of qtwebkit, as forum user tld has done on his Gentoo/MythTV system (a topic he touched on at https://forums.gentoo.org/viewtopic-t-1086712-start-0.html). But that involves patching source code and, due my paltry technical acumen, would require an amount of guidance I'm not sure I'll be able to find. Also considered by me was, since my system is somewhat resource-challenged, throwing additional system resources at the build process by setting up distcc--a task I believe I could manage. Problem with that is that the helper systems available to me both have gcc 8.3, while a recent Gentoo forum posting claims "With gcc 8.3.0 and 9.1.0 mythtv doesn't build" (from May 31st 2019-- https://forums.gentoo.org/viewtopic-p-8202046.html ). My Gentoo system is currently using gcc 7.3, btw. So it seems the distcc option's not very practicable either.

PS I tried the solution described at https://forums.gentoo.org/viewtopic-p-8222930.html#8222930 but that did not lead to success in building qtwebkit.


Last edited by jamtat on Wed Jul 03, 2019 10:37 pm; edited 2 times in total
Back to top
View user's profile Send private message
Jaglover
Watchman
Watchman


Joined: 29 May 2005
Posts: 8043
Location: Saint Amant, Acadiana

PostPosted: Fri Jun 14, 2019 1:47 am    Post subject: Reply with quote

Code:
x86_64-pc-linux-gnu-g++: internal compiler error: Killed (program cc1plus)


You are probably running out of RAM with MAKEOPTS=-j3.
_________________
My Gentoo installation notes.
Please learn how to denote units correctly!
Back to top
View user's profile Send private message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Fri Jun 14, 2019 2:03 am    Post subject: Reply with quote

I tried MAKEOPTS="-j1" from https://forums.gentoo.org/viewtopic-p-8222930.html#8222930 as I mentioned, but did still not have success building the package. (similar solution at https://forums.gentoo.org/viewtopic-t-1086712-start-0.html described by pourpier was tried as well)

Last edited by jamtat on Fri Jun 14, 2019 2:09 am; edited 1 time in total
Back to top
View user's profile Send private message
Jaglover
Watchman
Watchman


Joined: 29 May 2005
Posts: 8043
Location: Saint Amant, Acadiana

PostPosted: Fri Jun 14, 2019 2:08 am    Post subject: Reply with quote

jamtat wrote:
I tried MAKEOPTS="-j1" from https://forums.gentoo.org/viewtopic-p-8222930.html#8222930 as I mentioned, but did still not have success building the package.

Too bad, if you show us the error someone my be able to help you.
_________________
My Gentoo installation notes.
Please learn how to denote units correctly!
Back to top
View user's profile Send private message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Fri Jun 14, 2019 2:22 am    Post subject: Reply with quote

Thanks for the further input. Just to be clear, the directives I most recently followed and that are currently in force on this system are as follows:
pourpier wrote:
I created the env directory under /etc/portage and I created in the env directory a file named qtweb.conf with this line:
MAKEOPTS="-j1" (adjust to your case)
I created a file package.env under /etc/portage/ with these lines:
dev-qt/qtwebkit qtweb.conf
dev-qt/qtwebengine qtweb.conf
And it worked perfectly. Previously I had ninja -j4 l0 failed
Now if you only have 4GB of RAM you need MAKEOPTS="-j1" and let it compile during the night!

I'm obviously no kind of authority in the workings of this distro, but my impression is that, in implementing those directives, I would effectively be telling the system to use MAKEOPTS="-j1" when compiling qtwebkit. Was I wrong about that? If so, I can always try again issuing MAKEOPTS="-j1" emerge qtwebkit from the command line.
Back to top
View user's profile Send private message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6921

PostPosted: Fri Jun 14, 2019 2:47 am    Post subject: Reply with quote

Building any browser engine on only 4GB RAM with 0 swap will probably be painful. Even using zram would be better than nothing - your kernel is just barely new enough to have it.
Back to top
View user's profile Send private message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Fri Jun 14, 2019 3:54 am    Post subject: Reply with quote

That's why I was looking to implement distcc, which I assume could remedy the situation. But that option seems, at least for the moment, to be ruled out owing to some bug or other that prevents MythTV (the main function of this computer) from compiling under gcc 8.3. I guess unless I could temporarily implement distcc, just for the purpose of compiling qtwebkit so as to get beyond the current impasse. But I'd really like to just be rid of qtwebkit: it's a huge resource hog when it comes to compiling but does nothing discernibly useful on this system. I'm probably going to have to figure out how to patch source code here so I can just get rid of it, like tld did.

PS Could adding a swap file offer any kind of remedy?
Back to top
View user's profile Send private message
Blind_Sniper
Apprentice
Apprentice


Joined: 20 Apr 2018
Posts: 244

PostPosted: Fri Jun 14, 2019 10:45 am    Post subject: Reply with quote

Quote:
But I'd really like to just be rid of qtwebkit: it's a huge resource hog when it comes to compiling but does nothing discernibly useful on this system. I'm probably going to have to figure out how to patch source code here so I can just get rid of it, like tld did.


Try to put "dev-qt/qtwebkit-x.xxx.x" into /etc/portage/profile/package.provided file if you really do not plan to use any qtwebkit functionality, so portage would think that qtwebkit already presented on your system
Back to top
View user's profile Send private message
CaptainBlood
Advocate
Advocate


Joined: 24 Jan 2010
Posts: 2136

PostPosted: Fri Jun 14, 2019 10:49 am    Post subject: Reply with quote

With 4 Gb RAM & swap, here's:
Code:
 eix qtwebkit
[I] dev-qt/qtwebkit
     Available versions:  (5) 5.212.0_pre20180120(5/5.212)
       {X geolocation gles2 +gstreamer +hyphen +jit multimedia nsplugin opengl orientation +printsupport qml webp}
     Installed versions:  5.212.0_pre20180120(5/5.212)(17:59:38 26/05/2019)(opengl printsupport -X -geolocation -gles2 -gstreamer -hyphen -jit -multimedia -nsplugin -orientation -qml -webp)
     Homepage:            https://www.qt.io/
     Description:         WebKit rendering library for the Qt5 framework (deprecated)
I'm not sure MAKEOPTS in /etc/portage/*env works. Indeed
Code:
MAKEOPTS="-j1" emerge qtwebkit
is the error proof way to go.

Please note there is no warranty distcc will work, only might, so setting it, which is a bit of a pain, could be a shoot in the void.
Should you set distcc, I'd advise to audit with compiling a fast ebuild first since:
Code:
qlop -tH qtwebkit
qtwebkit: 1 hour, 24 minutes, 40 seconds for 5 merges
as an average value.

Btw, what prevents you from setting a swap file, sizing the double of your RAM for example?
It seems such a quick update, compared to distcc setting...

Thks 4 ur attention, interest & support
Back to top
View user's profile Send private message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Fri Jun 14, 2019 3:02 pm    Post subject: Reply with quote

Adding a 4GB swapfile allowed the qtwebkit build finally to complete (over the course of about 10 hours). Now I either have to figure out what is involved in patching the MythTV source so I can just remove qtwebkit from my system, or set up and test distcc in case I will be confronted by this same scenario in the future. One possible hitch I've realized with that latter plan is that, though I have a gigabit LAN, the MythTV box connects to it by wifi. So the machine's network connection could prove to be a bottleneck. (I need to look further into Blind_Sniper's proposal as well)
Back to top
View user's profile Send private message
CaptainBlood
Advocate
Advocate


Joined: 24 Jan 2010
Posts: 2136

PostPosted: Fri Jun 14, 2019 3:25 pm    Post subject: Reply with quote

10 hours seems too much :roll:
What it idle besides the ebuild?
I'm not 100% sure with the qlop time I provided earlier since /var/log/emerge.log may contains things accounted as a short time ebuild whereas it might be an aborted one or alike.
Will be more focused new time it updates and report if required.

I'm doing distcc from aarch64 qemu to its intel host and ebuild done so are often more time consumming than when done via qemu-user. Perhaps sometime maybe shorter in qemu-system!!!. This is out of scope for your matter.

Distcc doesn't seems to be so easy to take advantage from.
Multiple hosts running distccd may be a better configuration but it's not possible here.

If I were you I would concentrate on getting info from others about theirs ebuild timings + cpu info.
Pulling a ratio out of that to match you CPU should help to set a plausible goal.

Thks 4 ur attention, interest & support.
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 17475

PostPosted: Sat Jun 15, 2019 12:36 am    Post subject: Reply with quote

Blind_Sniper wrote:
Try to put "dev-qt/qtwebkit-x.xxx.x" into /etc/portage/profile/package.provided file if you really do not plan to use any qtwebkit functionality, so portage would think that qtwebkit already presented on your system
This only helps if the ebuild dependency is incorrect and the package does not actually use qtwebkit at all. If myth requires qtwebkit, even for some feature the user considers to have no value, then it must be present for the build to succeed. Telling Portage to skip providing it just leads to a build failure in that case. If myth does not require it, a quick spot workaround is to use --nodeps after installing all the other non-qtwebkit packages. If the build fails, then it's likely that qtwebkit is required, at least until someone patches out use of it.

distcc can be used for some packages and not others, if the Portage environment is configured to do so. This could allow use of distcc for expensive packages while keeping cheap or distribution-hostile packages as local-only.
Back to top
View user's profile Send private message
Tony0945
Advocate
Advocate


Joined: 25 Jul 2006
Posts: 4907
Location: Illinois, USA

PostPosted: Sat Jun 15, 2019 2:19 am    Post subject: Reply with quote

Hu, isn't that true only if qtwebkit is a BDEPEND? If it's an RDEPEND, it will build but fail at run time. Whether it fails to launch or only if a certain feature is used is the heart of the problem.

Idealy, what requires qtwebkit can be isolated and patched around.

BTW, it took me 10 hours to emerge qtwebket also. That soured me on the package. Anything that big and withn akitchen sink design must be full of bugs.

More and more packages are emulating Windows (big and monolithic, something for every occasion) rather than Unix (keep it small and manageable, build big applications by gluing small applications together).
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 17475

PostPosted: Sat Jun 15, 2019 4:20 am    Post subject: Reply with quote

Correct, if it is a runtime-only dependency, you can build without it and hope that the runtime dependency does not apply to your use case. For this package, it is a build-time dependency.
Back to top
View user's profile Send private message
Tony0945
Advocate
Advocate


Joined: 25 Jul 2006
Posts: 4907
Location: Illinois, USA

PostPosted: Sat Jun 15, 2019 2:10 pm    Post subject: Reply with quote

As a build time dependency it is easier to find where.

1. Create a local copy of the ebuild without the dependency. If one doesn't already have one, you can edit the ebuild in place and run "repoman manifest". The latter method screws up the official ebuild until you resync.

2. try to emerge the ebuild and see where it chokes. If it is in the configuration stage, patch the config file(s). If in the compile stage then note the source file, analyze the code (easier said than done!) and patch the code to elininate the call or provide a dummy function.

I used this to remove the dependency of "meld" on dbus, after I ran across a bug requesting that it be made optional because the dbus feature was only used by gnome. Request was denied, of course. I don't use gnome. IMHO the feature should have been dependent on the gnome use flag, but I never install gnome since Gnome3 came out and it's only my local overlay,
Back to top
View user's profile Send private message
asturm
Developer
Developer


Joined: 05 Apr 2007
Posts: 8341
Location: Austria

PostPosted: Sat Jun 15, 2019 2:40 pm    Post subject: Reply with quote

MythTV has been discussed before: https://forums.gentoo.org/viewtopic-p-7976134.html#7976134

If it is true that git master had ported away from it back then, then the best idea would be for someone to do the work and bump to latest version (that hopefully has that change already) and file as PR. It is a maintainer-needed package so there is no one assigned to do it - if it won't be done, it will have to be last-rited eventually.

QtWebKit is being deprecated: https://bugs.gentoo.org/684580

mythtv-30.0 version bump request: https://bugs.gentoo.org/688084
_________________
backend.cpp:92:2: warning: #warning TODO - this error message is about as useful as a cooling unit in the arctic
Back to top
View user's profile Send private message
tld
Veteran
Veteran


Joined: 09 Dec 2003
Posts: 1629

PostPosted: Sat Jun 15, 2019 5:51 pm    Post subject: Reply with quote

Yea, I've been able to run MythTV (I'm not using any plugins) without QtWebkit for a long time. This works with 29.1 as well as 30.0. Here's what's required to do that:

1. There's no MythTV configure option to exclude linking to QtWebkit, and the only means of excluding it is to unmerge QtWebkit before compiling MythTV. When I did this the first time I made a binary package of my existing QtWebkit before unmerging it as a safeguard, but it does work.

2. The configure script needs a patch like the following...this one is from 30.0. This simply replaced the existing qtwebkit check with a single line of "disable qtwebkit". Also note that last part of this patch is another version 30.0 related patch discussed below:
Code:
diff --git a/mythtv/configure b/mythtv/configure
index a80828efc7..802f815bef 100755
--- mythtv/configure
+++ mythtv/configure
@@ -6505,16 +6505,17 @@ case "$cc_type" in
         ;;
 esac
 
-if $(pkg-config --exists Qt5WebKit) || $(pkg-config --exists QtWebKit) ; then
-    enable qtwebkit
-else
-    check_ecxx ${qt_inc} ${qt_inc}/QtCore <<EOF && enable qtwebkit
-#include <QtWebKit/QtWebKit>
-int main(void){ return 0; }
-EOF
-fi
-
-enabled qtwebkit || die "Error! QtWebkit headers not found"
+#if $(pkg-config --exists Qt5WebKit) || $(pkg-config --exists QtWebKit) ; then
+#    enable qtwebkit
+#else
+#    check_ecxx ${qt_inc} ${qt_inc}/QtCore <<EOF && enable qtwebkit
+##include <QtWebKit/QtWebKit>
+#int main(void){ return 0; }
+#EOF
+#fi
+#
+#enabled qtwebkit || die "Error! QtWebkit headers not found"
+disable qtwebkit
 
 if $(pkg-config --exists Qt5Script) || $(pkg-config --exists QtScript) ; then
     enable qtscript
@@ -6651,6 +6652,9 @@ if enabled x11; then
          # This is hopefully temporary.
          disable xnvctrl_external
          ;;
+                    *gentoo*)
+                        [ -e "/usr/bin/nvidia-settings" ] || disable xnvctrl_external
+                        ;;
           *)
                         require XNVctrl "X11/Xlib.h NVCtrl/NVCtrl.h NVCtrl/NVCtrlLib.h" XNVCTRLIsNvScreen -lXNVCtrl || disable xnvctrl
                         ;;


A few other things to note:

For reasons as yet unknown, the MythTV compile fails if you don't have the dvb USE flag set, and this ONLY occurs with gcc 8.3.0 and not in 8.2.0:

https://bugs.gentoo.org/683280

A few other notes regarding version 30.0 specifically:

This is the last part of the patch above: I'm using nvidia-drivers without the tools USE flag (nvidia-settings etc) because nvidia started requiring dbus an all sorts of bloated stuff for nvidia-settings. MythTV 30 was designed to use the systems xNVCtrl instead of the one built into the MythTV source, however xNVCtrl is NOT installed unless you install nvidia-settings. Using the MythTV built-in xNVCtrl in this case requires the second change in the above patch. There are other similar patches attached to the related bugs.

If on the off chance you're on 32 bit x86 as I am, version 30.0 fails to decode some (but not most) h264 videos using vdpau and falls back to software decoding. For the time being I reverted to 29.1 for this reason. Though it's not 100% certain, again this appears to be a 32 bit only issue. This is discussed at the end of the following (semi-related) bug:

https://code.mythtv.org/trac/ticket/13223

But yea...I can't tell you how glad I was to get rid of QtWebkit. Works like a charm as long as you're not using plugins, or at least any plugins that require it. Good luck!

Tom
Back to top
View user's profile Send private message
tld
Veteran
Veteran


Joined: 09 Dec 2003
Posts: 1629

PostPosted: Sun Jun 16, 2019 1:08 pm    Post subject: Reply with quote

Another thing I forgot to clarify. Obviously I also had to modify my ebuild to omit this dependency from COMMON:
Code:
   dev-qt/qtwebkit:5

It's also important to note that, as it stands now, there really isn't any means of supporting a USE flag to control this because again, MythTV has no configure option to control this and simply bases it on the exitence of the QtWebkit headers etc.

EDIT: Also note that things have gotten a little confusing, as there's a lot of version 30 related things attached to this bug:

https://bugs.gentoo.org/674216

That's actually where I posted a patch for the above xNVCtrl issue I referred to. That bug was more related to reinstating the mythtv plugins. I didn't use the ebuild there (which installs plugins as well) as it was way to complex for my needs. Also note that with QtWebkit getting deprecated, that's all questionable anyway unless upstream replaces that with QtWebEngine at some point.

Tom
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 17475

PostPosted: Sun Jun 16, 2019 4:20 pm    Post subject: Reply with quote

tld wrote:
It's also important to note that, as it stands now, there really isn't any means of supporting a USE flag to control this because again, MythTV has no configure option to control this and simply bases it on the exitence of the QtWebkit headers etc.
The quick and dirty solution to this is to control it via an environment variable. Replace the qtwebkit hunk of your configure patch with:
Code:
--- a/configure
+++ b/configure
@@ -7286,6 +7286,7 @@
     qt_libs="-L${sysroot}/$(${qmake} -query QT_INSTALL_LIBS)"
 fi
 
+if [[ "$GENTOO_MYTHTV_EBUILD_USE_QTWEBKIT" = yes ]]
 if $(pkg-config --exists Qt5WebKit) || $(pkg-config --exists QtWebKit) ; then
     enable qtwebkit
 else
@@ -7296,6 +7297,9 @@
 fi
 
 enabled qtwebkit || die "Error! QtWebkit headers not found"
+else
+   disable qtwebkit
+fi
 
 if $(pkg-config --exists Qt5Script) || $(pkg-config --exists QtScript) ; then
     enable qtscript
Then modify the ebuild to set that environment variable to yes/no depending on whether the USE flag is enabled/disabled. usex could be used for this:
Code:
--- a/mythtv-29.1-r1.ebuild
+++ b/mythtv-29.1-r1.ebuild
@@ -272,6 +272,7 @@
    chmod +x ./external/FFmpeg/version.sh
 
    einfo "Running ./configure ${myconf}"
+   GENTOO_MYTHTV_EBUILD_USE_QTWEBKIT=$(usex qtwebkit) \
    ./configure \
       --cc="$(tc-getCC)" \
       --cxx="$(tc-getCXX)" \
This is all untested, but I think it will work.
Back to top
View user's profile Send private message
tld
Veteran
Veteran


Joined: 09 Dec 2003
Posts: 1629

PostPosted: Sun Jun 16, 2019 6:22 pm    Post subject: Reply with quote

Interesting idea. Unfortunately however I don't believe that will actually work. While the more complex configuration/build stuff going on the that entire tree is a bit over my head, I don't believe that the rest of the mythtv build even observes the fact that qtwebkit is "disabled" there. Remember that the original configure is designed to fail unless that's enabled. While I added that "disable qtwebkit" to mine, I'm fairly sure that the qtwebkit would still get linked in as long as the headers exist. It's been quite a while, but actually thinking back to when I first did this, I believe I even tried compiling with that qtwebkit disabled and QtWebkit still installed and it did in fact still link it in.

So as it stands I don't think there's a way to control that with a USE flag without potentially breaking MythTV with a subsequent "emerge --depclean". Sort of sucks.

EDIT: Sorry...I totally missed the point as to part of what you're doing there. That is, the fact that the existence of QtWebkit is getting checked in the ebuild itself. So yes...that would work as a stopgap fix. Actually however, again, I'm not actually sure that qtwebkit setting even has any real affect.

Tom
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 17475

PostPosted: Sun Jun 16, 2019 6:39 pm    Post subject: Reply with quote

My proposal was just a way to make your patch runtime switchable via USE flag. Whether it works or not depends on whether your patch to remove the qtwebkit check is sufficient. As you say, if your patch is insufficient to make MythTV ignore an installed qtwebkit, then so is mine. For Linux users with specific kernel features, you could probably play tricks with the sandbox to prevent the build system from accessing those headers successfully.
Back to top
View user's profile Send private message
RayDude
Veteran
Veteran


Joined: 29 May 2004
Posts: 1794
Location: San Jose, CA

PostPosted: Sun Jun 16, 2019 9:11 pm    Post subject: Reply with quote

I used the ebuild from https://bugs.gentoo.org/674216 to build mythtv 30.

It's working, but even though I enabled various plugins, they are not installing.

How can I go about debugging this?

Any suggestions?
_________________
Some day there will only be free software.
Back to top
View user's profile Send private message
jamtat
Apprentice
Apprentice


Joined: 09 Aug 2003
Posts: 162

PostPosted: Mon Jun 17, 2019 12:48 am    Post subject: Reply with quote

RayDude wrote:
Any suggestions?

Maybe try something like what Bragor said he did in this https://forums.gentoo.org/viewtopic-t-1076182-highlight-mythtv.html thread? "I modified the existing mythplugin and mythweb ebuilds in a way that they use the mythtv 29 code" (replace 29 with 30). He got mythplugins for 29 that way, so maybe it would work with 30 too? From what I gather that would require making your own local overlay/custom repo--something you maybe already did to get v. 30.
Back to top
View user's profile Send private message
eccerr0r
Watchman
Watchman


Joined: 01 Jul 2004
Posts: 8164
Location: almost Mile High in the USA

PostPosted: Mon Jun 17, 2019 2:23 am    Post subject: Reply with quote

For what it's worth, I'm currently upgrading my Gentoo mythtv box at the moment, and have 4GB RAM, 8GB swap. It goes fairly deep into swap, almost 2GB.

qtwebkit: Sun Jun 16 19:00:35 2019: 3074 seconds (dual core, using two helper quad core distcc machines)

BTW, looking at my qtwebkit merge history and the multiple times that distcc has failed, it seems distcc better than halves build time, and current unassisted merge time is probably on the order of 3 to 4 hours - but just a guess.

And... 10 hours for the Celeron N2808 I think is actually reasonable. The old dual core I'm running mythtv on is probably on the order of 3x as fast but eats many times more power...

Note: On amd64 boxes, portage eats up half a gig of ram that is a perfect candidate to swap out, running without swap just limits your options.
_________________
Intel Core i7 2700K/RadeonHD 5770/24GB DDR3/256GB SSD
What am I supposed watching?
Back to top
View user's profile Send private message
RayDude
Veteran
Veteran


Joined: 29 May 2004
Posts: 1794
Location: San Jose, CA

PostPosted: Mon Jun 17, 2019 4:51 am    Post subject: Reply with quote

jamtat wrote:
RayDude wrote:
Any suggestions?

Maybe try something like what Bragor said he did in this https://forums.gentoo.org/viewtopic-t-1076182-highlight-mythtv.html thread? "I modified the existing mythplugin and mythweb ebuilds in a way that they use the mythtv 29 code" (replace 29 with 30). He got mythplugins for 29 that way, so maybe it would work with 30 too? From what I gather that would require making your own local overlay/custom repo--something you maybe already did to get v. 30.


I could do that, but the new ebuild is so cool, I'd like to get it to work...

I looked through the ebuild and it seems sane. I wish I knew how to debug it...

I guess I could look through the log to try to figure it out...
_________________
Some day there will only be free software.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum