[VirtualBox/el7] (4 commits) ...Drop VirtualBox-OSE-4.1.12-gsoap.patch, was for Fedora 15
by Sérgio M. Basto
Summary of changes:
738bad0... Use systemd-detect-virt to detect if we can install (*)
4728a69... Revert "Use systemd-detect-virt to detect if we can install (*)
cafa488... Update VBox to 5.1.14 (*)
f84c104... Drop VirtualBox-OSE-4.1.12-gsoap.patch, was for Fedora 15 (*)
(*) This commit already existed in another branch; no separate mail sent
7 years, 10 months
[VirtualBox] Drop VirtualBox-OSE-4.1.12-gsoap.patch, was for Fedora 15
by Sérgio M. Basto
commit f84c1040b3b798d692052f7117e94531813534f3
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Mon Jan 23 05:52:08 2017 +0000
Drop VirtualBox-OSE-4.1.12-gsoap.patch, was for Fedora 15
VirtualBox-OSE-4.1.12-gsoap.patch | 11 -----------
VirtualBox.spec | 9 ++++-----
2 files changed, 4 insertions(+), 16 deletions(-)
---
diff --git a/VirtualBox.spec b/VirtualBox.spec
index 1eb9298..5682fb4 100644
--- a/VirtualBox.spec
+++ b/VirtualBox.spec
@@ -25,7 +25,7 @@
Name: VirtualBox
Version: 5.1.14
#Release: 1%%{?prerel:.%%{prerel}}%%{?dist}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A general-purpose full virtualizer for PC hardware
License: GPLv2 or (GPLv2 and CDDL)
@@ -43,7 +43,6 @@ Source21: os_mageia_64.png
Patch1: VirtualBox-OSE-4.1.4-noupdate.patch
Patch2: VirtualBox-5.1.0-strings.patch
Patch18: VirtualBox-OSE-4.0.2-aiobug.patch
-Patch22: VirtualBox-OSE-4.1.12-gsoap.patch
Patch23: VirtualBox-5.0.18-xserver_guest.patch
Patch24: VirtualBox-5.0.18-xserver_guest_xorg19.patch
Patch26: VirtualBox-4.3.0-no-bundles.patch
@@ -259,9 +258,6 @@ rm -r src/libs/zlib-1.2.8/
%patch1 -p1 -b .noupdates
%patch2 -p1 -b .strings
%patch18 -p1 -b .aiobug
-%if 0%{?fedora} < 16
-%patch22 -p1 -b .gsoap
-%endif
%patch23 -p1 -b .xserver_guest
%if 0%{?fedora}
%patch24 -p1 -b .xserver_guest_xorg19
@@ -760,6 +756,9 @@ getent group vboxsf >/dev/null || groupadd -r vboxsf 2>&1
%{_datadir}/%{name}-kmod-%{version}
%changelog
+* Mon Jan 23 2017 Sérgio Basto <sergio(a)serjux.com> - 5.1.14-2
+- Drop VirtualBox-OSE-4.1.12-gsoap.patch, was for Fedora 15
+
* Tue Jan 17 2017 Sérgio Basto <sergio(a)serjux.com> - 5.1.14-1
- Update VBox to 5.1.14
7 years, 10 months
[steam/f24] Fix Source URL for post kernel 4.9 udev rules
by Simone Caronni
commit ab3e47cda1b412b3c42649bf670bd8c4f4482cbe
Author: Simone Caronni <negativo17(a)gmail.com>
Date: Sun Jan 22 18:12:38 2017 +0100
Fix Source URL for post kernel 4.9 udev rules
Reintroduce optional and not endorsed by Valve noruntime subpackage for using all system libraries in place of all the Ubuntu runtime ones
steam-disable-runtime.patch | 45 +++++++++
steam.csh | 5 +
steam.sh | 2 +
steam.spec | 227 +++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 277 insertions(+), 2 deletions(-)
---
diff --git a/steam-disable-runtime.patch b/steam-disable-runtime.patch
new file mode 100644
index 0000000..5babb06
--- /dev/null
+++ b/steam-disable-runtime.patch
@@ -0,0 +1,45 @@
+diff -Naur steam.old/steam steam/steam
+--- steam.old/steam 2016-12-13 12:22:54.116699983 +0100
++++ steam/steam 2016-12-13 12:23:02.042856003 +0100
+@@ -189,6 +189,33 @@
+ # go to the install directory and run the client
+ cp "$LAUNCHSTEAMBOOTSTRAPFILE" "$LAUNCHSTEAMDIR/bootstrap.tar.xz"
+ cd "$LAUNCHSTEAMDIR"
++
++if [ "$STEAM_RUNTIME" == "0" ]; then
++
++ if [ ! -h $LAUNCHSTEAMPLATFORM/libudev.so.0 ] || [ ! -h $LAUNCHSTEAMPLATFORM/libbz2.so.1.0 ]; then
++ ln -sf /usr/lib/libudev.so.1 $LAUNCHSTEAMPLATFORM/libudev.so.0
++ ln -sf /usr/lib/libbz2.so.1 $LAUNCHSTEAMPLATFORM/libbz2.so.1.0
++ fi
++
++ rm -fr $LAUNCHSTEAMPLATFORM/steam-runtime
++
++ # Workaround for bug 3697: https://github.com/ValveSoftware/steam-for-linux/issues/3697
++ LD_LIBRARY_PATH="${LD_LIBRARY_PATH-}"
++
++else
++
++ if [ -h $LAUNCHSTEAMPLATFORM/libudev.so.0 ] || [ ! -h $LAUNCHSTEAMPLATFORM/libbz2.so.1.0 ]; then
++ rm -f $LAUNCHSTEAMPLATFORM/libudev.so.0
++ rm -f $LAUNCHSTEAMPLATFORM/libbz2.so.1.0
++ fi
++
++ # Workaround for bug 3273: https://github.com/ValveSoftware/steam-for-linux/issues/3273
++ rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6*
++ rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6*
++
++fi
++
++
+ if [ "`command -v tee`" != "" ]; then
+ mkdir -p --mode=777 /tmp/dumps
+ if [[ -f "/tmp/dumps/${USER}_stdout.txt" ]]; then
+@@ -201,7 +228,3 @@
+
+ # Workaround for bug 3570: https://github.com/ValveSoftware/steam-for-linux/issues/3570
+ rm -f /tmp/steam_chrome_shmem
+-
+-# Workaround for bug 3273: https://github.com/ValveSoftware/steam-for-linux/issues/3273
+-rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6*
+-rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6*
diff --git a/steam.csh b/steam.csh
new file mode 100644
index 0000000..76e2c24
--- /dev/null
+++ b/steam.csh
@@ -0,0 +1,5 @@
+# Disable Ubuntu 32 bit runtime
+if ( -x /usr/bin/steam ) then
+ setenv STEAM_RUNTIME "0"
+endif
+
diff --git a/steam.sh b/steam.sh
new file mode 100644
index 0000000..4576810
--- /dev/null
+++ b/steam.sh
@@ -0,0 +1,2 @@
+# Disable Ubuntu 32 bit runtime
+[ -x /usr/bin/steam ] && export STEAM_RUNTIME=0
diff --git a/steam.spec b/steam.spec
index cdf4d44..e365dd7 100644
--- a/steam.spec
+++ b/steam.spec
@@ -6,7 +6,7 @@
Name: steam
Version: 1.0.0.54
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Installer for the Steam software distribution service
# Redistribution and repackaging for Linux is allowed, see license file
License: Steam License Agreement
@@ -14,6 +14,8 @@ URL: http://www.steampowered.com/
ExclusiveArch: i686
Source0: http://repo.steampowered.com/steam/pool/%{name}/s/%{name}/%{name}_%{versi...
+Source1: %{name}.sh
+Source2: %{name}.csh
Source3: %{name}.xml
Source4: %{name}.appdata.xml
@@ -25,7 +27,7 @@ Source4: %{name}.appdata.xml
#
# Microsoft patch accepted upstream, remove Microsoft entries when kernel
# is at 4.9: https://bugzilla.redhat.com/show_bug.cgi?id=1325354#c14
-Source8: https://raw.githubusercontent.com/denilsonsa/udev-joystick-blacklist/mast...
+Source8: https://raw.githubusercontent.com/denilsonsa/udev-joystick-blacklist/mast...
Source9: https://raw.githubusercontent.com/cyndis/shield-controller-config/master/...
Source10: README.Fedora
@@ -46,6 +48,12 @@ Patch2: %{name}-controller-gamepad-emulation.patch
# Make "X" window button close the program instead of minimizing like "_"
Patch3: %{name}-3210.patch
+# Do not remove libstdc++ from runtime on systems where mesa is compiled with
+# a statically linked libstdc++ (Fedora 22+) and enable option to run without
+# Ubuntu runtime:
+# https://github.com/ValveSoftware/steam-for-linux/issues/3697
+Patch4: %{name}-disable-runtime.patch
+
BuildRequires: desktop-file-utils
BuildRequires: systemd
@@ -100,6 +108,200 @@ Steam is a software distribution service with an online store, automated
installation, automatic updates, achievements, SteamCloud synchronized
savegame and screenshot functionality, and many social features.
+%if !0%{?rhel}
+%package noruntime
+Summary: Use system libraries instead of the Steam Runtime
+Requires: steam = %{version}-%{release}
+Buildarch: noarch
+
+# After the Steam client has been downloaded once, run the following command and
+# then adjust the list of requirements to remove dependencies pulled in by other
+# packages.
+
+# cd ~/.local/share/Steam/ubuntu12_32/
+# for i in `ldd *.so | egrep -v "linux-gate.so|ld-linux.so" | awk '{print $1}'` `find steam-runtime/i386 -name "*.so*" -exec basename {} \;`; do
+# dnf repoquery -q --qf="Requires: %{name}" --whatprovides "$i"
+# done | sort | uniq | sed 's/$/%{?_isa}/g'
+
+# Then remove compiz and emerald.
+
+Requires: alsa-lib%{?_isa}
+Requires: alsa-plugins-arcamav%{?_isa}
+Requires: alsa-plugins-jack%{?_isa}
+Requires: alsa-plugins-oss%{?_isa}
+Requires: alsa-plugins-pulseaudio%{?_isa}
+Requires: alsa-plugins-samplerate%{?_isa}
+Requires: alsa-plugins-speex%{?_isa}
+Requires: alsa-plugins-upmix%{?_isa}
+Requires: alsa-plugins-usbstream%{?_isa}
+Requires: alsa-plugins-vdownmix%{?_isa}
+Requires: atk%{?_isa}
+Requires: avahi-libs%{?_isa}
+Requires: bzip2-libs%{?_isa}
+Requires: cairo%{?_isa}
+Requires: compat-libgcrypt%{?_isa}
+Requires: cups-libs%{?_isa}
+Requires: dbus-glib%{?_isa}
+Requires: dbus-libs%{?_isa}
+Requires: dconf%{?_isa}
+Requires: elfutils-libelf%{?_isa}
+Requires: elfutils-libs%{?_isa}
+Requires: expat%{?_isa}
+Requires: ffmpeg-libs%{?_isa}
+Requires: flac-libs%{?_isa}
+Requires: fontconfig%{?_isa}
+Requires: freeglut%{?_isa}
+Requires: freetype%{?_isa}
+Requires: GConf2%{?_isa}
+Requires: gdk-pixbuf2%{?_isa}
+Requires: glib2%{?_isa}
+Requires: glibc%{?_isa}
+Requires: gmp%{?_isa}
+Requires: gnutls%{?_isa}
+Requires: graphite2%{?_isa}
+Requires: gsm%{?_isa}
+Requires: gstreamer%{?_isa}
+Requires: gstreamer1%{?_isa}
+Requires: gstreamer-devel%{?_isa}
+Requires: gstreamer-plugins-base%{?_isa}
+Requires: gtk2%{?_isa}
+Requires: gtk2-engines%{?_isa}
+Requires: gtk3%{?_isa}
+Requires: gtk-murrine-engine%{?_isa}
+Requires: harfbuzz%{?_isa}
+Requires: heimdal-libs%{?_isa}
+Requires: jack-audio-connection-kit%{?_isa}
+Requires: json-c%{?_isa}
+Requires: keyutils-libs%{?_isa}
+Requires: krb5-libs%{?_isa}
+Requires: lcms2%{?_isa}
+Requires: libacl%{?_isa}
+Requires: libappindicator%{?_isa}
+Requires: libasyncns%{?_isa}
+Requires: libattr%{?_isa}
+Requires: libcanberra%{?_isa}
+Requires: libcanberra-gtk2%{?_isa}
+Requires: libcap%{?_isa}
+Requires: libcom_err%{?_isa}
+Requires: libcurl%{?_isa}
+Requires: libdbusmenu%{?_isa}
+Requires: libdbusmenu-gtk2%{?_isa}
+Requires: libdrm%{?_isa}
+Requires: libexif%{?_isa}
+Requires: libffi%{?_isa}
+Requires: libgcc%{?_isa}
+Requires: libgcrypt%{?_isa}
+Requires: libGLEW%{?_isa}
+Requires: libgomp%{?_isa}
+Requires: libgpg-error%{?_isa}
+Requires: libICE%{?_isa}
+Requires: libidn%{?_isa}
+Requires: libindicator%{?_isa}
+Requires: libjpeg-turbo%{?_isa}
+Requires: libnotify%{?_isa}
+Requires: libogg%{?_isa}
+Requires: libpng%{?_isa}
+Requires: libpng12%{?_isa}
+Requires: libsamplerate%{?_isa}
+Requires: libselinux%{?_isa}
+Requires: libSM%{?_isa}
+Requires: libsndfile%{?_isa}
+Requires: libstdc++%{?_isa}
+Requires: libtasn1%{?_isa}
+Requires: libtdb%{?_isa}
+Requires: libtheora%{?_isa}
+Requires: libtool-ltdl%{?_isa}
+Requires: libusbx%{?_isa}
+Requires: libuuid%{?_isa}
+Requires: libva%{?_isa}
+Requires: libvdpau%{?_isa}
+Requires: libvorbis%{?_isa}
+Requires: libvpx%{?_isa}
+Requires: libwayland-client%{?_isa}
+Requires: libwayland-server%{?_isa}
+Requires: libX11%{?_isa}
+Requires: libXau%{?_isa}
+Requires: libXaw%{?_isa}
+Requires: libxcb%{?_isa}
+Requires: libXcomposite%{?_isa}
+Requires: libXcursor%{?_isa}
+Requires: libXdamage%{?_isa}
+Requires: libXdmcp%{?_isa}
+Requires: libXext%{?_isa}
+Requires: libXfixes%{?_isa}
+Requires: libXft%{?_isa}
+Requires: libXi%{?_isa}
+Requires: libXinerama%{?_isa}
+Requires: libxml2%{?_isa}
+Requires: libXmu%{?_isa}
+Requires: libXpm%{?_isa}
+Requires: libXrandr%{?_isa}
+Requires: libXrender%{?_isa}
+Requires: libXScrnSaver%{?_isa}
+Requires: libxshmfence%{?_isa}
+Requires: libXt%{?_isa}
+Requires: libXtst%{?_isa}
+Requires: libXxf86vm%{?_isa}
+Requires: mesa-libEGL%{?_isa}
+Requires: mesa-libgbm%{?_isa}
+Requires: mesa-libGL%{?_isa}
+Requires: mesa-libglapi%{?_isa}
+Requires: mesa-libGLU%{?_isa}
+Requires: ncurses-libs%{?_isa}
+Requires: nettle%{?_isa}
+Requires: NetworkManager-glib%{?_isa}
+Requires: nspr%{?_isa}
+Requires: nss%{?_isa}
+Requires: nss-softokn%{?_isa}
+Requires: nss-softokn-freebl%{?_isa}
+Requires: nss-util%{?_isa}
+Requires: openal-soft%{?_isa}
+Requires: openldap%{?_isa}
+Requires: openssl-libs%{?_isa}
+Requires: orc%{?_isa}
+Requires: p11-kit%{?_isa}
+Requires: pango%{?_isa}
+Requires: pangox-compat%{?_isa}
+Requires: pciutils-libs%{?_isa}
+Requires: pcre%{?_isa}
+Requires: pixman%{?_isa}
+Requires: pulseaudio-libs%{?_isa}
+Requires: SDL%{?_isa}
+Requires: SDL2%{?_isa}
+Requires: SDL2_image%{?_isa}
+Requires: SDL2_mixer%{?_isa}
+Requires: SDL2_net%{?_isa}
+Requires: SDL2_ttf%{?_isa}
+Requires: SDL_image%{?_isa}
+Requires: SDL_mixer%{?_isa}
+Requires: SDL_ttf%{?_isa}
+Requires: speex%{?_isa}
+Requires: speexdsp%{?_isa}
+Requires: sqlite%{?_isa}
+Requires: systemd-libs%{?_isa}
+Requires: tbb%{?_isa}
+Requires: tcp_wrappers-libs%{?_isa}
+Requires: xz-libs%{?_isa}
+Requires: zlib%{?_isa}
+
+%if 0%{?fedora} >= 23
+Requires: libgudev%{?_isa}
+Requires: trousers-lib%{?_isa}
+%else
+Requires: libgudev1%{?_isa}
+Requires: trousers%{?_isa}
+%endif
+
+%description noruntime
+The Steam client normally uses a set of libraries derived from Ubuntu (the Steam
+Runtime); and all titles on Steam are compiled against those libraries.
+
+This package takes care of installing all the requirements to use system
+libraries in place of the Steam Runtime and a profile environment file to enable
+it. Please note that this is not a supported Valve configuration and it may lead
+to unexpected results.
+%endif
+
%prep
%setup -q -n %{name}
%patch0 -p1
@@ -107,6 +309,11 @@ savegame and screenshot functionality, and many social features.
%patch2 -p1
%patch3 -p1
+%if !0%{?rhel}
+# Steam no-runtime package
+%patch4 -p1
+%endif
+
sed -i 's/\r$//' %{name}.desktop
sed -i 's/\r$//' steam_install_agreement.txt
@@ -130,6 +337,12 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
install -D -m 644 -p %{SOURCE3} \
%{buildroot}%{_prefix}/lib/firewalld/services/steam.xml
+%if !0%{?rhel}
+# Steam no-runtime package
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+install -pm 644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d
+%endif
+
%if 0%{?fedora} >= 25
# Install AppData
mkdir -p %{buildroot}%{_datadir}/appdata
@@ -172,7 +385,17 @@ fi
%{_prefix}/lib/firewalld/services/%{name}.xml
%{_udevrulesdir}/*
+%if !0%{?rhel}
+%files noruntime
+%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*sh
+%endif
+
%changelog
+* Sun Jan 22 2017 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.54-4
+- Fix Source URL for post kernel 4.9 udev rules.
+- Reintroduce optional and not endorsed by Valve noruntime subpackage for using
+ all system libraries in place of all the Ubuntu runtime ones.
+
* Sun Jan 08 2017 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.54-3
- Microsoft keyboards have been fixed in kernel 4.9 and backported to other
kernels.
7 years, 10 months
[steam/el7] Fix Source URL for post kernel 4.9 udev rules
by Simone Caronni
commit 8670adc712760589fa48bd671308e70a61f08baf
Author: Simone Caronni <negativo17(a)gmail.com>
Date: Sun Jan 22 18:12:38 2017 +0100
Fix Source URL for post kernel 4.9 udev rules
Reintroduce optional and not endorsed by Valve noruntime subpackage for using all system libraries in place of all the Ubuntu runtime ones
steam-disable-runtime.patch | 45 +++++++++
steam.csh | 5 +
steam.sh | 2 +
steam.spec | 227 +++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 277 insertions(+), 2 deletions(-)
---
diff --git a/steam-disable-runtime.patch b/steam-disable-runtime.patch
new file mode 100644
index 0000000..5babb06
--- /dev/null
+++ b/steam-disable-runtime.patch
@@ -0,0 +1,45 @@
+diff -Naur steam.old/steam steam/steam
+--- steam.old/steam 2016-12-13 12:22:54.116699983 +0100
++++ steam/steam 2016-12-13 12:23:02.042856003 +0100
+@@ -189,6 +189,33 @@
+ # go to the install directory and run the client
+ cp "$LAUNCHSTEAMBOOTSTRAPFILE" "$LAUNCHSTEAMDIR/bootstrap.tar.xz"
+ cd "$LAUNCHSTEAMDIR"
++
++if [ "$STEAM_RUNTIME" == "0" ]; then
++
++ if [ ! -h $LAUNCHSTEAMPLATFORM/libudev.so.0 ] || [ ! -h $LAUNCHSTEAMPLATFORM/libbz2.so.1.0 ]; then
++ ln -sf /usr/lib/libudev.so.1 $LAUNCHSTEAMPLATFORM/libudev.so.0
++ ln -sf /usr/lib/libbz2.so.1 $LAUNCHSTEAMPLATFORM/libbz2.so.1.0
++ fi
++
++ rm -fr $LAUNCHSTEAMPLATFORM/steam-runtime
++
++ # Workaround for bug 3697: https://github.com/ValveSoftware/steam-for-linux/issues/3697
++ LD_LIBRARY_PATH="${LD_LIBRARY_PATH-}"
++
++else
++
++ if [ -h $LAUNCHSTEAMPLATFORM/libudev.so.0 ] || [ ! -h $LAUNCHSTEAMPLATFORM/libbz2.so.1.0 ]; then
++ rm -f $LAUNCHSTEAMPLATFORM/libudev.so.0
++ rm -f $LAUNCHSTEAMPLATFORM/libbz2.so.1.0
++ fi
++
++ # Workaround for bug 3273: https://github.com/ValveSoftware/steam-for-linux/issues/3273
++ rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6*
++ rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6*
++
++fi
++
++
+ if [ "`command -v tee`" != "" ]; then
+ mkdir -p --mode=777 /tmp/dumps
+ if [[ -f "/tmp/dumps/${USER}_stdout.txt" ]]; then
+@@ -201,7 +228,3 @@
+
+ # Workaround for bug 3570: https://github.com/ValveSoftware/steam-for-linux/issues/3570
+ rm -f /tmp/steam_chrome_shmem
+-
+-# Workaround for bug 3273: https://github.com/ValveSoftware/steam-for-linux/issues/3273
+-rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6*
+-rm -f $LAUNCHSTEAMPLATFORM/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6*
diff --git a/steam.csh b/steam.csh
new file mode 100644
index 0000000..76e2c24
--- /dev/null
+++ b/steam.csh
@@ -0,0 +1,5 @@
+# Disable Ubuntu 32 bit runtime
+if ( -x /usr/bin/steam ) then
+ setenv STEAM_RUNTIME "0"
+endif
+
diff --git a/steam.sh b/steam.sh
new file mode 100644
index 0000000..4576810
--- /dev/null
+++ b/steam.sh
@@ -0,0 +1,2 @@
+# Disable Ubuntu 32 bit runtime
+[ -x /usr/bin/steam ] && export STEAM_RUNTIME=0
diff --git a/steam.spec b/steam.spec
index cdf4d44..e365dd7 100644
--- a/steam.spec
+++ b/steam.spec
@@ -6,7 +6,7 @@
Name: steam
Version: 1.0.0.54
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Installer for the Steam software distribution service
# Redistribution and repackaging for Linux is allowed, see license file
License: Steam License Agreement
@@ -14,6 +14,8 @@ URL: http://www.steampowered.com/
ExclusiveArch: i686
Source0: http://repo.steampowered.com/steam/pool/%{name}/s/%{name}/%{name}_%{versi...
+Source1: %{name}.sh
+Source2: %{name}.csh
Source3: %{name}.xml
Source4: %{name}.appdata.xml
@@ -25,7 +27,7 @@ Source4: %{name}.appdata.xml
#
# Microsoft patch accepted upstream, remove Microsoft entries when kernel
# is at 4.9: https://bugzilla.redhat.com/show_bug.cgi?id=1325354#c14
-Source8: https://raw.githubusercontent.com/denilsonsa/udev-joystick-blacklist/mast...
+Source8: https://raw.githubusercontent.com/denilsonsa/udev-joystick-blacklist/mast...
Source9: https://raw.githubusercontent.com/cyndis/shield-controller-config/master/...
Source10: README.Fedora
@@ -46,6 +48,12 @@ Patch2: %{name}-controller-gamepad-emulation.patch
# Make "X" window button close the program instead of minimizing like "_"
Patch3: %{name}-3210.patch
+# Do not remove libstdc++ from runtime on systems where mesa is compiled with
+# a statically linked libstdc++ (Fedora 22+) and enable option to run without
+# Ubuntu runtime:
+# https://github.com/ValveSoftware/steam-for-linux/issues/3697
+Patch4: %{name}-disable-runtime.patch
+
BuildRequires: desktop-file-utils
BuildRequires: systemd
@@ -100,6 +108,200 @@ Steam is a software distribution service with an online store, automated
installation, automatic updates, achievements, SteamCloud synchronized
savegame and screenshot functionality, and many social features.
+%if !0%{?rhel}
+%package noruntime
+Summary: Use system libraries instead of the Steam Runtime
+Requires: steam = %{version}-%{release}
+Buildarch: noarch
+
+# After the Steam client has been downloaded once, run the following command and
+# then adjust the list of requirements to remove dependencies pulled in by other
+# packages.
+
+# cd ~/.local/share/Steam/ubuntu12_32/
+# for i in `ldd *.so | egrep -v "linux-gate.so|ld-linux.so" | awk '{print $1}'` `find steam-runtime/i386 -name "*.so*" -exec basename {} \;`; do
+# dnf repoquery -q --qf="Requires: %{name}" --whatprovides "$i"
+# done | sort | uniq | sed 's/$/%{?_isa}/g'
+
+# Then remove compiz and emerald.
+
+Requires: alsa-lib%{?_isa}
+Requires: alsa-plugins-arcamav%{?_isa}
+Requires: alsa-plugins-jack%{?_isa}
+Requires: alsa-plugins-oss%{?_isa}
+Requires: alsa-plugins-pulseaudio%{?_isa}
+Requires: alsa-plugins-samplerate%{?_isa}
+Requires: alsa-plugins-speex%{?_isa}
+Requires: alsa-plugins-upmix%{?_isa}
+Requires: alsa-plugins-usbstream%{?_isa}
+Requires: alsa-plugins-vdownmix%{?_isa}
+Requires: atk%{?_isa}
+Requires: avahi-libs%{?_isa}
+Requires: bzip2-libs%{?_isa}
+Requires: cairo%{?_isa}
+Requires: compat-libgcrypt%{?_isa}
+Requires: cups-libs%{?_isa}
+Requires: dbus-glib%{?_isa}
+Requires: dbus-libs%{?_isa}
+Requires: dconf%{?_isa}
+Requires: elfutils-libelf%{?_isa}
+Requires: elfutils-libs%{?_isa}
+Requires: expat%{?_isa}
+Requires: ffmpeg-libs%{?_isa}
+Requires: flac-libs%{?_isa}
+Requires: fontconfig%{?_isa}
+Requires: freeglut%{?_isa}
+Requires: freetype%{?_isa}
+Requires: GConf2%{?_isa}
+Requires: gdk-pixbuf2%{?_isa}
+Requires: glib2%{?_isa}
+Requires: glibc%{?_isa}
+Requires: gmp%{?_isa}
+Requires: gnutls%{?_isa}
+Requires: graphite2%{?_isa}
+Requires: gsm%{?_isa}
+Requires: gstreamer%{?_isa}
+Requires: gstreamer1%{?_isa}
+Requires: gstreamer-devel%{?_isa}
+Requires: gstreamer-plugins-base%{?_isa}
+Requires: gtk2%{?_isa}
+Requires: gtk2-engines%{?_isa}
+Requires: gtk3%{?_isa}
+Requires: gtk-murrine-engine%{?_isa}
+Requires: harfbuzz%{?_isa}
+Requires: heimdal-libs%{?_isa}
+Requires: jack-audio-connection-kit%{?_isa}
+Requires: json-c%{?_isa}
+Requires: keyutils-libs%{?_isa}
+Requires: krb5-libs%{?_isa}
+Requires: lcms2%{?_isa}
+Requires: libacl%{?_isa}
+Requires: libappindicator%{?_isa}
+Requires: libasyncns%{?_isa}
+Requires: libattr%{?_isa}
+Requires: libcanberra%{?_isa}
+Requires: libcanberra-gtk2%{?_isa}
+Requires: libcap%{?_isa}
+Requires: libcom_err%{?_isa}
+Requires: libcurl%{?_isa}
+Requires: libdbusmenu%{?_isa}
+Requires: libdbusmenu-gtk2%{?_isa}
+Requires: libdrm%{?_isa}
+Requires: libexif%{?_isa}
+Requires: libffi%{?_isa}
+Requires: libgcc%{?_isa}
+Requires: libgcrypt%{?_isa}
+Requires: libGLEW%{?_isa}
+Requires: libgomp%{?_isa}
+Requires: libgpg-error%{?_isa}
+Requires: libICE%{?_isa}
+Requires: libidn%{?_isa}
+Requires: libindicator%{?_isa}
+Requires: libjpeg-turbo%{?_isa}
+Requires: libnotify%{?_isa}
+Requires: libogg%{?_isa}
+Requires: libpng%{?_isa}
+Requires: libpng12%{?_isa}
+Requires: libsamplerate%{?_isa}
+Requires: libselinux%{?_isa}
+Requires: libSM%{?_isa}
+Requires: libsndfile%{?_isa}
+Requires: libstdc++%{?_isa}
+Requires: libtasn1%{?_isa}
+Requires: libtdb%{?_isa}
+Requires: libtheora%{?_isa}
+Requires: libtool-ltdl%{?_isa}
+Requires: libusbx%{?_isa}
+Requires: libuuid%{?_isa}
+Requires: libva%{?_isa}
+Requires: libvdpau%{?_isa}
+Requires: libvorbis%{?_isa}
+Requires: libvpx%{?_isa}
+Requires: libwayland-client%{?_isa}
+Requires: libwayland-server%{?_isa}
+Requires: libX11%{?_isa}
+Requires: libXau%{?_isa}
+Requires: libXaw%{?_isa}
+Requires: libxcb%{?_isa}
+Requires: libXcomposite%{?_isa}
+Requires: libXcursor%{?_isa}
+Requires: libXdamage%{?_isa}
+Requires: libXdmcp%{?_isa}
+Requires: libXext%{?_isa}
+Requires: libXfixes%{?_isa}
+Requires: libXft%{?_isa}
+Requires: libXi%{?_isa}
+Requires: libXinerama%{?_isa}
+Requires: libxml2%{?_isa}
+Requires: libXmu%{?_isa}
+Requires: libXpm%{?_isa}
+Requires: libXrandr%{?_isa}
+Requires: libXrender%{?_isa}
+Requires: libXScrnSaver%{?_isa}
+Requires: libxshmfence%{?_isa}
+Requires: libXt%{?_isa}
+Requires: libXtst%{?_isa}
+Requires: libXxf86vm%{?_isa}
+Requires: mesa-libEGL%{?_isa}
+Requires: mesa-libgbm%{?_isa}
+Requires: mesa-libGL%{?_isa}
+Requires: mesa-libglapi%{?_isa}
+Requires: mesa-libGLU%{?_isa}
+Requires: ncurses-libs%{?_isa}
+Requires: nettle%{?_isa}
+Requires: NetworkManager-glib%{?_isa}
+Requires: nspr%{?_isa}
+Requires: nss%{?_isa}
+Requires: nss-softokn%{?_isa}
+Requires: nss-softokn-freebl%{?_isa}
+Requires: nss-util%{?_isa}
+Requires: openal-soft%{?_isa}
+Requires: openldap%{?_isa}
+Requires: openssl-libs%{?_isa}
+Requires: orc%{?_isa}
+Requires: p11-kit%{?_isa}
+Requires: pango%{?_isa}
+Requires: pangox-compat%{?_isa}
+Requires: pciutils-libs%{?_isa}
+Requires: pcre%{?_isa}
+Requires: pixman%{?_isa}
+Requires: pulseaudio-libs%{?_isa}
+Requires: SDL%{?_isa}
+Requires: SDL2%{?_isa}
+Requires: SDL2_image%{?_isa}
+Requires: SDL2_mixer%{?_isa}
+Requires: SDL2_net%{?_isa}
+Requires: SDL2_ttf%{?_isa}
+Requires: SDL_image%{?_isa}
+Requires: SDL_mixer%{?_isa}
+Requires: SDL_ttf%{?_isa}
+Requires: speex%{?_isa}
+Requires: speexdsp%{?_isa}
+Requires: sqlite%{?_isa}
+Requires: systemd-libs%{?_isa}
+Requires: tbb%{?_isa}
+Requires: tcp_wrappers-libs%{?_isa}
+Requires: xz-libs%{?_isa}
+Requires: zlib%{?_isa}
+
+%if 0%{?fedora} >= 23
+Requires: libgudev%{?_isa}
+Requires: trousers-lib%{?_isa}
+%else
+Requires: libgudev1%{?_isa}
+Requires: trousers%{?_isa}
+%endif
+
+%description noruntime
+The Steam client normally uses a set of libraries derived from Ubuntu (the Steam
+Runtime); and all titles on Steam are compiled against those libraries.
+
+This package takes care of installing all the requirements to use system
+libraries in place of the Steam Runtime and a profile environment file to enable
+it. Please note that this is not a supported Valve configuration and it may lead
+to unexpected results.
+%endif
+
%prep
%setup -q -n %{name}
%patch0 -p1
@@ -107,6 +309,11 @@ savegame and screenshot functionality, and many social features.
%patch2 -p1
%patch3 -p1
+%if !0%{?rhel}
+# Steam no-runtime package
+%patch4 -p1
+%endif
+
sed -i 's/\r$//' %{name}.desktop
sed -i 's/\r$//' steam_install_agreement.txt
@@ -130,6 +337,12 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
install -D -m 644 -p %{SOURCE3} \
%{buildroot}%{_prefix}/lib/firewalld/services/steam.xml
+%if !0%{?rhel}
+# Steam no-runtime package
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+install -pm 644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d
+%endif
+
%if 0%{?fedora} >= 25
# Install AppData
mkdir -p %{buildroot}%{_datadir}/appdata
@@ -172,7 +385,17 @@ fi
%{_prefix}/lib/firewalld/services/%{name}.xml
%{_udevrulesdir}/*
+%if !0%{?rhel}
+%files noruntime
+%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*sh
+%endif
+
%changelog
+* Sun Jan 22 2017 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.54-4
+- Fix Source URL for post kernel 4.9 udev rules.
+- Reintroduce optional and not endorsed by Valve noruntime subpackage for using
+ all system libraries in place of all the Ubuntu runtime ones.
+
* Sun Jan 08 2017 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.54-3
- Microsoft keyboards have been fixed in kernel 4.9 and backported to other
kernels.
7 years, 10 months
[mythtv] Update to latest fixes/0.28 from git. Remove SysV conditionals as EL 7 has systemd and EL 6 is not s
by Richard Shaw
commit 2ca749e22a3069ae23ce50cd6855c871240a40a7
Author: Richard Shaw <hobbes1069(a)gmail.com>
Date: Sun Jan 22 10:19:15 2017 -0600
Update to latest fixes/0.28 from git.
Remove SysV conditionals as EL 7 has systemd and EL 6 is not supported.
Update default permissions for /etc/mythtv and move user/group creation
to the common package, fixes RFBZ#4414.
Change some dependencies from Requires to Recommends, fixes RFBZ#4415.
ChangeLog | 99 +++++++
mythtv-0.28-fixes.patch | 679 +++++++++++++++++++++++++++++++++++++++++++++++-
mythtv.spec | 105 ++------
3 files changed, 788 insertions(+), 95 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index dba2569..e82f7f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,102 @@
+commit 3930f5d13a7e0a4b6328a1b3032374752dfacbe4
+Author: Paul Harrison <pharrison(a)mythtv.org>
+Date: Thu Dec 29 12:38:49 2016 +0000
+
+ MythMusic: increase the probe buffer size to 128K
+
+ There is a increasing trend to put the cover art images into an MJPEG video
+ stream which was sometimes causing the probing of some files to fail because
+ the buffer didn't contain enough data to determine the available streams.
+
+ Fixes #12906.
+
+ (cherry picked from commit e8d36304610f79ab6ec6042d0a251db83586f08f)
+
+commit adf730061311ef0e6a4763cfe3d204fb89e79351
+Author: Ian Campbell <ijc(a)hellion.org.uk>
+Date: Thu Dec 29 11:41:44 2016 +0000
+
+ musicscanner: Compare music_directory.path as binary
+
+ SQL string comparisons are case insensitive by default (who knew!), meaning
+ that a music rescan will not pickup a renamed directory if it differs only in
+ the case.
+
+ Use BINARY rather than arranging for a case-sensitive comparison because the
+ latter still considers 'a' and 'á' equal but for paths we need literal binary
+ sameness.
+
+ Apply the same logic to music_songs.filename, although I've not tripped over a
+ related issue there.
+
+ Fixes #12949.
+
+ Signed-off-by: Paul Harrison <pharrison(a)mythtv.org>
+ (cherry picked from commit 258ba1fc3e6ab39c93450f276406671599f63a5d)
+
+commit 9befb426e7d92b107453736e6f000610b3381e5a
+Author: Robert Watson <robertabcdefgwatson(a)gmail.com>
+Date: Tue Dec 20 11:33:10 2016 -0700
+
+ Fix displaying of input connection display name on 'C' or 'Y'. Video
+ output needs to be active before the OSD message can be set.
+
+ Signed-off-by: John Poet <jpoet(a)mythtv.org>
+ (cherry picked from commit f2eac57151f7e56b6a8087439f66ef10353c78f2)
+
+commit 2c5df31214a050d7247a93b39defd70d84a3a8d7
+Author: John Poet <jpoet(a)mythtv.org>
+Date: Sun Sep 4 13:02:36 2016 -0600
+
+ Stop mythfilldatabase from creating duplicate channels just because they are
+ marked as invisible.
+
+ (cherry picked from commit 83fec2bb4c0447c81f74621e7510d56e4231f599)
+
+commit 2d6466f1aa08c29531f27edd61963d5180186a96
+Author: Bradley Baetz <bbaetz(a)gmail.com>
+Date: Mon Dec 5 10:40:40 2016 +0000
+
+ Fixes #12754 - Fix deadlock in libcec initialization.
+
+ Configuring the TV at startup is done from the main thread. However, when the
+ TV state changes as a result of this, libCEC sends a message to the callback
+ handler on its own thread, which tries to get the UI lock to reset the
+ screensaver state. This results in a deadlock because the main thread already
+ has the UI lock during startup time.
+
+ Instead, run the initial setup activity at the start of the CEC handler thread.
+
+ This was missed in the patch applied for #11986.
+
+ Signed-off-by: Stuart Auchterlonie <stuarta(a)mythtv.org>
+ (cherry picked from commit 22ff48d7bafc622246141094b727dab47662bc3f)
+
+commit 128e29782fa3f397bb7b54d260be4b85606bcdeb
+Author: Guenter Kukkukk <linux(a)kukkukk.com>
+Date: Thu Dec 1 11:11:50 2016 +0000
+
+ Fixes #12945 - Add HEVC to the mpegts parser.
+
+ Enables use of DVB-T2 broadcasts in Germany.
+
+ Signed-off-by: Stuart Auchterlonie <stuarta(a)mythtv.org>
+ (cherry picked from commit 07c59e7d962c9e046c0960ae42d2a1d38d5508b3)
+
+commit 0890206d9d303db7f10829b7d9bf574e091e70fc
+Author: BlackEagle <ike.devolder(a)gmail.com>
+Date: Sat Nov 26 23:23:13 2016 +0100
+
+ Fixes #12939 - add compatibility for libcec4
+
+ added updates to the libcec4 interface, so mythtv can be compiled
+ against it. Some parts might need some cleaning.
+
+ Signed-off-by: BlackEagle <ike.devolder(a)gmail.com>
+ (cherry picked from commit f6144655200bf2927da69186c2f22040446e7bb2)
+ Signed-off-by: Stuart Auchterlonie <stuarta(a)mythtv.org>
+ (cherry picked from commit 65f16a504687f3ee7a42abc292f1d3e05aee71d7)
+
commit e9d0543d64fc21072fb1a0199ac2e24334169461
Author: Karl Dietz <dekarl(a)mythtv.org>
Date: Wed Oct 19 12:50:26 2016 +0200
diff --git a/mythtv-0.28-fixes.patch b/mythtv-0.28-fixes.patch
index 32f1662..e95238b 100644
--- a/mythtv-0.28-fixes.patch
+++ b/mythtv-0.28-fixes.patch
@@ -1,12 +1,14 @@
README.rst | 4 +-
mythplugins/mythgallery/mythgallery/main.cpp | 21 +-
mythplugins/mythmusic/mythmusic/main.cpp | 14 +-
+ .../mythmusic/mythmusic/remoteavformatcontext.h | 2 +-
mythplugins/mythnews/mythnews/mythnews.cpp | 22 +-
.../mythzoneminder/mythzmserver/zmserver.cpp | 20 +-
mythtv/README | 12 +-
mythtv/bindings/python/MythTV/dataheap.py | 1 +
.../python/MythTV/wikiscripts/wikiscripts.py | 4 +-
mythtv/configure | 34 +-
+ mythtv/external/FFmpeg/libavformat/mpegts-mythtv.c | 1 +
mythtv/html/css/Status.css | 13 +
mythtv/html/menu.qsp | 10 +-
mythtv/i18n/mythfrontend_cs.qm | Bin 599995 -> 726083 bytes
@@ -24,6 +26,7 @@
mythtv/libs/libmythbase/mythstorage.cpp | 4 +-
mythtv/libs/libmythbase/mythversion.h | 2 +-
mythtv/libs/libmythmetadata/imagemanager.cpp | 2 +-
+ mythtv/libs/libmythmetadata/musicfilescanner.cpp | 4 +-
.../services/captureServices.h | 1 -
.../services/channelServices.h | 1 -
.../services/contentServices.h | 9 +-
@@ -64,7 +67,7 @@
mythtv/libs/libmythtv/ringbuffer.cpp | 8 +-
.../test/test_eitfixups/test_eitfixups.cpp | 28 +
.../test/test_iptvrecorder/test_iptvrecorder.h | 5 +
- mythtv/libs/libmythtv/tv_play.cpp | 4 +-
+ mythtv/libs/libmythtv/tv_play.cpp | 6 +-
mythtv/libs/libmythtv/tv_rec.cpp | 20 +-
mythtv/libs/libmythtv/videodisplayprofile.cpp | 33 +-
mythtv/libs/libmythtv/videodisplayprofile.h | 2 +-
@@ -78,7 +81,7 @@
mythtv/libs/libmythtv/videosource.cpp | 35 +
mythtv/libs/libmythtv/videosource.h | 5 +
.../visualisations/videovisualcircles.cpp | 2 +-
- mythtv/libs/libmythui/cecadapter.cpp | 41 +-
+ mythtv/libs/libmythui/cecadapter.cpp | 498 +-
mythtv/libs/libmythui/libmythui.pro | 4 +-
mythtv/libs/libmythui/mythdialogbox.cpp | 10 +
mythtv/libs/libmythui/mythmainwindow.cpp | 7 +
@@ -112,6 +115,7 @@
.../programs/mythbackend/services/serviceUtil.cpp | 22 +
mythtv/programs/mythbackend/services/serviceUtil.h | 3 +
mythtv/programs/mythbackend/services/video.cpp | 3 +-
+ mythtv/programs/mythfilldatabase/channeldata.cpp | 8 +-
mythtv/programs/mythfilldatabase/xmltvparser.cpp | 3 +-
mythtv/programs/mythfrontend/galleryconfig.cpp | 13 +-
mythtv/programs/mythfrontend/galleryconfig.h | 10 +-
@@ -131,7 +135,7 @@
mythtv/programs/mythtv-setup/importicons.cpp | 6 +-
mythtv/programs/mythtv-setup/mythtv-setup.pro | 12 +
mythtv/programs/mythwelcome/mythwelcome.pro | 11 +
- 133 files changed, 32178 insertions(+), 19869 deletions(-)
+ 137 files changed, 32635 insertions(+), 19886 deletions(-)
diff --git a/README.rst b/README.rst
index 8b8014d..ec3fa1f 100644
@@ -229,6 +233,19 @@ index 0460f0c..ec54f5d 100644
}
int mythplugin_init(const char *libversion)
+diff --git a/mythplugins/mythmusic/mythmusic/remoteavformatcontext.h b/mythplugins/mythmusic/mythmusic/remoteavformatcontext.h
+index 106a8e8..ecb8a9d 100644
+--- a/mythplugins/mythmusic/mythmusic/remoteavformatcontext.h
++++ b/mythplugins/mythmusic/mythmusic/remoteavformatcontext.h
+@@ -53,7 +53,7 @@ class RemoteAVFormatContext
+ if (!m_rf->isOpen())
+ return false;
+
+- const int BUFFER_SIZE = 0x10000;
++ const int BUFFER_SIZE = 0x20000;
+ if (!m_buffer)
+ {
+ m_buffer = (unsigned char*)av_malloc(BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE);
diff --git a/mythplugins/mythnews/mythnews/mythnews.cpp b/mythplugins/mythnews/mythnews/mythnews.cpp
index 15ec5e3..7ec45bc 100644
--- a/mythplugins/mythnews/mythnews/mythnews.cpp
@@ -492,6 +509,18 @@ index 17d42d6..af0d6a6 100755
if test x"$target_os" = x"darwin" ; then
echo "VDA support ${vda-no}"
fi
+diff --git a/mythtv/external/FFmpeg/libavformat/mpegts-mythtv.c b/mythtv/external/FFmpeg/libavformat/mpegts-mythtv.c
+index 2bbf89a..b62a923 100644
+--- a/mythtv/external/FFmpeg/libavformat/mpegts-mythtv.c
++++ b/mythtv/external/FFmpeg/libavformat/mpegts-mythtv.c
+@@ -717,6 +717,7 @@ static const StreamType ISO_types[] = {
+ { 0x10, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_MPEG4 },
+ { 0x11, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC_LATM }, /* LATM syntax */
+ { 0x1b, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 },
++ { 0x24, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_HEVC },
+ { 0xd1, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_DIRAC },
+ { 0xea, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_VC1 },
+ { 0 },
diff --git a/mythtv/html/css/Status.css b/mythtv/html/css/Status.css
index 43ede02..a50fca0 100644
--- a/mythtv/html/css/Status.css
@@ -62557,6 +62586,28 @@ index a9c802f..e0e72d9 100644
}
+diff --git a/mythtv/libs/libmythmetadata/musicfilescanner.cpp b/mythtv/libs/libmythmetadata/musicfilescanner.cpp
+index 4b333d5..c47d999 100644
+--- a/mythtv/libs/libmythmetadata/musicfilescanner.cpp
++++ b/mythtv/libs/libmythmetadata/musicfilescanner.cpp
+@@ -195,7 +195,7 @@ int MusicFileScanner::GetDirectoryId(const QString &directory, const int &parent
+
+ // Load the directory id or insert it and get the id
+ query.prepare("SELECT directory_id FROM music_directories "
+- "WHERE path = :DIRECTORY ;");
++ "WHERE path = BINARY :DIRECTORY ;");
+ query.bindValue(":DIRECTORY", directory);
+
+ if (!query.exec())
+@@ -785,7 +785,7 @@ void MusicFileScanner::ScanMusic(MusicLoadedMap &music_files)
+ query.prepare("SELECT CONCAT_WS('/', path, filename), date_modified "
+ "FROM music_songs LEFT JOIN music_directories ON "
+ "music_songs.directory_id=music_directories.directory_id "
+- "WHERE filename NOT LIKE ('%://%') "
++ "WHERE filename NOT LIKE BINARY ('%://%') "
+ "AND hostname = :HOSTNAME");
+
+ query.bindValue(":HOSTNAME", gCoreContext->GetHostName());
diff --git a/mythtv/libs/libmythservicecontracts/services/captureServices.h b/mythtv/libs/libmythservicecontracts/services/captureServices.h
index e68ed2e..6779278 100644
--- a/mythtv/libs/libmythservicecontracts/services/captureServices.h
@@ -64241,9 +64292,19 @@ index c2bd423..c3d8709 100644
diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
-index 9b9511b..f397506 100644
+index 9b9511b..d6367a6 100644
--- a/mythtv/libs/libmythtv/tv_play.cpp
+++ b/mythtv/libs/libmythtv/tv_play.cpp
+@@ -7397,8 +7397,8 @@ void TV::SwitchInputs(PlayerContext *ctx,
+ delete testrec;
+ }
+
+- UpdateOSDInput(ctx);
+ UnpauseLiveTV(ctx);
++ UpdateOSDInput(ctx);
+
+ ITVRestart(ctx, true);
+ }
@@ -7870,8 +7870,7 @@ void TV::ChangeChannel(PlayerContext *ctx, uint chanid, const QString &chan)
if (ctx->prevChan.empty())
ctx->PushPreviousChannel();
@@ -64999,10 +65060,69 @@ index 1140372..e9cbf8f 100644
{
pen.setWidth((int)mag);
diff --git a/mythtv/libs/libmythui/cecadapter.cpp b/mythtv/libs/libmythui/cecadapter.cpp
-index 00a8c73..a761e32 100644
+index 00a8c73..ba63c49 100644
--- a/mythtv/libs/libmythui/cecadapter.cpp
+++ b/mythtv/libs/libmythui/cecadapter.cpp
-@@ -126,6 +126,9 @@ class CECAdapterPriv
+@@ -33,17 +33,31 @@ QWaitCondition* CECAdapter::gActionsReady = new QWaitCondition();
+ // libcec1's callback parameters are pass-by-ref
+ #define CEC_CALLBACK_PARAM_TYPE &
+ #else
+-// libcec2's callback parameters are pass-by-value
++#if CEC_LIB_VERSION_MAJOR <= 3
++// libcec2 and 3 callback parameters are pass-by-value
+ #define CEC_CALLBACK_PARAM_TYPE
+ #endif
++#endif
+
+ // The libCEC callback functions
++#if CEC_LIB_VERSION_MAJOR <= 3
+ static int CECLogMessageCallback(void *adapter, const cec_log_message CEC_CALLBACK_PARAM_TYPE message);
+ static int CECKeyPressCallback(void *adapter, const cec_keypress CEC_CALLBACK_PARAM_TYPE keypress);
+ static int CECCommandCallback(void *adapter, const cec_command CEC_CALLBACK_PARAM_TYPE command);
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++static void CECLogMessageCallback(void *adapter, const cec_log_message* message);
++static void CECKeyPressCallback(void *adapter, const cec_keypress* keypress);
++static void CECCommandCallback(void *adapter, const cec_command* command);
++#endif
+
+ #if CEC_LIB_VERSION_MAJOR >= 2
++#if CEC_LIB_VERSION_MAJOR <= 3
+ static int CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter CEC_CALLBACK_PARAM_TYPE data);
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++static void CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter data);
++#endif
+ static void CECSourceActivatedCallback(void *adapter, const cec_logical_address address, const uint8_t activated);
+ #endif
+
+@@ -107,13 +121,24 @@ class CECAdapterPriv
+ }
+
+ // Set up the callbacks
++#if CEC_LIB_VERSION_MAJOR <= 3
+ callbacks.CBCecLogMessage = &CECLogMessageCallback;
+ callbacks.CBCecKeyPress = &CECKeyPressCallback;
+ callbacks.CBCecCommand = &CECCommandCallback;
+-#if CEC_LIB_VERSION_MAJOR >= 2
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++ callbacks.logMessage = &CECLogMessageCallback;
++ callbacks.keyPress = &CECKeyPressCallback;
++ callbacks.commandReceived = &CECCommandCallback;
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 2 && CEC_LIB_VERSION_MAJOR <= 3
+ callbacks.CBCecAlert = &CECAlertCallback;
+ callbacks.CBCecSourceActivated = &CECSourceActivatedCallback;
+ #endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++ callbacks.alert = &CECAlertCallback;
++ callbacks.sourceActivated = &CECSourceActivatedCallback;
++#endif
+ configuration.callbackParam = this;
+ configuration.callbacks = &callbacks;
+
+@@ -126,9 +151,17 @@ class CECAdapterPriv
return false;
}
@@ -65010,9 +65130,97 @@ index 00a8c73..a761e32 100644
+ adapter->InitVideoStandalone();
+
// find adapters
++#if CEC_LIB_VERSION_MAJOR >= 4
++ cec_adapter_descriptor *devices = new cec_adapter_descriptor[MAX_CEC_DEVICES];
++ uint8_t num_devices = adapter->DetectAdapters(devices, MAX_CEC_DEVICES, NULL, true);
++#else
cec_adapter *devices = new cec_adapter[MAX_CEC_DEVICES];
uint8_t num_devices = adapter->FindAdapters(devices, MAX_CEC_DEVICES, NULL);
-@@ -231,7 +234,16 @@ class CECAdapterPriv
++#endif
+ if (num_devices < 1)
+ {
+ LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to find any CEC devices.");
+@@ -143,22 +176,37 @@ class CECAdapterPriv
+ .arg(num_devices));
+ for (uint8_t i = 0; i < num_devices; i++)
+ {
++#if CEC_LIB_VERSION_MAJOR >= 4
++ QString comm = QString::fromLatin1(devices[i].strComName);
++ QString path = QString::fromLatin1(devices[i].strComPath);
++#else
+ QString comm = QString::fromLatin1(devices[i].comm);
++ QString path = QString::fromLatin1(devices[i].path);
++#endif
+ bool match = find ? (comm == defaultDevice) : (i == 0);
+ devicenum = match ? i : devicenum;
+ LOG(VB_GENERAL, LOG_INFO, LOC +
+ QString("Device %1: path '%2' com port '%3' %4").arg(i + 1)
+- .arg(QString::fromLatin1(devices[i].path)).arg(comm)
++ .arg(path).arg(comm)
+ .arg(match ? "SELECTED" : ""));
+ }
+
+ // open adapter
+- QString path = QString::fromLatin1(devices[devicenum].path);
++#if CEC_LIB_VERSION_MAJOR >= 4
++ QString comm = QString::fromLatin1(devices[devicenum].strComName);
++ QString path = QString::fromLatin1(devices[devicenum].strComPath);
++#else
+ QString comm = QString::fromLatin1(devices[devicenum].comm);
++ QString path = QString::fromLatin1(devices[devicenum].path);
++#endif
+ LOG(VB_GENERAL, LOG_INFO, LOC + QString("Trying to open device %1 (%2).")
+ .arg(path).arg(comm));
+
++#if CEC_LIB_VERSION_MAJOR >= 4
++ if (!adapter->Open(devices[devicenum].strComName))
++#else
+ if (!adapter->Open(devices[devicenum].comm))
++#endif
+ {
+ LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to open device.");
+ return false;
+@@ -166,16 +214,14 @@ class CECAdapterPriv
+
+ LOG(VB_GENERAL, LOG_INFO, LOC + "Opened CEC device.");
+
+- // all good to go
+- valid = true;
+-
+ // turn on tv (if configured)
+ powerOnTV = powerOnTVOnStart;
+
+ // switch input (if configured)
+ switchInput = true;
+
+- HandleActions();
++ // all good to go
++ valid = true;
+
+ return true;
+ }
+@@ -213,6 +259,20 @@ class CECAdapterPriv
+ return 1;
+ }
+
++ void LogMessage(const cec_log_message* message)
++ {
++ QString msg(message->message);
++ int lvl = LOG_UNKNOWN;
++ switch (message->level)
++ {
++ case CEC_LOG_ERROR: lvl = LOG_ERR; break;
++ case CEC_LOG_WARNING: lvl = LOG_WARNING; break;
++ case CEC_LOG_NOTICE: lvl = LOG_INFO; break;
++ case CEC_LOG_DEBUG: lvl = LOG_DEBUG; break;
++ }
++ LOG(VB_GENERAL, lvl, LOC + QString("%1").arg(msg));
++ }
++
+ // NOTE - libcec2 changes the callbacks
+ // to be pass-by-value.
+ // For simplicity, this function remains as pass-by-ref
+@@ -231,7 +291,16 @@ class CECAdapterPriv
switch (command.opcode)
{
@@ -65030,7 +65238,37 @@ index 00a8c73..a761e32 100644
default:
break;
}
-@@ -252,6 +264,7 @@ class CECAdapterPriv
+@@ -241,6 +310,29 @@ class CECAdapterPriv
+ return 1;
+ }
+
++ void HandleCommand(const cec_command* command)
++ {
++ if (!adapter || !valid)
++ return;
++
++ LOG(VB_GENERAL, LOG_DEBUG, LOC +
++ QString("Command %1 from '%2' (%3) - destination '%4' (%5)")
++ .arg(command->opcode)
++ .arg(adapter->ToString(command->initiator))
++ .arg(command->initiator)
++ .arg(adapter->ToString(command->destination))
++ .arg(command->destination));
++
++ switch (command->opcode)
++ {
++ // TODO
++ default:
++ break;
++ }
++ gCoreContext->SendSystemEvent(QString("CEC_COMMAND_RECEIVED COMMAND %1")
++ .arg(command->opcode));
++ }
++
+ int HandleKeyPress(const cec_keypress &key)
+ {
+ if (!adapter || !valid)
+@@ -252,6 +344,7 @@ class CECAdapterPriv
QString code;
int action = 0;
@@ -65038,7 +65276,7 @@ index 00a8c73..a761e32 100644
switch (key.keycode)
{
case CEC_USER_CONTROL_CODE_NUMBER0:
-@@ -365,9 +378,11 @@ class CECAdapterPriv
+@@ -365,9 +458,11 @@ class CECAdapterPriv
case CEC_USER_CONTROL_CODE_PLAY:
action = Qt::Key_P;
code = "PLAY";
@@ -65051,7 +65289,7 @@ index 00a8c73..a761e32 100644
code = "PAUSE";
break;
case CEC_USER_CONTROL_CODE_STOP:
-@@ -566,7 +581,7 @@ class CECAdapterPriv
+@@ -566,12 +661,341 @@ class CECAdapterPriv
return 1;
GetMythUI()->ResetScreensaver();
@@ -65060,12 +65298,351 @@ index 00a8c73..a761e32 100644
qApp->postEvent(GetMythMainWindow(), (QEvent*)ke);
return 1;
-@@ -721,36 +736,36 @@ CECAdapter::CECAdapter() : MThread("CECAdapter"), m_priv(new CECAdapterPriv)
+ }
+
++ void HandleKeyPress(const cec_keypress* key)
++ {
++ if (!adapter || !valid)
++ return;
++
++ // Ignore key down events and wait for the key 'up'
++ if (key->duration < 1)
++ return;
++
++ QString code;
++ int action = 0;
++ switch (key->keycode)
++ {
++ case CEC_USER_CONTROL_CODE_NUMBER0:
++ action = Qt::Key_0;
++ code = "0";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER1:
++ action = Qt::Key_1;
++ code = "1";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER2:
++ action = Qt::Key_2;
++ code = "2";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER3:
++ action = Qt::Key_3;
++ code = "3";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER4:
++ action = Qt::Key_4;
++ code = "4";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER5:
++ action = Qt::Key_5;
++ code = "5";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER6:
++ action = Qt::Key_6;
++ code = "6";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER7:
++ action = Qt::Key_7;
++ code = "7";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER8:
++ action = Qt::Key_8;
++ code = "8";
++ break;
++ case CEC_USER_CONTROL_CODE_NUMBER9:
++ action = Qt::Key_9;
++ code = "9";
++ break;
++ case CEC_USER_CONTROL_CODE_SELECT:
++ action = Qt::Key_Select;
++ code = "SELECT";
++ break;
++ case CEC_USER_CONTROL_CODE_ENTER:
++ action = Qt::Key_Enter;
++ code = "ENTER";
++ break;
++ case CEC_USER_CONTROL_CODE_UP:
++ action = Qt::Key_Up;
++ code = "UP";
++ break;
++ case CEC_USER_CONTROL_CODE_DOWN:
++ action = Qt::Key_Down;
++ code = "DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_LEFT:
++ action = Qt::Key_Left;
++ code = "LEFT";
++ break;
++ case CEC_USER_CONTROL_CODE_LEFT_UP:
++ action = Qt::Key_Left;
++ code = "LEFT_UP";
++ break;
++ case CEC_USER_CONTROL_CODE_LEFT_DOWN:
++ action = Qt::Key_Left;
++ code = "LEFT_DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_RIGHT:
++ action = Qt::Key_Right;
++ code = "RIGHT";
++ break;
++ case CEC_USER_CONTROL_CODE_RIGHT_UP:
++ action = Qt::Key_Right;
++ code = "RIGHT_UP";
++ break;
++ case CEC_USER_CONTROL_CODE_RIGHT_DOWN:
++ action = Qt::Key_Right;
++ code = "RIGHT_DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_ROOT_MENU:
++ action = Qt::Key_M;
++ code = "ROOT_MENU";
++ break;
++ case CEC_USER_CONTROL_CODE_EXIT:
++ action = Qt::Key_Escape;
++ code = "EXIT";
++ break;
++ case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL:
++ action = Qt::Key_H;
++ code = "PREVIOUS_CHANNEL";
++ break;
++ case CEC_USER_CONTROL_CODE_SOUND_SELECT:
++ action = Qt::Key_Plus;
++ code = "SOUND_SELECT";
++ break;
++ case CEC_USER_CONTROL_CODE_VOLUME_UP:
++ action = Qt::Key_VolumeUp;
++ code = "VOLUME_UP";
++ break;
++ case CEC_USER_CONTROL_CODE_VOLUME_DOWN:
++ action = Qt::Key_VolumeDown;
++ code = "VOLUME_DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_MUTE:
++ action = Qt::Key_VolumeMute;
++ code = "MUTE";
++ break;
++ case CEC_USER_CONTROL_CODE_PLAY:
++ action = Qt::Key_P;
++ code = "PLAY";
++ break;
++ case CEC_USER_CONTROL_CODE_PAUSE:
++ action = Qt::Key_P; // same as play
++ code = "PAUSE";
++ break;
++ case CEC_USER_CONTROL_CODE_STOP:
++ action = Qt::Key_Stop;
++ code = "STOP";
++ break;
++ case CEC_USER_CONTROL_CODE_RECORD:
++ action = Qt::Key_R;
++ code = "RECORD";
++ break;
++ case CEC_USER_CONTROL_CODE_CLEAR:
++ action = Qt::Key_Clear;
++ code = "CLEAR";
++ break;
++ case CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION:
++ action = Qt::Key_I;
++ code = "DISPLAY_INFORMATION";
++ break;
++ case CEC_USER_CONTROL_CODE_PAGE_UP:
++ action = Qt::Key_PageUp;
++ code = "PAGE_UP";
++ break;
++ case CEC_USER_CONTROL_CODE_PAGE_DOWN:
++ action = Qt::Key_PageDown;
++ code = "PAGE_DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_EJECT:
++ action = Qt::Key_Eject;
++ code = "EJECT";
++ break;
++ case CEC_USER_CONTROL_CODE_FORWARD:
++ action = Qt::Key_Forward;
++ code = "FORWARD";
++ break;
++ case CEC_USER_CONTROL_CODE_BACKWARD:
++ action = Qt::Key_Back;
++ code = "BACKWARD";
++ break;
++ case CEC_USER_CONTROL_CODE_F1_BLUE:
++ action = Qt::Key_F5; // NB F1 is help and we normally map blue to F5
++ code = "F1_BLUE";
++ break;
++ case CEC_USER_CONTROL_CODE_F2_RED:
++ action = Qt::Key_F2;
++ code = "F2_RED";
++ break;
++ case CEC_USER_CONTROL_CODE_F3_GREEN:
++ action = Qt::Key_F3;
++ code = "F3_GREEN";
++ break;
++ case CEC_USER_CONTROL_CODE_F4_YELLOW:
++ action = Qt::Key_F4;
++ code = "F4_YELLOW";
++ break;
++ case CEC_USER_CONTROL_CODE_SETUP_MENU:
++ action = Qt::Key_M; // Duplicate of Root Menu
++ code = "SETUP_MENU";
++ break;
++ case CEC_USER_CONTROL_CODE_CONTENTS_MENU:
++ action = Qt::Key_M; // Duplicate of Root Menu
++ code = "CONTENTS_MENU";
++ break;
++ case CEC_USER_CONTROL_CODE_FAVORITE_MENU:
++ action = Qt::Key_M; // Duplicate of Root Menu
++ code = "FAVORITE_MENU";
++ break;
++ case CEC_USER_CONTROL_CODE_DOT:
++ action = Qt::Key_Period;
++ code = "DOT";
++ break;
++ case CEC_USER_CONTROL_CODE_NEXT_FAVORITE:
++ action = Qt::Key_Slash;
++ code = "NEXT_FAVORITE";
++ break;
++ case CEC_USER_CONTROL_CODE_INPUT_SELECT:
++ action = Qt::Key_C;
++ code = "INPUT_SELECT";
++ break;
++ case CEC_USER_CONTROL_CODE_HELP:
++ action = Qt::Key_F1;
++ code = "HELP";
++ break;
++ case CEC_USER_CONTROL_CODE_STOP_RECORD:
++ action = Qt::Key_R; // Duplicate of Record
++ code = "STOP_RECORD";
++ break;
++ case CEC_USER_CONTROL_CODE_SUB_PICTURE:
++ action = Qt::Key_V;
++ code = "SUB_PICTURE";
++ break;
++ case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE:
++ action = Qt::Key_S;
++ code = "ELECTRONIC_PROGRAM_GUIDE";
++ break;
++ case CEC_USER_CONTROL_CODE_POWER:
++ action = Qt::Key_PowerOff;
++ code = "POWER";
++ break;
++
++ // these codes have 'non-standard' Qt key mappings to ensure
++ // each code has a unique key mapping
++ case CEC_USER_CONTROL_CODE_CHANNEL_DOWN:
++ action = Qt::Key_F20; // to differentiate from Up
++ code = "CHANNEL_DOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_CHANNEL_UP:
++ action = Qt::Key_F21; // to differentiate from Down
++ code = "CHANNEL_UP";
++ break;
++ case CEC_USER_CONTROL_CODE_REWIND:
++ action = Qt::Key_F22; // to differentiate from Left
++ code = "REWIND";
++ break;
++ case CEC_USER_CONTROL_CODE_FAST_FORWARD:
++ action = Qt::Key_F23; // to differentiate from Right
++ code = "FAST_FORWARD";
++ break;
++ case CEC_USER_CONTROL_CODE_ANGLE:
++ action = Qt::Key_F24;
++ code = "ANGLE";
++ break;
++ case CEC_USER_CONTROL_CODE_F5:
++ action = Qt::Key_F6; // NB!
++ code = "F5";
++ break;
++
++ // codes with no obvious MythTV action
++ case CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION:
++ code = "INITIAL_CONFIGURATION";
++ break;
++ case CEC_USER_CONTROL_CODE_PAUSE_RECORD:
++ code = "PAUSE_RECORD";
++ break;
++ case CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND:
++ code = "VIDEO_ON_DEMAND";
++ break;
++ case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING:
++ code = "TIMER_PROGRAMMING";
++ break;
++ case CEC_USER_CONTROL_CODE_UNKNOWN:
++ code = "UNKNOWN";
++ break;
++ case CEC_USER_CONTROL_CODE_DATA:
++ code = "DATA";
++ break;
++
++ // Functions aren't implemented (similar to macros?)
++ case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION:
++ code = "POWER_ON_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_PLAY_FUNCTION:
++ code = "PLAY_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION:
++ code = "PAUSE_PLAY_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_RECORD_FUNCTION:
++ code = "RECORD_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION:
++ code = "PAUSE_RECORD_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_STOP_FUNCTION:
++ code = "STOP_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_MUTE_FUNCTION:
++ code = "MUTE_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION:
++ code = "RESTORE_VOLUME_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_TUNE_FUNCTION:
++ code = "TUNE_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION:
++ code = "SELECT_MEDIA_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION:
++ code = "SELECT_AV_INPUT_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION:
++ code = "SELECT_AUDIO_INPUT_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION:
++ code = "POWER_TOGGLE_FUNCTION";
++ break;
++ case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION:
++ code = "POWER_OFF_FUNCTION";
++ break;
++ }
++
++ LOG(VB_GENERAL, LOG_DEBUG, LOC + QString("Keypress %1 %2")
++ .arg(code).arg(0 == action ? "(Not actioned)" : ""));
++
++ if (0 == action)
++ return;
++
++ GetMythUI()->ResetScreensaver();
++ QKeyEvent* ke = new QKeyEvent(QEvent::KeyPress, action, Qt::NoModifier);
++ qApp->postEvent(GetMythMainWindow(), (QEvent*)ke);
++ }
++
+ #if CEC_LIB_VERSION_MAJOR >= 2
+ int HandleAlert(const libcec_alert alert, const libcec_parameter &data)
+ {
+@@ -721,36 +1145,41 @@ CECAdapter::CECAdapter() : MThread("CECAdapter"), m_priv(new CECAdapterPriv)
void CECAdapter::run()
{
- for (;;) {
+ RunProlog();
++ // Handle any actions at startup
++ // This is done outside the lock to handle initial setup -
++ // we know that nothing else can be calling us this early.
++ m_priv->HandleActions();
++
+ while (IsValid()) {
// Note that a lock is used because the QWaitCondition needs it
// None of the other HandleActions callers need the lock because
@@ -65107,6 +65684,53 @@ index 00a8c73..a761e32 100644
return m_priv->valid;
}
+@@ -764,6 +1193,7 @@ void CECAdapter::Action(const QString &action)
+ gActionsReady->wakeAll();
+ }
+
++#if CEC_LIB_VERSION_MAJOR <= 3
+ static int CECLogMessageCallback(void *adapter, const cec_log_message CEC_CALLBACK_PARAM_TYPE message)
+ {
+ return ((CECAdapterPriv*)adapter)->LogMessage(message);
+@@ -778,13 +1208,37 @@ static int CECCommandCallback(void *adapter, const cec_command CEC_CALLBACK_PARA
+ {
+ return ((CECAdapterPriv*)adapter)->HandleCommand(command);
+ }
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++static void CECLogMessageCallback(void *adapter, const cec_log_message* message)
++{
++ ((CECAdapterPriv*)adapter)->LogMessage(message);
++}
++
++static void CECKeyPressCallback(void *adapter, const cec_keypress* keypress)
++{
++ ((CECAdapterPriv*)adapter)->HandleKeyPress(keypress);
++}
++
++static void CECCommandCallback(void *adapter, const cec_command* command)
++{
++ ((CECAdapterPriv*)adapter)->HandleCommand(command);
++}
++#endif
+
+ #if CEC_LIB_VERSION_MAJOR >= 2
++#if CEC_LIB_VERSION_MAJOR <= 3
+ static int CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter CEC_CALLBACK_PARAM_TYPE data)
+ {
+ return ((CECAdapterPriv*)adapter)->HandleAlert(alert, data);
+ }
+-
++#endif
++#if CEC_LIB_VERSION_MAJOR >= 4
++static void CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter data)
++{
++ ((CECAdapterPriv*)adapter)->HandleAlert(alert, data);
++}
++#endif
+ static void CECSourceActivatedCallback(void *adapter, const cec_logical_address address, const uint8_t activated)
+ {
+ ((CECAdapterPriv*)adapter)->HandleSourceActivated(address, activated);
diff --git a/mythtv/libs/libmythui/libmythui.pro b/mythtv/libs/libmythui/libmythui.pro
index 47e46e1..321e9a3 100644
--- a/mythtv/libs/libmythui/libmythui.pro
@@ -66687,6 +67311,39 @@ index 049c189..7f977c2 100644
return true;
}
+diff --git a/mythtv/programs/mythfilldatabase/channeldata.cpp b/mythtv/programs/mythfilldatabase/channeldata.cpp
+index b959684..c0ee522 100644
+--- a/mythtv/programs/mythfilldatabase/channeldata.cpp
++++ b/mythtv/programs/mythfilldatabase/channeldata.cpp
+@@ -124,7 +124,7 @@ QString ChannelData::normalizeChannelKey(const QString &chanName) const
+ result = result.toLower();
+ // Strip all whitespace
+ result = result.replace(" ", "");
+-
++
+ return result;
+ }
+
+@@ -132,8 +132,8 @@ QHash<QString, ChannelInfo> ChannelData::channelList(int sourceId)
+ {
+ QHash<QString, ChannelInfo> retList;
+
+- ChannelInfoList channelList = ChannelUtil::GetChannels(sourceId, true);
+-
++ ChannelInfoList channelList = ChannelUtil::GetChannels(sourceId, false);
++
+ ChannelInfoList::iterator it = channelList.begin();
+ for ( ; it != channelList.end(); ++it)
+ {
+@@ -234,7 +234,7 @@ void ChannelData::handleChannels(int id, ChannelInfoList *chanlist)
+ }
+ }
+ }
+-
++
+ ChannelInfo dbChan = FindMatchingChannel(*i, existingChannels);
+ if (dbChan.chanid > 0) // Channel exists, updating
+ {
diff --git a/mythtv/programs/mythfilldatabase/xmltvparser.cpp b/mythtv/programs/mythfilldatabase/xmltvparser.cpp
index 281da9c..62a3a13 100644
--- a/mythtv/programs/mythfilldatabase/xmltvparser.cpp
diff --git a/mythtv.spec b/mythtv.spec
index d1cbdce..2fff698 100644
--- a/mythtv.spec
+++ b/mythtv.spec
@@ -31,7 +31,6 @@
#
# The following options are enabled by default. Use these options to disable:
#
-# --without systemd Use systemd for backend rather than SysV init.
# --without vdpau Disable VDPAU support
# --without vaapi Disable VAAPI support
# --without crystalhd Disable Crystal HD support
@@ -61,7 +60,7 @@
%define desktop_vendor RPMFusion
# MythTV Version string -- preferably the output from git describe
-%define vers_string v28.0-72-g228b05b
+%define vers_string v28.0-104-g3930f5d
%define branch fixes/0.28
# Git revision and branch ID
@@ -82,7 +81,7 @@ Version: 0.28
%if "%{branch}" == "master"
Release: 0.5.git.%{_gitrev}%{?dist}
%else
-Release: 11%{?dist}
+Release: 12%{?dist}
%endif
# The primary license is GPLv2+, but bits are borrowed from a number of
@@ -104,7 +103,6 @@ License: GPLv2+ and LGPLv2+ and LGPLv2 and (GPLv2 or QPL) and (GPLv2+ or
%bcond_without vdpau
%bcond_without vaapi
%bcond_without crystalhd
-%bcond_without systemd
%bcond_without sdnotify
%bcond_without perl
%bcond_without php
@@ -135,7 +133,6 @@ Source0: https://github.com/MythTV/%{name}/archive/v%{version}.tar.gz#/%{name}
# Also update ChangeLog with git log v0.28..HEAD > ChangeLog
# and update define vers_string to v0.28-52-ge6a60f7 with git describe
Patch0: mythtv-0.28-fixes.patch
-Patch1: mythtv-0.28-libcec4.patch
Source10: PACKAGE-LICENSING
Source11: ChangeLog
@@ -155,19 +152,11 @@ Source114: mythdb-optimize.timer
# Global MythTV and Shared Build Requirements
-%if %{with systemd}
# Use systemd
BuildRequires: systemd
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
-%else
-# Use SysV
-Requires(post): chkconfig
-Requires(preun): chkconfig
-Requires(preun): initscripts
-Requires(postun): initscripts
-%endif
BuildRequires: perl-generators
BuildRequires: gcc-c++
@@ -358,12 +347,7 @@ Requires: mythplugins = %{version}-%{release}
Requires: mythweb = %{version}
Requires: mythffmpeg = %{version}-%{release}
Requires: mariadb-server >= 5, mariadb >= 5
-Requires: xmltv
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 22
-Requires: udisks2
-%else
-Requires: udisks
-%endif
+Recommends: xmltv
# Generate the required mythtv-frontend-api version string here so we only
# have to do it once.
@@ -410,11 +394,7 @@ Summary: Library providing mythtv support
Requires: freetype >= 2
Requires: lame
Requires: qt5-qtbase-mysql
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 22
Requires: udisks2
-%else
-Requires: udisks
-%endif
%description libs
Common library code for MythTV and add-on modules (development)
@@ -518,7 +498,7 @@ Requires: perl(XML::Simple)
Requires: mythtv-common = %{version}-%{release}
Requires: mythtv-base-themes = %{version}
Requires: python-MythTV
-Requires: mesa-vdpau-drivers
+Recommends: mesa-vdpau-drivers
Provides: mythtv-frontend-api = %{mythfeapiver}
%description frontend
@@ -800,7 +780,6 @@ on demand content.
#find -name *.pyc -exec rm -f {} \;
%patch0 -p1
-%patch1 -p1
# Install ChangeLog
install -m 0644 %{SOURCE11} .
@@ -1000,12 +979,7 @@ pushd mythtv
mkdir -p %{buildroot}%{_localstatedir}/cache/mythtv
mkdir -p %{buildroot}%{_localstatedir}/log/mythtv
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
- %if %{with systemd}
mkdir -p %{buildroot}%{_unitdir}
- %else
- mkdir -p %{buildroot}%{_sysconfdir}/init.d
- mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
- %endif
mkdir -p %{buildroot}%{_sysconfdir}/mythtv
@@ -1013,7 +987,6 @@ pushd mythtv
echo "# to be filled in by mythtv-setup" > %{buildroot}%{_sysconfdir}/mythtv/config.xml
### SystemD based setup. ###
- %if %{with systemd}
install -p -m 0644 %{SOURCE105} %{buildroot}%{_unitdir}/
install -p -m 0644 %{SOURCE104} %{buildroot}%{_sysconfdir}/logrotate.d/mythtv
# Install udev rules for devices that may initialize late in the boot
@@ -1030,13 +1003,6 @@ pushd mythtv
install -p -m 0755 contrib/maintenance/optimize_mythdb.pl \
%{buildroot}%{_bindir}/optimize_mythdb
- ### SysV based setup. ###
- %else
- install -p -m 0755 %{SOURCE102} %{buildroot}%{_sysconfdir}/init.d/mythbackend
- install -p -m 0644 %{SOURCE101} %{buildroot}%{_sysconfdir}/sysconfig/mythbackend
- install -p -m 0644 %{SOURCE103} %{buildroot}%{_sysconfdir}/logrotate.d/mythtv
- %endif
-
# Desktop entries
mkdir -p %{buildroot}%{_datadir}/pixmaps
mkdir -p %{buildroot}%{_datadir}/applications
@@ -1093,22 +1059,7 @@ popd
%endif
-%post libs -p /sbin/ldconfig
-
-%postun libs -p /sbin/ldconfig
-
-%pre backend
-# Add the "mythtv" user, with membership in the audio and video group
-getent group mythtv >/dev/null || groupadd -r mythtv
-getent passwd mythtv >/dev/null || \
- useradd -r -g mythtv -d %{_localstatedir}/lib/mythtv -s /sbin/nologin \
- -c "mythbackend user" mythtv
-# Make sure the mythtv user is in the audio and video group for existing
-# or new installs.
-usermod -a -G audio,video mythtv
-exit 0
-
-%pre frontend
+%pre common
# Add the "mythtv" user, with membership in the audio and video group
getent group mythtv >/dev/null || groupadd -r mythtv
getent passwd mythtv >/dev/null || \
@@ -1130,54 +1081,38 @@ getent passwd mythtv >/dev/null || \
usermod -a -G audio,video mythtv
exit 0
+%post libs -p /sbin/ldconfig
+
%post backend
-%if %{with systemd}
%systemd_post mythbackend.service
%systemd_post mythjobqueue.service
%systemd_post mythdb-optimize.service
-%else
- /sbin/chkconfig --add mythbackend
-%endif
-
%preun backend
-%if %{with systemd}
%systemd_preun mythbackend.service
%systemd_preun mythjobqueue.service
%systemd_preun mythdb-optimize.service
-%else
-if [ $1 = 0 ]; then
- /sbin/service mythbackend stop > /dev/null 2>&1
- /sbin/chkconfig --del mythbackend
-fi
-%endif
+
+%postun libs -p /sbin/ldconfig
%postun backend
-%if %{with systemd}
%systemd_postun_with_restart mythbackend.service
%systemd_postun_with_restart mythjobqueue.service
%systemd_postun_with_restart mythdb-optimize.service
-%else
-if [ "$1" -ge "1" ] ; then
- /sbin/service mythbackend condrestart >/dev/null 2>&1 || :
-fi
-%endif
################################################################################
%files
-%doc ChangeLog mythtv/PACKAGE-LICENSING
+%doc ChangeLog
+%license mythtv/PACKAGE-LICENSING
%files docs
%doc mythtv/README*
%doc mythtv/UPGRADING
%doc mythtv/AUTHORS
-%doc mythtv/COPYING
+%license mythtv/COPYING
%doc mythtv/FAQ
%doc mythtv/database mythtv/keys.txt
-# Do we really need the API documentation?
-#%%doc mythtv/docs/*.html mythtv/docs/*.png
-#%%doc mythtv/docs/*.txt
%doc mythtv/contrib
%files common
@@ -1193,8 +1128,8 @@ fi
%{_datadir}/mythtv/locales/
%{_datadir}/mythtv/metadata/
%{_datadir}/mythtv/hardwareprofile/
-%attr(-,mythtv,mythtv) %dir %{_sysconfdir}/mythtv
-%attr(0664,mythtv,mythtv) %config(noreplace) %{_sysconfdir}/mythtv/config.xml
+%attr(0775,-,mythtv) %dir %{_sysconfdir}/mythtv
+%attr(0664,-,mythtv) %config(noreplace) %{_sysconfdir}/mythtv/config.xml
%files backend
%{_bindir}/mythbackend
@@ -1209,16 +1144,11 @@ fi
%{_datadir}/mythtv/backend-config/
%attr(-,mythtv,mythtv) %dir %{_localstatedir}/lib/mythtv
%attr(-,mythtv,mythtv) %dir %{_localstatedir}/cache/mythtv
-%if %{with systemd}
%{_unitdir}/mythbackend.service
%{_unitdir}/mythjobqueue.service
%{_unitdir}/mythdb-optimize.service
%{_unitdir}/mythdb-optimize.timer
/lib/udev/rules.d/99-mythbackend.rules
-%else
-%{_sysconfdir}/init.d/mythbackend
-%config(noreplace) %{_sysconfdir}/sysconfig/mythbackend
-%endif
%config(noreplace) %{_sysconfdir}/logrotate.d/mythtv
%attr(-,mythtv,mythtv) %dir %{_localstatedir}/log/mythtv
%{_datadir}/mythtv/internetcontent/
@@ -1408,6 +1338,13 @@ fi
%changelog
+* Sun Jan 22 2017 Richard Shaw <hobbes1069(a)gmail.com> - 0.28-12
+- Update to latest fixes/0.28 from git.
+- Remove SysV conditionals as EL 7 has systemd and EL 6 is not supported.
+- Update default permissions for /etc/mythtv and move user/group creation
+ to the common package, fixes RFBZ#4414.
+- Change some dependencies from Requires to Recommends, fixes RFBZ#4415.
+
* Sat Jan 21 2017 Xavier Bachelot <xavier(a)bachelot.org> - 0.28-11
- Fix build on EL7.
7 years, 10 months