summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz93@gmail.com>2024-01-08 16:08:35 -0500
committerSam James <sam@gentoo.org>2024-01-09 07:22:21 +0000
commitf785d71faf63548afe5e2f6fb4ee03da1c686597 (patch)
treec26c863165d2031dd2acfcf877629726b5f31042 /media-tv/mythtv
parentsci-libs/caffe2: add support of onednn (diff)
downloadgentoo-f785d71faf63548afe5e2f6fb4ee03da1c686597.tar.gz
gentoo-f785d71faf63548afe5e2f6fb4ee03da1c686597.tar.bz2
gentoo-f785d71faf63548afe5e2f6fb4ee03da1c686597.zip
media-tv/mythtv: drop dependencies on future/simplejson
In particular, "future" is terribly unfortunate python2 stuff that blocks bumping PYTHON_COMPAT to python3_12. Fixed upstream in https://github.com/MythTV/mythtv/pull/838 and backported here. Closes: https://bugs.gentoo.org/888291 Signed-off-by: Eli Schwartz <eschwartz93@gmail.com> Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-tv/mythtv')
-rw-r--r--media-tv/mythtv/files/mythtv-33.1-python3.12.patch279
-rw-r--r--media-tv/mythtv/mythtv-33.1-r1.ebuild380
2 files changed, 659 insertions, 0 deletions
diff --git a/media-tv/mythtv/files/mythtv-33.1-python3.12.patch b/media-tv/mythtv/files/mythtv-33.1-python3.12.patch
new file mode 100644
index 000000000000..48a97b09623d
--- /dev/null
+++ b/media-tv/mythtv/files/mythtv-33.1-python3.12.patch
@@ -0,0 +1,279 @@
+From f1848eb41bf35d57b63b3a8cb19763c5b4656717 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Thu, 4 Jan 2024 16:18:00 -0500
+Subject: [PATCH 1/2] hardwareprofile: remove external dependency on simplejson
+
+This uses the requests module and converts requests responses to json
+using requests' own `.json()` method on responses. For incomprehensible
+reasons, requests has spent about a decade using either simplejson or
+the standard library's json module more or less at will, and returning
+either one or the other exception types. They don't know why they use
+simplejson, we don't know why they use simplejson. In requests 3 (which
+will be released in the Year Of The Linux Desktop or when pigs fly,
+whichever one comes later) simplejson is dropped entirely.
+
+There are innumerable issues discussing the problem on the requests
+bugtracker, with the general consensus being that it's better to
+randomly return either one of two different libraries and two different
+library return types in errors -- because it was historically done that
+way and people might be depending on it. ??????
+
+Bugs:
+
+https://github.com/psf/requests/pull/710
+https://github.com/psf/requests/pull/2516
+https://github.com/psf/requests/issues/3052
+https://github.com/psf/requests/issues/4169
+https://github.com/psf/requests/issues/4842
+https://github.com/psf/requests/issues/5794
+https://github.com/psf/requests/issues/6084
+
+The awkward workaround is to guarantee that requests' silent behavior of
+using simplejson *if it is installed* is forcibly triggered by forcibly
+depending on simplejson, and then catching the simplejson exception.
+
+The better solution here is pretty simple: do not rely on the requests
+module's automatic json conversion, this is as simple as using the
+already-imported json module and calling json.loads() on the retrieved
+content.
+
+Fixes: 1df343e9ab7defa284a73390210a65cf2112f17e
+Reimplements: bb154a843b737cc3ad8c1a45fa04a1a3609aff05
+(cherry picked from commit 6348dc01a45af6ed63c09326ec94cd425db1d6d7)
+---
+ .github/workflows/buildmaster.yml | 2 +-
+ mythtv/configure | 1 -
+ mythtv/programs/scripts/hardwareprofile/smolt.py | 5 ++---
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/.github/workflows/buildmaster.yml b/.github/workflows/buildmaster.yml
+index eea6e9fc2a..325cc7da64 100644
+--- a/.github/workflows/buildmaster.yml
++++ b/.github/workflows/buildmaster.yml
+@@ -48,7 +48,7 @@ jobs:
+ sudo apt install ccache qt5-qmake qtscript5-dev nasm libsystemd-dev libfreetype6-dev libmp3lame-dev libx264-dev libx265-dev libxrandr-dev libxml2-dev
+ sudo apt install libavahi-compat-libdnssd-dev libasound2-dev liblzo2-dev libhdhomerun-dev libsamplerate0-dev libva-dev libdrm-dev libvdpau-dev
+ sudo apt install libass-dev libpulse-dev libcec-dev libssl-dev libtag1-dev libbluray-dev libbluray-bdj libgnutls28-dev libqt5webkit5-dev
+- sudo apt install libvpx-dev python3-mysqldb python3-lxml python3-simplejson python3-future python3-setuptools libdbi-perl libdbd-mysql-perl libnet-upnp-perl
++ sudo apt install libvpx-dev python3-mysqldb python3-lxml python3-future python3-setuptools libdbi-perl libdbd-mysql-perl libnet-upnp-perl
+ sudo apt install libio-socket-inet6-perl libxml-simple-perl libqt5sql5-mysql libwayland-dev qtbase5-private-dev libzip-dev libsoundtouch-dev
+ if: runner.os == 'Linux'
+
+diff --git a/mythtv/configure b/mythtv/configure
+index 7e966ef817..3429c208e2 100755
+--- a/mythtv/configure
++++ b/mythtv/configure
+@@ -6555,7 +6555,6 @@ if enabled bindings_python; then
+ check_py_lib MySQLdb || disable_bindings_python "MySQLdb"
+ check_py_lib lxml || disable_bindings_python "lxml"
+ check_py_lib requests || disable_bindings_python "requests"
+- check_py_lib simplejson || disable_bindings_python "simplejson"
+ check_py_lib future || disable_bindings_python "future"
+ fi
+
+diff --git a/mythtv/programs/scripts/hardwareprofile/smolt.py b/mythtv/programs/scripts/hardwareprofile/smolt.py
+index 1bcc8060d0..464f068d6f 100644
+--- a/mythtv/programs/scripts/hardwareprofile/smolt.py
++++ b/mythtv/programs/scripts/hardwareprofile/smolt.py
+@@ -50,7 +50,6 @@ except ImportError:
+ from urlparse import urlparse
+ import json
+ from json import JSONEncoder
+-from simplejson import errors as sje
+ import datetime
+ import logging
+
+@@ -790,8 +789,8 @@ class _HardwareProfile:
+ sys.exit(1)
+
+ try:
+- admin_obj = admin_token.json()
+- except sje.JSONDecodeError:
++ admin_obj = json.loads(admin_token.content)
++ except json.JSONDecodeError:
+ self.session.close()
+ error(_('Incorrect server response. Expected a JSON string'))
+ return (1, None, None)
+--
+2.41.0
+
+
+From 13f65c0015d3e0d82d01a1dd5c15afe0ff1e8029 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Wed, 13 Dec 2023 23:11:11 -0500
+Subject: [PATCH 2/2] hardwareprofile: remove ancient "future" compatibility
+ library for python2
+
+Ironically, for a package that was intended to provide portability
+between python2 and python3, it is broken with python 3.12. A better
+library to use in all cases is "six".
+
+However, mythtv requires python 3.8 for a while now. Using
+"future.standard_library" is a no-op other than costing a pointless
+import and being troublesome to actually install.
+
+The hacky copy of six.with_metaclass included in "future" is rewritten
+to use the pure python3 form of a metaclass.
+
+(cherry picked from commit 4a1ea331bb2b106e7ae7e7e9bb7970f71b8a84b3)
+---
+ mythtv/configure | 1 -
+ .../scripts/hardwareprofile/MultipartPostHandler.py | 2 --
+ .../hardwareprofile/distros/mythtv_data/request.py | 2 --
+ .../scripts/hardwareprofile/distros/mythtv_data/uuiddb.py | 2 --
+ mythtv/programs/scripts/hardwareprofile/hwdata.py | 8 +++-----
+ mythtv/programs/scripts/hardwareprofile/os_detect.py | 5 ++---
+ mythtv/programs/scripts/hardwareprofile/request.py | 2 --
+ mythtv/programs/scripts/hardwareprofile/scan.py | 2 --
+ mythtv/programs/scripts/hardwareprofile/uuiddb.py | 2 --
+ 9 files changed, 5 insertions(+), 21 deletions(-)
+
+diff --git a/mythtv/configure b/mythtv/configure
+index 3429c208e2..4bfbbd8c64 100755
+--- a/mythtv/configure
++++ b/mythtv/configure
+@@ -6555,7 +6555,6 @@ if enabled bindings_python; then
+ check_py_lib MySQLdb || disable_bindings_python "MySQLdb"
+ check_py_lib lxml || disable_bindings_python "lxml"
+ check_py_lib requests || disable_bindings_python "requests"
+- check_py_lib future || disable_bindings_python "future"
+ fi
+
+ # Check for perl dependencies
+diff --git a/mythtv/programs/scripts/hardwareprofile/MultipartPostHandler.py b/mythtv/programs/scripts/hardwareprofile/MultipartPostHandler.py
+index 51619096b8..6ff2443d2e 100644
+--- a/mythtv/programs/scripts/hardwareprofile/MultipartPostHandler.py
++++ b/mythtv/programs/scripts/hardwareprofile/MultipartPostHandler.py
+@@ -41,8 +41,6 @@ Further Example:
+ """
+ from __future__ import print_function
+
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import object
+ from email.generator import _make_boundary
+ import mimetypes
+diff --git a/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/request.py b/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/request.py
+index 2ae4fd3fdd..81362ba8b7 100644
+--- a/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/request.py
++++ b/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/request.py
+@@ -21,8 +21,6 @@
+ # providing the base url, user agent, and proxy information.
+ # The object returned is slightly modified, with a shortcut to urlopen.
+
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import object
+ import urllib.request, urllib.error, urllib.parse
+ import urllib.parse
+diff --git a/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/uuiddb.py b/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/uuiddb.py
+index 6960f8705a..9d22556c04 100644
+--- a/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/uuiddb.py
++++ b/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/uuiddb.py
+@@ -16,8 +16,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import map
+ from builtins import str
+ from builtins import object
+diff --git a/mythtv/programs/scripts/hardwareprofile/hwdata.py b/mythtv/programs/scripts/hardwareprofile/hwdata.py
+index ba297bf24f..0770d32b96 100644
+--- a/mythtv/programs/scripts/hardwareprofile/hwdata.py
++++ b/mythtv/programs/scripts/hardwareprofile/hwdata.py
+@@ -25,8 +25,6 @@ from __future__ import division
+ from __future__ import absolute_import
+ from builtins import int
+ from builtins import open
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import object
+ from smolt_config import get_config_attr
+
+@@ -71,9 +69,9 @@ class DeviceMap(object):
+ pass
+ else:
+ raise Exception('Hardware data file not found. Please set the location HWDATA_DIR in config.py')
+-
+-
+-
++
++
++
+ vendors = {}
+ curvendor = None
+ curdevice = None
+diff --git a/mythtv/programs/scripts/hardwareprofile/os_detect.py b/mythtv/programs/scripts/hardwareprofile/os_detect.py
+index 7d0edee00e..beabf7d865 100644
+--- a/mythtv/programs/scripts/hardwareprofile/os_detect.py
++++ b/mythtv/programs/scripts/hardwareprofile/os_detect.py
+@@ -26,7 +26,6 @@
+ from __future__ import print_function
+ from builtins import object
+ import os
+-from future.utils import with_metaclass
+
+ class OrderedType( type ):
+ # provide global sequencing for OS class and subclasses to ensure
+@@ -37,7 +36,7 @@ class OrderedType( type ):
+ mcs.nextorder += 1
+ return type.__new__(mcs, name, bases, attrs)
+
+-class OS( with_metaclass(OrderedType, object) ):
++class OS(metaclass=OrderedType):
+ _requires_func = True
+ def __init__(self, ostype=-1, func=None, inst=None):
+ if callable(ostype):
+@@ -189,7 +188,7 @@ class OSInfoType( type ):
+ # fall through to Unknown
+ return 'Unknown'
+
+-class get_os_info( with_metaclass(OSInfoType, object) ):
++class get_os_info(metaclass=OSInfoType):
+ @OS('nt')
+ def windows(self):
+ win_version = {
+diff --git a/mythtv/programs/scripts/hardwareprofile/request.py b/mythtv/programs/scripts/hardwareprofile/request.py
+index 6e6a20b9e7..d6668cef3d 100644
+--- a/mythtv/programs/scripts/hardwareprofile/request.py
++++ b/mythtv/programs/scripts/hardwareprofile/request.py
+@@ -21,8 +21,6 @@
+ # providing the base url, user agent, and proxy information.
+ # The object returned is slightly modified, with a shortcut to urlopen.
+
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import object
+
+ try:
+diff --git a/mythtv/programs/scripts/hardwareprofile/scan.py b/mythtv/programs/scripts/hardwareprofile/scan.py
+index 1389400ece..d100bfe692 100644
+--- a/mythtv/programs/scripts/hardwareprofile/scan.py
++++ b/mythtv/programs/scripts/hardwareprofile/scan.py
+@@ -18,8 +18,6 @@
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ from __future__ import print_function
+-from future import standard_library
+-standard_library.install_aliases()
+ import smolt
+ import json
+
+diff --git a/mythtv/programs/scripts/hardwareprofile/uuiddb.py b/mythtv/programs/scripts/hardwareprofile/uuiddb.py
+index e7ba3891ec..3c2fc16d86 100644
+--- a/mythtv/programs/scripts/hardwareprofile/uuiddb.py
++++ b/mythtv/programs/scripts/hardwareprofile/uuiddb.py
+@@ -16,8 +16,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+-from future import standard_library
+-standard_library.install_aliases()
+ from builtins import object
+ import configparser
+ import logging
+--
+2.41.0
+
diff --git a/media-tv/mythtv/mythtv-33.1-r1.ebuild b/media-tv/mythtv/mythtv-33.1-r1.ebuild
new file mode 100644
index 000000000000..344b691045d3
--- /dev/null
+++ b/media-tv/mythtv/mythtv-33.1-r1.ebuild
@@ -0,0 +1,380 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISABLE_AUTOFORMATTING="yes"
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit edo flag-o-matic java-pkg-opt-2 java-ant-2 python-any-r1
+inherit qmake-utils readme.gentoo-r1 systemd toolchain-funcs user-info
+
+DESCRIPTION="Open Source DVR and media center hub"
+HOMEPAGE="https://www.mythtv.org https://github.com/MythTV/mythtv"
+if [[ ${PV} == *_p* ]] ; then
+ MY_COMMIT="5824c588db24b4e71a7d94e829e6419f71089297"
+ SRC_URI="https://github.com/MythTV/mythtv/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz"
+ # mythtv and mythplugins are separate builds in the github MythTV project
+ S="${WORKDIR}/mythtv-${MY_COMMIT}/mythtv"
+else
+ SRC_URI="https://github.com/MythTV/mythtv/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ # mythtv and mythplugins are separate builds in the github mythtv project
+ S="${WORKDIR}/${P}/mythtv"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE_INPUT_DEVICES="input_devices_joystick"
+IUSE_VIDEO_CAPTURE_DEVICES="v4l ieee1394 hdhomerun vbox ceton"
+IUSE="alsa asi autostart cdda cdr cec cpu_flags_ppc_altivec debug dvd dvb exif fftw jack java"
+IUSE+=" +lame lcd libass lirc nvdec +opengl oss perl pulseaudio python raw systemd vaapi vdpau vpx"
+IUSE+=" +wrapper x264 x265 +xml xmltv +xvid +X zeroconf"
+IUSE+=" ${IUSE_INPUT_DEVICES} ${IUSE_VIDEO_CAPTURE_DEVICES}"
+REQUIRED_USE="
+ cdr? ( cdda )
+"
+
+RDEPEND="
+ acct-user/mythtv
+ dev-libs/glib:2
+ dev-libs/lzo
+ dev-libs/libzip:=
+ dev-qt/qtcore:5
+ dev-qt/qtdbus:5
+ dev-qt/qtgui:5[jpeg]
+ dev-qt/qtnetwork:5
+ dev-qt/qtscript:5
+ dev-qt/qtsql:5[mysql]
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ media-fonts/corefonts
+ media-fonts/dejavu
+ media-fonts/liberation-fonts
+ media-fonts/tex-gyre
+ media-gfx/exiv2:=
+ media-libs/freetype:2
+ media-libs/libbluray:=[java?]
+ media-libs/libsamplerate
+ media-libs/libsoundtouch
+ media-libs/taglib
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ autostart? (
+ net-dialup/mingetty
+ x11-apps/xset
+ x11-wm/evilwm
+ )
+ cec? ( dev-libs/libcec )
+ dvd? (
+ dev-libs/libcdio:=
+ media-libs/libdvdcss
+ sys-fs/udisks:2
+ )
+ fftw? ( sci-libs/fftw:3.0=[threads] )
+ hdhomerun? ( media-libs/libhdhomerun )
+ ieee1394? (
+ media-libs/libiec61883
+ sys-libs/libavc1394
+ sys-libs/libraw1394
+ )
+ jack? ( virtual/jack )
+ lame? ( media-sound/lame )
+ lcd? ( app-misc/lcdproc )
+ libass? ( media-libs/libass:= )
+ lirc? ( app-misc/lirc )
+ nvdec? ( x11-drivers/nvidia-drivers )
+ opengl? ( dev-qt/qtopengl:5 )
+ pulseaudio? ( media-libs/libpulse )
+ systemd? ( sys-apps/systemd:= )
+ vaapi? ( media-libs/libva:= )
+ vdpau? ( x11-libs/libvdpau )
+ vpx? ( media-libs/libvpx:= )
+ x264? ( media-libs/x264:= )
+ X? (
+ x11-apps/xinit
+ x11-libs/libX11:=
+ x11-libs/libXext:=
+ x11-libs/libXinerama:=
+ x11-libs/libXrandr:=
+ x11-libs/libXv:=
+ x11-libs/libXxf86vm:=
+ x11-misc/wmctrl:=
+ )
+ x265? ( media-libs/x265 )
+ xml? ( dev-libs/libxml2:2 )
+ xmltv? (
+ dev-perl/XML-LibXML
+ media-tv/xmltv
+ )
+ xvid? ( media-libs/xvid )
+ zeroconf? (
+ dev-libs/openssl:=
+ net-dns/avahi[mdnsresponder-compat]
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ dev-lang/yasm
+ sys-kernel/linux-headers
+ x11-base/xorg-proto
+ perl? (
+ dev-perl/DBD-mysql
+ dev-perl/DBI
+ dev-perl/HTTP-Message
+ dev-perl/IO-Socket-INET6
+ dev-perl/LWP-Protocol-https
+ dev-perl/Net-UPnP
+ dev-perl/XML-Simple
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+ opengl? ( virtual/opengl )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep '
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/mysqlclient[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ ')
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-33.1-libva.patch
+ "${FILESDIR}"/${PN}-33.1-ffmpeg-binutils-2.41.patch
+ "${FILESDIR}"/${PN}-33.1-linux-headers-6.5.patch
+ # https://github.com/MythTV/mythtv/pull/824
+ # https://github.com/MythTV/mythtv/pull/838
+ # https://bugs.gentoo.org/888291
+ "${FILESDIR}"/${PN}-33.1-python3.12.patch
+)
+
+python_check_deps() {
+ use python || return 0
+ python_has_version "dev-python/python-dateutil[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/lxml[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/mysqlclient[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/requests-cache[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ use python && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # Perl bits need to go into vendor_perl and not site_perl
+ sed -e "s:pure_install:pure_install INSTALLDIRS=vendor:" \
+ -i "${S}"/bindings/perl/Makefile || die "Cannot convert site_perl to vendor_perl!"
+
+}
+
+src_configure() {
+ local -a myconf=()
+
+ # Setup paths
+ myconf+=( --prefix="${EPREFIX}"/usr )
+ myconf+=( --libdir="${EPREFIX}"/usr/$(get_libdir) )
+ myconf+=( --libdir-name=$(get_libdir) )
+ myconf+=( --mandir="${EPREFIX}"/usr/share/man )
+
+ if use debug; then
+ myconf+=( --compile-type=debug )
+ myconf+=( --disable-stripping ) # FIXME: does not disable for all files, only for some
+ myconf+=( --enable-valgrind ) # disables timeouts for valgrind memory debugging
+ else
+ myconf+=( --compile-type=release )
+ fi
+
+ # Build boosters
+ has ccache "${FEATURES}" || myconf+=( --disable-ccache )
+ has distcc "${FEATURES}" || myconf+=( --disable-distcc )
+
+ # CPU settings
+ # Mythtv's configure is borrowed from ffmpeg,
+ # Bug #172723
+ # Try to get cpu type based on CFLAGS.
+ # We need to do this so that features of that CPU will be better used
+ # If they contain an unknown CPU it will not hurt since ffmpeg's configure
+ # will just ignore it.
+ local i
+ for i in $(get-flag march) $(get-flag mcpu) $(get-flag mtune) ; do
+ [[ "${i}" == "native" ]] && i="host" # bug #273421
+ myconf+=( --cpu="${i}" )
+ break
+ done
+ myconf+=( $(use_enable cpu_flags_ppc_altivec altivec) )
+
+ # Sound Output Support
+ myconf+=(
+ $(use_enable oss audio-oss)
+
+ $(use_enable alsa audio-alsa)
+ $(use_enable jack audio-jack)
+ $(use_enable pulseaudio audio-pulseoutput)
+ )
+
+ # Input Support
+ myconf+=(
+ $(use_enable lirc)
+ $(use_enable input_devices_joystick joystick-menu)
+ $(use_enable cec libcec)
+ $(use_enable ieee1394 firewire)
+ $(use_enable hdhomerun)
+ $(use_enable vbox)
+ $(use_enable ceton)
+ $(use_enable v4l v4l2)
+ $(use_enable dvb)
+ $(use_enable asi)
+ )
+
+ # Video Output Support
+ myconf+=(
+ $(use_enable X x11)
+ )
+
+ # Hardware accelerators
+ myconf+=(
+ $(use_enable nvdec)
+ $(use_enable vaapi)
+ $(use_enable vdpau)
+ $(use_enable opengl)
+ $(use_enable opengl egl)
+ $(use_enable libass)
+ )
+
+ # System tools
+ myconf+=(
+ $(use_enable systemd systemd_notify)
+ $(use_enable systemd systemd_journal)
+ $(use_enable xml libxml2)
+ $(use_enable zeroconf libdns-sd)
+ )
+
+ # Bindings
+ if use perl && use python; then
+ myconf+=( --with-bindings=perl,python )
+ elif use perl; then
+ myconf+=( --without-bindings=python )
+ myconf+=( --with-bindings=perl )
+ elif use python; then
+ myconf+=( --without-bindings=perl )
+ myconf+=( --with-bindings=python )
+ else
+ myconf+=( --without-bindings=perl,python )
+ fi
+ use python && myconf+=( --python="${EPYTHON}" )
+ myconf+=( $(use_enable java bdjava) )
+
+ # External codec library options (used for mythffmpeg and streaming transcode)
+ # lame is required for some broadcasts for silence detection of commercials
+ # default enable in IUSE with +lame
+ myconf+=(
+ $(use_enable lame libmp3lame)
+ $(use_enable xvid libxvid)
+ $(use_enable x264 libx264)
+ $(use_enable x265 libx265)
+ $(use_enable vpx libvpx)
+ )
+
+ # Clean up DSO load times and other compiler bits
+ myconf+=( --enable-symbol-visibility )
+ myconf+=( --enable-pic )
+
+ if tc-is-cross-compiler ; then
+ myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) )
+ myconf+=( --cross-prefix="${CHOST}"- )
+ fi
+
+ # econf sets these options that are not handled by configure:
+ # --build --host --infodir --localstatedir --sysconfdir
+
+ edo ./configure \
+ --prefix="${EPREFIX}/usr" \
+ --cc="$(tc-getCC)" \
+ --cxx="$(tc-getCXX)" \
+ --ar="$(tc-getAR)" \
+ --optflags="${CFLAGS}" \
+ --extra-cflags="${CFLAGS}" \
+ --extra-cxxflags="${CXXFLAGS}" \
+ --extra-ldflags="${LDFLAGS}" \
+ --qmake="$(qt5_get_bindir)"/qmake \
+ "${myconf[@]}"
+}
+
+src_install() {
+ emake STRIP="true" INSTALL_ROOT="${D}" install
+ use python && python_optimize # does all packages by default
+ dodoc AUTHORS README
+ readme.gentoo_create_doc
+
+ insinto /usr/share/mythtv/database
+ doins database/*
+
+ newinitd "${FILESDIR}"/mythbackend.init-r3 mythbackend
+ newconfd "${FILESDIR}"/mythbackend.conf-r1 mythbackend
+ if use systemd; then
+ systemd_newunit "${FILESDIR}"/mythbackend.service-28 mythbackend.service
+ fi
+
+ # The acct-user/mythtv package creates/manages the user 'mythtv'
+ keepdir /etc/mythtv
+ fowners -R mythtv /etc/mythtv
+ keepdir /var/log/mythtv
+ fowners -R mythtv /var/log/mythtv
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/mythtv.logrotate.d-r4 mythtv
+
+ insinto /usr/share/mythtv/contrib
+ # Ensure we don't install scripts needing the perl bindings (bug #516968) Finding none is OK.
+ if ! use perl; then
+ find contrib/ -name '*.pl' -exec rm {} \;
+ fi
+ # Ensure we don't install scripts needing the python bindings (bug #516968) Finding none is OK.
+ if ! use python; then
+ find contrib/ -name '*.py' -exec rm {} \;
+ fi
+ doins -r contrib/*
+
+ # Install our mythfrontend wrapper which is similar to Mythbuntu's
+ if use wrapper; then
+ mv "${ED}/usr/bin/mythfrontend" "${ED}/usr/bin/mythfrontend.real" || die "Failed to install mythfrontend.real"
+ newbin "${FILESDIR}"/mythfrontend.wrapper mythfrontend
+ newconfd "${FILESDIR}"/mythfrontend.conf mythfrontend
+ fi
+
+ if use autostart; then
+ newenvd - 95mythtv <<- _EOF_
+ CONFIG_PROTECT=\"$(egethome mythtv)\"
+ _EOF_
+ insinto $(egethome mythtv)
+ newins "${FILESDIR}"/bash_profile .bash_profile
+ newins "${FILESDIR}"/xinitrc-r1 .xinitrc
+ fi
+
+ # Make Python files executable but not files named "__init__.py"
+ find "${ED}/usr/share/mythtv" -type f -name '*.py' -exec expr \( {} : '.*__init__.py' \) = 0 \; \
+ -exec chmod a+x {} \; || die "Failed to make python file $(basename ${file}) executable"
+
+ # Ensure that Python scripts are executed by Python 2
+ use python && python_fix_shebang "${ED}/usr/share/mythtv"
+
+ # Make shell & perl scripts executable
+ find "${ED}" -type f \( -name '*.sh' -o -name '*.pl' \) -exec chmod a+x {} \; || die "Failed to make script executable"
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+}
+
+pkg_config() {
+ if [[ -e "${EROOT}"/usr/bin/mysql ]]; then
+ "${EROOT}"/usr/bin/mysql -u root -p < "${EROOT}"/usr/share/mythtv/database/mc.sql
+ fi
+}