File mythtv.spec of Package mythtv

#
# spec file for package mythtv
#

# We don't want to be forced to package every generated file
%define _unpackaged_files_terminate_build 0

# Package creates a service
%{?systemd_ordering}

Name:           mythtv
Version:        31
Release:        0
Summary:        Open Source DVR
License:        GPL-2.0
Group:          Productivity/Multimedia/Video/Players
URL:            https://www.mythtv.org/
Source0:        mythtv-fixes-31-20210222.tar.gz
Source1:        mythtv-user.conf
Source2:        mythbackend.service
Source3:        mythbackend.sysconfig
BuildRequires:  git
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  make
BuildRequires:  gdb
BuildRequires:  automake
BuildRequires:  autoconf
BuildRequires:  libtool
BuildRequires:  pkg-config
BuildRequires:  nasm
BuildRequires:  ccache
BuildRequires:  libuuid-devel
BuildRequires:  libxml2-devel
BuildRequires:  alsa-devel
BuildRequires:  avahi-compat-mDNSResponder-devel
BuildRequires:  libexiv2-devel
BuildRequires:  libbluray-devel
BuildRequires:  lzo-devel
BuildRequires:  libhdhomerun-devel
BuildRequires:  libsamplerate-devel
BuildRequires:  libXinerama-devel
BuildRequires:  libXrandr-devel
BuildRequires:  libXv-devel
BuildRequires:  libXxf86vm-devel
BuildRequires:  libva-devel
BuildRequires:  libdrm-devel
BuildRequires:  libva-gl-devel
BuildRequires:  libvdpau-devel
BuildRequires:  libcec-devel
BuildRequires:  libass-devel
BuildRequires:  libcrystalhd-devel
BuildRequires:  systemd-devel
BuildRequires:  libvpx-devel
BuildRequires:  libbluray-bdj
BuildRequires:  libmp3lame-devel
BuildRequires:  python3-devel
BuildRequires:  python3-lxml
BuildRequires:  python3-requests
BuildRequires:  python3-simplejson
BuildRequires:  python3-future
BuildRequires:  python3-mysqlclient
BuildRequires:  perl-ExtUtils-MakeMaker
BuildRequires:  perl-DBI
BuildRequires:  perl-DBD-mysql
BuildRequires:  perl-HTTP-Message
BuildRequires:  perl-libwww-perl
BuildRequires:  perl-IO-Socket-INET6
BuildRequires:  perl-Date-Manip
BuildRequires:  perl-XML-Simple
BuildRequires:  perl-XML-XPath
BuildRequires:  perl-DateTime-Format-ISO8601
BuildRequires:  perl-SOAP-Lite
BuildRequires:  perl-JSON
BuildRequires:  perl-Image-Size
BuildRequires:  perl-Net-UPnP
BuildRequires:  libvorbis-devel
BuildRequires:  flac-devel
BuildRequires:  libtag-devel
BuildRequires:  libcdio-devel
BuildRequires:  libcdio-paranoia-devel
BuildRequires:  libmysqlclient-devel
BuildRequires:  fftw3-threads-devel
BuildRequires:  libexif-devel
BuildRequires:  dcraw
BuildRequires:  minizip-devel
BuildRequires:  libqt5-qtbase-devel
BuildRequires:  libQt5WebKit5-devel
BuildRequires:  libQt5WebKitWidgets-devel
BuildRequires:  libqt5-qtscript-devel
BuildRequires:  libQt5Sql5-mysql
BuildRequires:  fdupes
BuildRequires:  sysuser-tools
BuildRequires:  openSUSE-release
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
MythTV is a Free Open Source software digital video recorder (DVR) project
distributed under the terms of the GNU GPL. It has been under heavy
development since 2002, and now contains most features one would expect
from a good DVR (and many new ones that you soon won't be able to live without). 


%package -n libmyth-%{version}
Summary:        Libraries providing MythTV support
Group:          Development/Libraries/C and C++
Requires:       libQt5Sql5-mysql
%description -n libmyth-%{version}
MythTV open source DVR

This package contains the shared Libraries.


%package devel
Summary:        Development files for MythTV
Group:          Development/Libraries/C and C++
Requires:       libmyth-%{version} = %{version}
%description devel
MythTV open source DVR

This package contains the header files and libraries for developing add-ons.

%package common
Summary:        Components used in common by the MythTV apps
Group:          Productivity/Multimedia/Video/Players
Requires:       perl(DBD::mysql)
Requires:       perl(Net::UPnP)
Requires:       perl(Net::UPnP::ControlPoint)
Requires:       python3-future
Requires:       python3-lxml
Requires:       python3-mysqlclient
Requires:       python3-requests
Requires:       python3-requests-cache
Requires:       python3-simplejson
%perl_requires
%description common
MythTV open source DVR

This package contains the subcomponents that are required in
common by the other main components,


%package frontend
Summary:        MythTV client
Group:          Productivity/Multimedia/Video/Players
Requires:       mythtv-common = %{version}
%description frontend
MythTV open source DVR

This package contains the client used for playback and some
configuration.


%package backend
Summary:        MythTV server
Group:          Productivity/Multimedia/Video/Players
%sysusers_requires
Requires:       mythtv-common = %{version}
%description backend
MythTV open source DVR

This package contains the server, responsible for recording and
serving video to clients.


%prep
%setup -q -n mythtv-fixes-31-20210222

%build
pushd mythtv

CFLAGS="%{optflags}";export CFLAGS;
CXXFLAGS="%{optflags}";export CXXFLAGS;

./configure \
    --prefix=%{_prefix}         \
    --libdir=%{_libdir}         \
    --libdir-name=%{_lib}       \
    --mandir=%{_mandir}         \
    --compile-type=release      \
    --enable-libmp3lame         \
    --perl-config-opts="INSTALLDIRS=vendor"

make %{?_smp_mflags}
popd

# Generate the pre script to install the user
%sysusers_generate_pre %{SOURCE1} mythtv

%install
pushd mythtv
%qmake5_install
popd

# Link any duplicate files
%fdupes %{buildroot}%{_includedir}/mythtv
%fdupes %{buildroot}%{_datadir}/mythtv

# Install the user conf file
mkdir -p %{buildroot}%{_sysusersdir}
install -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}

# Install the service related files
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_fillupdir}
install -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}
install -m 0644 %{SOURCE3} %{buildroot}%{_fillupdir}/sysconfig.mythbackend

# The plugins directory needs to be owned by a package
install -d %{buildroot}%{_libdir}/mythtv/plugins

%post -n libmyth-%{version}
/sbin/ldconfig

%postun -n libmyth-%{version}
/sbin/ldconfig

# Use the generated pre script to create the user
%pre -n mythtv-backend -f mythtv.pre
%service_add_pre mythbackend.service

%post backend
%service_add_post mythbackend.service
%{fillup_and_insserv -i -n mythbackend}

%preun backend
%service_del_preun mythbackend.service

%postun backend
%service_del_postun mythbackend.service


%files -n libmyth-%{version}
%dir %{_libdir}/mythtv
%dir %{_libdir}/mythtv/plugins
%{_libdir}/*.so.*

%files devel
%{_includedir}/mythtv
%{_libdir}/*.so

%files common
%exclude %{_bindir}/mythbackend
%exclude %{_bindir}/mythfilldatabase
%exclude %{_bindir}/mythjobqueue
%exclude %{_bindir}/mythmediaserver
%exclude %{_bindir}/mythtv-setup
%exclude %{_bindir}/mythtvsetup
%exclude %{_bindir}/mythavtest
%exclude %{_bindir}/mythfrontend
%exclude %{_bindir}/mythlcdserver
%exclude %{_bindir}/mythshutdown
%exclude %{_bindir}/mythwelcome
%{_bindir}/*
%{_datadir}/mythtv
%{python3_sitelib}/*
%{perl_vendorlib}/MythTV.pm
%{perl_vendorlib}/MythTV
%{perl_vendorlib}/IO

%files backend
%{_bindir}/mythbackend
%{_bindir}/mythfilldatabase
%{_bindir}/mythjobqueue
%{_bindir}/mythmediaserver
%{_bindir}/mythtv-setup
%{_sysusersdir}/*
%{_unitdir}/*
%{_fillupdir}/*

%files frontend
%{_bindir}/mythavtest
%{_bindir}/mythfrontend
%{_bindir}/mythlcdserver
%{_bindir}/mythshutdown
%{_bindir}/mythwelcome

%changelog
openSUSE Build Service is sponsored by