File kodi.spec of Package kodi-hdr
#
# spec file for package kodi
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
#define _lto_cflags #{nil}
%define _git_version $(echo %{version} | grep -o -E '2025.*')
%define _ffmpeg_version 7.1.1
%define _dav1d_version 1.5.1
%define _libudfread_version 1.1.2
%define _python_version 3.13
%define _python_package 313
%define _kodi_addons_dir /usr/share/kodi/addons
Name: kodi
Version: 22.x.+git.20250309T174446~c68ed4752
Release: 0
Summary: Open source (GPL) software media center
License: GPL-2.0-or-later
Group: Productivity/Multimedia/Video/Players
Url: https://www.kodi.tv
Source0: %{name}-%{version}.tar.xz
Source2: %{name}.service
Source3: %{name}-rpmlintrc
Source4: 30-%{name}-power-options.rules
Source7: system-user-%{name}.conf
Source8: %{name}.logrotate
Source9: https://ffmpeg.org/releases/ffmpeg-%{_ffmpeg_version}.tar.gz
Source10: http://mirrors.kodi.tv/build-deps/sources/libudfread-%{_libudfread_version}.tar.gz
Source11: https://code.videolan.org/videolan/dav1d/-/archive/%{_dav1d_version}/dav1d-%{_dav1d_version}.tar.bz2
#Source12: https://mirrors.kodi.tv/build-deps/sources/crossguid-ca1bf4b810e2d188d04cb6286f957008ee1b7681.tar.gz
Source13: https://github.com/xbmc/libdvdnav/archive/refs/tags/6.1.1-Next-Nexus-Alpha2-2.tar.gz
Source14: https://github.com/xbmc/libdvdread/archive/refs/tags/6.1.3-Next-Nexus-Alpha2-2.tar.gz
Source15: https://github.com/xbmc/libdvdcss/archive/1.4.3-Next-Nexus-Alpha2-2.tar.gz
Source16: https://github.com/taglib/taglib/releases/download/v2.0.2/taglib-2.0.2.tar.gz
Source17: http://mirrors.kodi.tv/build-deps/sources/utfcpp-4.0.6.tar.gz
Patch1: 001_%{name}_crossguid.patch
Patch2: 002_%{name}_python%{_python_package}_interpreter.patch
#Patch3: 003_%{name}_move_logdir.patch
#Patch4: 004_%{name}_move_userhome.patch
#Patch5: 005_%{name}_move_temp.patch
#Patch6: 006_%{name}_move_masterprofile.patch
#Patch9: 009_%{name}_dav1d_version_hash.patch
Patch20: 020_%{name}_ffmpeg_pkgconfig.patch
#Patch21: 021_%{name}_ffmpeg_version.patch
# https://github.com/LibreELEC/LibreELEC.tv/commit/df99a7e8973bc1e5f66d4b953e82a28d7346b798
Patch50: kodi-995.21-keymaps-change-remote-poweroff-action-to-show-shutdo.patch
Patch1000: no-egl.patch
BuildRequires: crossguid-devel
BuildRequires: ffmpeg-7-libavcodec-devel
BuildRequires: ffmpeg-7-libavdevice-devel
BuildRequires: ffmpeg-7-libavfilter-devel
BuildRequires: ffmpeg-7-libavformat-devel
BuildRequires: ffmpeg-7-libavutil-devel
BuildRequires: ffmpeg-7-libpostproc-devel
BuildRequires: ffmpeg-7-libswresample-devel
BuildRequires: ffmpeg-7-libswscale-devel
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(lzo2)
BuildRequires: pkgconfig(flatbuffers)
BuildRequires: pkgconfig(RapidJSON) >= 1.0.2
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(avahi-client)
BuildRequires: pkgconfig(avahi-compat-libdns_sd)
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(fmt) >= 9.1.0
BuildRequires: pkgconfig(libidn2)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi)
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libass)
BuildRequires: pkgconfig(libbluray)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libcdio)
BuildRequires: pkgconfig(libcec)
BuildRequires: pkgconfig(libcpluff)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libdrm) >= 2.4.74
BuildRequires: pkgconfig(libiso9660)
BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.40
BuildRequires: pkgconfig(libnfs) >= 5.0
BuildRequires: pkgconfig(libpcre)
BuildRequires: pkgconfig(libpcrecpp)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(libva-drm)
BuildRequires: pkgconfig(libva-x11)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(libxslt)
BuildRequires: pkgconfig(lirc)
BuildRequires: pkgconfig(lzo2)
BuildRequires: pkgconfig(openssl)
BuildRequires: python%{_python_package}-devel
BuildRequires: pkgconfig(smbclient)
BuildRequires: pkgconfig(sqlite3)
%ifnarch %ix86
BuildRequires: pkgconfig(taglib) >= 1.9.0
%endif
BuildRequires: pkgconfig(uuid)
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(libiso9660) >= 2.1.0
BuildRequires: pkgconfig(libinput)
BuildRequires: pkgconfig(libdisplay-info)
BuildRequires: pkgconfig(dav1d)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(vdpau)
BuildRequires: shairplay-devel
BuildRequires: spdlog-devel >= 1.10.0
BuildRequires: libunistring-devel
BuildRequires: giflib-devel
BuildRequires: fstrcmp-devel
BuildRequires: java-devel
BuildRequires: libmariadbd-devel
BuildRequires: sndio-devel
BuildRequires: tinyxml-devel
BuildRequires: pkgconfig(tinyxml2)
BuildRequires: cmake >= 3.12
BuildRequires: fdupes
BuildRequires: automake
BuildRequires: libtool
BuildRequires: ninja
BuildRequires: meson
%if 0%{?suse_version} <= 1600
BuildRequires: gcc14
BuildRequires: gcc14-c++
%else
BuildRequires: gcc-c++
BuildRequires: gcc
%endif
BuildRequires: dos2unix
BuildRequires: pkg-config
BuildRequires: doxygen
BuildRequires: graphviz
BuildRequires: swig
BuildRequires: gtest
BuildRequires: polkit
BuildRequires: git
BuildRequires: sysuser-tools
BuildRequires: desktop-file-utils
BuildRequires: nasm
BuildRequires: autoconf
BuildRequires: unzip
BuildRequires: groovy >= 4.0
BuildRequires: apache-commons-lang3
BuildRequires: apache-commons-text
#BuildRequires: mold
BuildRequires: binutils-gold
BuildRequires: pkgconfig(exiv2)
BuildRequires: group(audio)
BuildRequires: group(kvm)
# Required for some addons
Requires: python%{_python_package}-mysql-connector-python
Requires: python%{_python_package}-Pillow
Requires: python%{_python_package}-ijson
Requires: python%{_python_package}-requests
Requires: python%{_python_package}-defusedxml
Requires: python%{_python_package}-numpy
Requires: python%{_python_package}-requests-futures
#Requires: python%{_python_package}-future
Requires: python%{_python_package}-pycryptodome
Requires: libnfs >= 5.0
Requires: samba-client
Requires: polkit
Requires: user(kodi) group(kodi) group(audio)
Requires(post): %fillup_prereq
Recommends: kodi-eventclient-hama-mce
Recommends: mariadb
Suggests: logrotate
Conflicts: kodi-gbm kodi-rpi
%{?systemd_requires}
%description
Kodi is an award-winning free and open source software media player and entertainment hub for digital media.
Available as a native application for Android, Linux, BSD, macOS, iOS, tvOS and Windows operating systems,
Kodi runs on most common processor architectures.
Created in 2003 by a group of like minded programmers, Kodi is a non-profit project run by the XBMC Foundation
and developed by volunteers located around the world.
More than 500 software developers have contributed to Kodi to date, and 100-plus translators have worked to expand its reach,
making it available in more than 70 languages.
%package devel
Summary: Header files to build Kodi add-ons
Group: Development/Libraries/C and C++
Requires: cmake >= 3.12
%description devel
Header files to build Kodi add-ons
%package -n system-user-%{name}
Summary: System user and group %{name}
BuildArch: noarch
%if %{with systemd}
%{?sysusers_requires}
%endif
%description -n system-user-%{name}
System user and group used by %{name}
%prep
%autosetup -n %{name}-%{version} -p1
rm -f $(find . -name ".gitignore")
%build
# Fix wrong line encoding
dos2unix addons/service.xbmc.versioncheck/resources/lib/version_check/service.py
dos2unix addons/service.xbmc.versioncheck/resources/lib/version_check/viewer.py
%sysusers_generate_pre %{SOURCE7} %{name}
%if 0%{?suse_version} <= 1600
test -x "$(type -p gcc-14)" && export CC="$_"
test -x "$(type -p g++-14)" && export CXX="$_"
%endif
%cmake \
-DVERBOSE=ON \
-DCMAKE_C_FLAGS="%optflags -fPIC" \
-DCMAKE_CXX_FLAGS="%optflags" \
-DCMAKE_EXE_LINKER_FLAGS="%optflags" \
-DCMAKE_BUILD_TYPE=Release \
-DPYTHON_VER=%{_python_version} \
-DPYTHON_EXECUTABLE="%{_bindir}/python%{_python_version}" \
-DCORE_SYSTEM_NAME=linux \
-DAPP_RENDER_SYSTEM=gl \
-DCORE_PLATFORM_NAME=x11 \
-DENABLE_SSE=ON \
-DENABLE_SSE2=ON \
-DENABLE_SSE3=ON \
-DENABLE_SSSE3=ON \
-DENABLE_SSE4_1=ON \
-DENABLE_SSE4_2=ON \
-DENABLE_AVX=ON \
-DENABLE_AVX2=ON \
-DGIT_VERSION="%{_git_version}" \
-DENABLE_EVENTCLIENTS=ON \
-DENABLE_INTERNAL_CDIO=OFF \
-DENABLE_INTERNAL_FLATBUFFERS=OFF \
-DENABLE_INTERNAL_FMT=OFF \
-DENABLE_INTERNAL_FSTRCMP=OFF \
-DENABLE_INTERNAL_SPDLOG=OFF \
-DENABLE_INTERNAL_UDFREAD=ON \
-DUDFREAD_URL="%{SOURCE10}" \
-Dgroovy_SOURCE_DIR="%{_datadir}/groovy" \
-Dapache-commons-lang_SOURCE_DIR="%{_javadir}" \
-Dapache-commons-text_SOURCE_DIR="%{_javadir}/apache-commons-text" \
-DENABLE_INTERNAL_GTEST=OFF \
-DENABLE_INTERNAL_KISSFFT=OFF \
-DENABLE_INTERNAL_TINYXML2=OFF \
-DENABLE_INTERNAL_CROSSGUID=OFF \
-DENABLE_AIRTUNES=ON \
-DENABLE_DVDCSS=ON \
-DENABLE_PULSEAUDIO=OFF \
-DENABLE_PIPEWIRE=OFF \
-DENABLE_MYSQLCLIENT=OFF \
-DENABLE_MARIADBCLIENT=ON \
-DENABLE_GOLD=ON \
-DLIBDVDNAV_URL="%{SOURCE13}" \
-DLIBDVDREAD_URL="%{SOURCE14}" \
-DLIBDVDCSS_URL="%{SOURCE15}" \
%ifarch %ix86
-DTAGLIB_URL="%{SOURCE16}" \
-DENABLE_INTERNAL_TAGLIB=ON \
%endif
-DENABLE_INTERNAL_UTFCPP=ON \
-DUTFCPP_URL="%{SOURCE17}" \
-DENABLE_OPENGLES=OFF \
-DENABLE_VAAPI=ON \
-DENABLE_VDPAU=OFF \
-DUSE_LTO=ON \
-DBUILD_SHARED_LIBS=1 \
-DENABLE_TESTING=OFF \
-DENABLE_DEBUGFISSION=OFF
%cmake_build
%install
%cmake_install
# Kodi-Home
install -d -m 750 %{buildroot}/var/lib/%{name}
# PolicyKit
install -d -m 750 %{buildroot}/%{_sysconfdir}/polkit-1/rules.d/
install -m 644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/polkit-1/rules.d/
# System user
install -d -m 0755 %{buildroot}%{_sysusersdir}
install -m 644 %{SOURCE7} %{buildroot}%{_sysusersdir}/system-user-%{name}.conf
# Log-Directory
install -d -m 0775 %{buildroot}/var/log/%{name}
# fix permissions
chmod +x %{buildroot}%{_kodi_addons_dir}/service.xbmc.versioncheck/resources/lib/version_check/service.py
chmod +x %{buildroot}%{_kodi_addons_dir}/service.xbmc.versioncheck/resources/lib/version_check/viewer.py
# remove the doc files from unversioned /usr/share/doc/kodi, they should be in versioned docdir
rm -r %{buildroot}/%{_datadir}/doc/
# remove win32 source files
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.addon/dlfcn-win32.cpp
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.addon/dlfcn-win32.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.addon/dlfcn-win32.cpp
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.addon/dlfcn-win32.h
# remove duplicate header files
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.addon/libXBMC_addon.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.addon/libXBMC_addon.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.codec/libXBMC_codec.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.codec/libXBMC_codec.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.gui/libXBMC_gui.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.gui/libXBMC_gui.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.pvr/libXBMC_pvr.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.xbmc.pvr/libXBMC_pvr.h
rm -f %{buildroot}%{_kodi_addons_dir}/library.kodi.guilib/libKODI_guilib.h
# remove random crap that got installed anyway
rm -rf %{buildroot}%{_datadir}/wayland-sessions
# copy manpages
install -m 644 -D docs/manpages/kodi-standalone.1 %{buildroot}%{_mandir}/man1/kodi-standalone.1
install -m 644 -D docs/manpages/kodi.bin.1 %{buildroot}%{_mandir}/man1/kodi.1
# desktop-file
desktop-file-install \
--dir=%{buildroot}%{_datadir}/applications \
%{buildroot}%{_datadir}/applications/kodi.desktop
# Logrotate
install -d -m 0755 %{buildroot}/%{_sysconfdir}/logrotate.d
install -m 644 %{SOURCE8} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}
%fdupes %{buildroot}/%{_datadir}/kodi/
%pre -n system-user-%{name} -f %{name}.pre
%pre
#service_add_pre #{name}.service
%post
#service_add_post #{name}.service
%fillup_only -n %{name}
%preun
#service_del_preun #{name}.service
%postun
#service_del_postun #{name}.service
%files
%defattr(-,root,root,-)
%exclude %{_datadir}/%{name}/cmake/
%exclude %{_libdir}/%{name}/cmake/
#dir #{_datadir}/wayland-sessions
#dir #{_datadir}/doc/packages/#{name}
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/system
%dir %{_libdir}/python%{_python_version}/site-packages/%{name}
%dir /usr/lib/firewalld
%dir /usr/lib/firewalld/services
%dir %{_libdir}/%{name}/system/players
%dir %{_libdir}/%{name}/system/players/VideoPlayer
%dir %attr(0750,kodi,kodi) /var/lib/kodi
%dir %attr(0770,root,kodi) /var/log/%{name}
%{_bindir}/*
%{_datadir}/%{name}
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor
%{_datadir}/pixmaps/*
%{_datadir}/xsessions/*.desktop
%{_datadir}/metainfo/org.xbmc.kodi.metainfo.xml
#{_datadir}/doc/packages/#{name}/*
%{_libdir}/%{name}/%{name}*
%{_libdir}/%{name}/system/*.so
%{_libdir}/python%{_python_version}/site-packages/%{name}/*
%{_libdir}/%{name}/system/players/VideoPlayer/libdvdnav-*-linux.so
/usr/lib/firewalld/services/%{name}-*.xml
%if 0%{?suse_version} <= 1600
%{_sbindir}/rc%{name}
%endif
%{_mandir}/man1/kodi.1.gz
%{_mandir}/man1/kodi-standalone.1.gz
%config %{_sysconfdir}/logrotate.d/%{name}
%config %{_sysconfdir}/polkit-1/rules.d/30-%{name}-power-options.rules
%files devel
%defattr(-,root,root,-)
%dir %{_libdir}/%{name}/cmake
%dir %{_datadir}/%{name}/cmake
%{_includedir}/%{name}
%{_datadir}/%{name}/cmake
%dir %{_libdir}/%{name}/cmake
%{_libdir}/%{name}/cmake/*
%files -n system-user-%{name}
%defattr(-,root,root)
%{_sysusersdir}/system-user-%{name}.conf
%changelog