Files
rpms/fedora/SPECS/kodi.spec
2019-02-22 17:40:20 +01:00

507 lines
14 KiB
RPMSpec

%global PRERELEASE r
%global myRELEASE 60
#global GITCOMMIT Gotham_r2-ge988513
# use the line below for pre-releases
# global DIRVERSION %{version}%{PRERELEASE}
%global DIRVERSION %{version}
%global _hardened_build 1
# We support hte following options:
# --with,
# * dvdcss - Include DVD decryption support
#
# Default: Do not ship DVD decryption for legal reasons
%bcond_with dvdcss
# Optional deps (not in EPEL)
%if 0%{?fedora}
# (libbluray in EPEL 6 is too old.)
%global _with_libbluray 1
%global _with_cwiid 1
%global _with_libssh 1
%global _with_libcec 1
%global _with_external_ffmpeg 1
%global _with_wayland 1
%endif
%if 0%{?_with_wayland}
%global kodi_backends x11 wayland gbm
%else
%global kodi_backends x11 gbm
%endif
Name: kodi
Version: 18.1
Release: 1.%{myRELEASE}.%{PRERELEASE}%{?dist}
Summary: Media center
License: GPLv2+ and GPLv3+ and LGPLv2+ and BSD and MIT
# Main binary and all supporting files are GPLv2+/GPLv3+
# Some supporting libraries use the LGPL / BSD / MIT license
Group: Applications/Multimedia
URL: http://www.kodi.tv/
Source0: %{name}-%{DIRVERSION}-patched.tar.xz
# kodi contains code that we cannot ship, as well as redundant private
# copies of upstream libraries that we already distribute. Therefore
# we use this script to remove the code before shipping it.
# Invoke this script while in the directory where the tarball is located:
# ./kodi-generate-tarball-xz.sh
Source1: kodi-generate-tarball-xz.sh
# kodi uses modified libdvd{css,nav,read} source and downloads at build time
# wget -O kodi-libdvdnav-6.0.0-Leia-Alpha-3.tar.gz https://github.com/xbmc/libdvdnav/archive/6.0.0-Leia-Alpha-3.tar.gz
Source2: kodi-libdvdnav-6.0.0-Leia-Alpha-3.tar.gz
# wget -O kodi-libdvdread-6.0.0-Leia-Alpha-3.tar.gz https://github.com/xbmc/libdvdread/archive/6.0.0-Leia-Alpha-3.tar.gz
Source3: kodi-libdvdread-6.0.0-Leia-Alpha-3.tar.gz
%if %{with dvdcss}
# wget -O kodi-libdvdcss-1.4.1-Leia-Alpha-3.tar.gz https://github.com/xbmc/libdvdcss/archive/1.4.1-Leia-Alpha-3.tar.gz
Source4: kodi-libdvdcss-1.4.1-Leia-Alpha-3.tar.gz
%endif
%if ! 0%{?_with_external_ffmpeg}
# wget -O ffmpeg-4.0.2-Leia-Alpha3.tar.gz https://github.com/xbmc/FFmpeg/archive/4.0.2-Leia-Alpha3.tar.gz
Source5: ffmpeg-4.0.2-Leia-Alpha3.tar.gz
%endif
# Set program version parameters
Patch1: kodi-18.0-versioning.patch
# fix assert at startup
Patch2: kodi-18a1-assert.patch
%ifarch x86_64 i686
%global _with_crystalhd 1
%endif
# Upstream does not support ppc64
ExcludeArch: %{power64} ppc64le
BuildRequires: SDL2-devel
BuildRequires: SDL_image-devel
BuildRequires: a52dec-devel
BuildRequires: afpfs-ng-devel
BuildRequires: avahi-devel
BuildRequires: bluez-libs-devel
BuildRequires: boost-devel
BuildRequires: bzip2-devel
BuildRequires: cmake
BuildRequires: crossguid-devel
%if 0%{?_with_cwiid}
BuildRequires: cwiid-devel
%endif
BuildRequires: dbus-devel
BuildRequires: desktop-file-utils
BuildRequires: e2fsprogs-devel
BuildRequires: enca-devel
BuildRequires: expat-devel
BuildRequires: faad2-devel
BuildRequires: firewalld-filesystem
%if 0%{?_with_external_ffmpeg}
BuildRequires: ffmpeg-devel
%endif
BuildRequires: flac-devel
BuildRequires: flatbuffers-devel
BuildRequires: flex
BuildRequires: fmt-devel
BuildRequires: fontconfig-devel
BuildRequires: fontpackages-devel
BuildRequires: freetype-devel
BuildRequires: fribidi-devel
BuildRequires: fstrcmp-devel
%if 0%{?el6}
BuildRequires: gettext-devel
%else
BuildRequires: gettext-autopoint
%endif
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: giflib-devel
BuildRequires: glew-devel
BuildRequires: glib2-devel
BuildRequires: gperf
BuildRequires: jasper-devel
BuildRequires: java-devel
BuildRequires: lame-devel
BuildRequires: lcms2-devel
BuildRequires: libXinerama-devel
BuildRequires: libXmu-devel
BuildRequires: libXtst-devel
BuildRequires: libass-devel >= 0.9.7
%if 0%{?_with_libbluray}
BuildRequires: libbluray-devel
%endif
BuildRequires: libcap-devel
BuildRequires: libcdio-devel
%if 0%{?_with_libcec}
%if 0%{?fedora} > 24
BuildRequires: libcec-devel >= 4.0.0
%else
BuildRequires: libcec-devel < 4.0.0
%endif
%endif
%if 0%{?_with_crystalhd}
BuildRequires: libcrystalhd-devel
%endif
BuildRequires: libcurl-devel
BuildRequires: libdca-devel
BuildRequires: libidn2-devel
BuildRequires: libinput-devel
%if 0%{?el6}
BuildRequires: libjpeg-devel
%else
BuildRequires: libjpeg-turbo-devel
%endif
BuildRequires: libmad-devel
BuildRequires: libmicrohttpd-devel
BuildRequires: libmms-devel
BuildRequires: libmodplug-devel
BuildRequires: libmpcdec-devel
BuildRequires: libmpeg2-devel
BuildRequires: libnfs-devel
BuildRequires: libogg-devel
# for AirPlay support
BuildRequires: shairplay-devel
BuildRequires: libplist-devel
BuildRequires: libpng-devel
BuildRequires: librtmp-devel
BuildRequires: libsamplerate-devel
BuildRequires: libsmbclient-devel
%if 0%{?_with_libssh}
BuildRequires: libssh-devel
%endif
BuildRequires: libtiff-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
BuildRequires: libva-devel
BuildRequires: libvdpau-devel
BuildRequires: libvorbis-devel
%if 0%{?_with_wayland}
BuildRequires: libxkbcommon-devel
%endif
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
BuildRequires: lzo-devel
BuildRequires: mariadb-devel
BuildRequires: mesa-libEGL-devel
BuildRequires: mesa-libGLES-devel
BuildRequires: mesa-libgbm-devel
BuildRequires: nasm
BuildRequires: pcre-devel
BuildRequires: pixman-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: python2-devel
BuildRequires: python2-pillow
BuildRequires: /usr/bin/pathfix.py
BuildRequires: rapidjson-devel
BuildRequires: sqlite-devel
BuildRequires: swig
BuildRequires: systemd-devel
BuildRequires: taglib-devel >= 1.10
BuildRequires: tinyxml-devel
BuildRequires: tre-devel
BuildRequires: trousers-devel
BuildRequires: wavpack-devel
%if 0%{?_with_wayland}
BuildRequires: wayland-protocols-devel
BuildRequires: waylandpp-devel
%endif
BuildRequires: yajl-devel
BuildRequires: zlib-devel
# Install major backends, users can remove them individually
Requires: %{name}-common = %{version}-%{release}
Requires: (%{name}-wayland = %{version}-%{release} if libwayland-server)
Requires: (%{name}-x11 = %{version}-%{release} if xorg-x11-server-Xorg)
Requires: (%{name}-firewalld = %{version}-%{release} if firewalld)
%description
Kodi is a free cross-platform media-player jukebox and entertainment hub.
Kodi can play a spectrum of of multimedia formats, and featuring playlist,
audio visualizations, slideshow, and weather forecast functions, together
third-party plugins.
This is a meta package.
%package common
Summary: Common Kodi files and binaries
Requires: dejavu-sans-fonts
# need explicit requires for these packages
# as they are dynamically loaded via XBMC's arcane
# pseudo-DLL loading scheme (sigh)
%if 0%{?_with_libbluray}
Requires: libbluray%{?_isa}
%endif
%if 0%{?_with_libcec}
%if 0%{?fedora} > 24
Requires: libcec%{?_isa} >= 4.0.0
%else
Requires: libcec%{?_isa} < 4.0.0
%endif
%endif
%if 0%{?_with_crystalhd}
Requires: libcrystalhd%{?_isa}
%endif
Requires: libmad%{?_isa}
Requires: librtmp%{?_isa}
Requires: shairplay-libs%{?_isa}
# needed when doing a minimal install, see
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=1844
Requires: glx-utils
Requires: xorg-x11-utils
# This is just symlinked to, but needed both at build-time
# and for installation
Requires: python2-pillow%{?_isa}
%description common
Common Kodi files and binaries
%package devel
Summary: Development files needed to compile C programs against kodi
Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: xbmc-devel < 14.0
Provides: xbmc-devel = %{version}
%description devel
Kodi is a free cross-platform media-player jukebox and entertainment hub.
If you want to develop programs which use Kodi's libraries, you need to
install this package.
%package eventclients
Summary: Media center event client remotes
Obsoletes: xbmc-eventclients < 14.0
Provides: xbmc-eventclients = %{version}
%description eventclients
This package contains support for using Kodi with the PS3 Remote, the Wii
Remote, a J2ME based remote and the command line xbmc-send utility.
%package eventclients-devel
Summary: Media center event client remotes development files
Requires: %{name}-eventclients%{?_isa} = %{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Obsoletes: xbmc-eventclients-devel < 14.0
Provides: xbmc-eventclients-devel = %{version}
%description eventclients-devel
This package contains the development header files for the eventclients
library.
%package firewalld
Summary: FirewallD metadata files for Kodi
Requires: firewalld-filesystem
Requires(post): firewalld-filesystem
%description firewalld
This package contains FirewallD files for Kodi.
%package gbm
Summary: Kodi binary for Generic Buffer Management
Requires: %{name}-common = %{version}-%{release}
%description gbm
This package contains the Kodi binary for Generic Buffer Management.
%package wayland
Summary: Kodi binary for Wayland compositors
Requires: %{name}-common = %{version}-%{release}
%description wayland
This package contains the Kodi binary for Wayland compositors.
%package x11
Summary: Kodi binary for X11 servers
Requires: %{name}-common = %{version}-%{release}
%description x11
This package contains the Kodi binary for X11 servers.
%prep
%setup -q -n %{name}-%{DIRVERSION}
#%patch1 -p1 -b.versioning
#%patch2 -p1 -b.assert
# Fix up Python shebangs
pathfix.py -pni "%{__python2} %{py2_shbang_opts}" \
tools/EventClients/lib/python/zeroconf.py \
tools/EventClients/Clients/PS3BDRemote/ps3_remote.py \
tools/EventClients/lib/python/ps3/sixaxis.py \
tools/EventClients/lib/python/ps3/sixpair.py \
tools/EventClients/lib/python/ps3/sixwatch.py \
tools/EventClients/Clients/KodiSend/kodi-send.py \
tools/EventClients/lib/python/xbmcclient.py
%build
mkdir {fedora-gbm,fedora-wayland,fedora-x11}
for BACKEND in %{kodi_backends}
do
pushd fedora-$BACKEND
%cmake \
%if %{with dvdcss}
-DLIBDVDCSS_URL=%{SOURCE4} \
%else
-DENABLE_DVDCSS=OFF \
%endif
%if ! 0%{?_with_external_ffmpeg}
-DFFMPEG_URL=%{SOURCE5} \
%endif
-DENABLE_EVENTCLIENTS=ON \
-DENABLE_INTERNAL_CROSSGUID=OFF \
-DLIRC_DEVICE=/var/run/lirc/lircd \
-DLIBDVDNAV_URL=%{SOURCE2} \
-DLIBDVDREAD_URL=%{SOURCE3} \
-DPYTHON_EXECUTABLE=%{__python2} \
-DCORE_PLATFORM_NAME=$BACKEND \
%ifarch x86_64 i686
-DWAYLAND_RENDER_SYSTEM=gl \
-DGBM_RENDER_SYSTEM=gl \
%else
-DWAYLAND_RENDER_SYSTEM=gles \
-DGBM_RENDER_SYSTEM=gles \
%endif
../
cmake --build . -- VERBOSE=1 %{?_smp_mflags}
popd
done
%install
for BACKEND in %{kodi_backends}
do
pushd fedora-$BACKEND
make DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags} install
popd
done
# remove the doc files from unversioned /usr/share/doc/xbmc, they should be in versioned docdir
rm -r $RPM_BUILD_ROOT/%{_datadir}/doc/
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/kodi.desktop
# Stop shipping the duplicate xsession file
rm -f $RPM_BUILD_ROOT/%{_datadir}/xsessions/xbmc.desktop
# Normally we are expected to build these manually. But since we are using
# the system Python interpreter, we also want to use the system libraries
install -d $RPM_BUILD_ROOT%{_libdir}/kodi/addons/script.module.pil/lib
ln -s %{python2_sitearch}/PIL $RPM_BUILD_ROOT%{_libdir}/kodi/addons/script.module.pil/lib/PIL
#install -d $RPM_BUILD_ROOT%{_libdir}/xbmc/addons/script.module.pysqlite/lib
#ln -s %{python2_sitearch}/pysqlite2 $RPM_BUILD_ROOT%{_libdir}/xbmc/addons/script.module.pysqlite/lib/pysqlite2
# Use external font files instead of bundled ones
ln -sf %{_fontbasedir}/dejavu/DejaVuSans-Bold.ttf ${RPM_BUILD_ROOT}%{_datadir}/kodi/addons/skin.estouchy/fonts/
# Move man-pages into system dir
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/
mv docs/manpages ${RPM_BUILD_ROOT}%{_mandir}/man1/
%post firewalld
%firewalld_reload
%files
%files common
%license LICENSE.md LICENSES/
%doc README.md docs
%{_bindir}/kodi
%{_bindir}/kodi-standalone
%{_bindir}/TexturePacker
%dir %{_libdir}/kodi/
%{_libdir}/kodi/addons/
%{_libdir}/kodi/system/
%{_datadir}/kodi/
%{_datadir}/xsessions/kodi.desktop
%{_datadir}/applications/kodi.desktop
%{_datadir}/icons/hicolor/*/*/*.png
%{_mandir}/man1/kodi.1.gz
%{_mandir}/man1/kodi.bin.1.gz
%{_mandir}/man1/kodi-standalone.1.gz
%files devel
%{_includedir}/kodi
%files eventclients
%license LICENSE.md LICENSES/
%{python2_sitelib}/kodi
%dir %{_datadir}/pixmaps/kodi
%{_datadir}/pixmaps/kodi/*.png
%{_bindir}/kodi-ps3remote
%{_bindir}/kodi-send
%{_bindir}/kodi-wiiremote
%{_mandir}/man1/kodi-ps3remote.1.gz
%{_mandir}/man1/kodi-send.1.gz
%{_mandir}/man1/kodi-wiiremote.1.gz
%files eventclients-devel
%{_includedir}/kodi/xbmcclient.h
%files firewalld
%license LICENSE.md LICENSES/
%{_prefix}/lib/firewalld/services/kodi-eventserver.xml
%{_prefix}/lib/firewalld/services/kodi-http.xml
%{_prefix}/lib/firewalld/services/kodi-jsonrpc.xml
%files gbm
%{_libdir}/kodi/kodi-gbm
%files wayland
%{_libdir}/kodi/kodi-wayland
%files x11
%{_libdir}/kodi/kodi-x11
%{_libdir}/kodi/kodi-xrandr
%changelog
* Fri Feb 22 2019 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.1-1.60.final
- Update to Final 18.1.
* Thu Jan 31 2019 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-1.60.final
- Update to Final 18.
* Sun Jan 13 2019 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.50.rc5
- Update to RC5
* Fri Jan 4 2019 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.21.rc4
- Update to RC4
* Wed Dec 19 2018 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.21.rc3
- Update to RC3
* Sat Dec 8 2018 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.21.rc2
- fmt library updated.
* Fri Dec 7 2018 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.20.rc2
- Update to RC2
* Sat Nov 10 2018 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.10.rc0
- Update to RC0
* Sun Nov 4 2018 Daniel Steiner <daniel.steiner@greenmail.ch> - 18.0-0.10.b5
- Update to beta5