Blob Blame History Raw
%define version_no_tilde() %{lua:
    ver = rpm.expand('%version')
    ver = ver:gsub('~', '')
    print(ver)
}

Name:           clementine
Version:        1.4.0~rc2
Release:        %autorelease
Summary:        A music player and library organizer

# 3rdparty/taglib, src/widgets/fancytabwidget and src/widgets/stylehelper: LGPLv2
# 3rdparty/utf8-cpp: Boost
License:        GPLv3+ and GPLv2+ and Boost and LGPLv2
URL:            https://www.clementine-player.org/
Source0:        https://github.com/clementine-player/Clementine/archive/%{version_no_tilde}/%{name}-%{version_no_tilde}.tar.gz

# Use qt5 libraries (qtiocompressor)
Patch11:        clementine-qt5-libraries.patch

BuildConflicts: pkgconfig(gmock) >= 1.6
BuildConflicts: pkgconfig(gtest)
BuildRequires:  boost-devel
BuildRequires:  cmake
BuildRequires:  desktop-file-utils
BuildRequires:  gcc-c++
BuildRequires:  gettext
BuildRequires:  libappstream-glib
BuildRequires:  liblastfm-qt5-devel
BuildRequires:  pkgconfig(alsa)
BuildRequires:  pkgconfig(cryptopp)
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(fftw3)
BuildRequires:  pkgconfig(gio-2.0)
BuildRequires:  pkgconfig(gio-unix-2.0)
BuildRequires:  pkgconfig(glib-2.0)
BuildRequires:  pkgconfig(glu)
BuildRequires:  pkgconfig(gstreamer-1.0)
BuildRequires:  pkgconfig(gstreamer-app-1.0)
BuildRequires:  pkgconfig(gstreamer-audio-1.0)
BuildRequires:  pkgconfig(gstreamer-base-1.0)
BuildRequires:  pkgconfig(gstreamer-tag-1.0)
BuildRequires:  pkgconfig(gthread-2.0)
BuildRequires:  pkgconfig(libcdio)
BuildRequires:  pkgconfig(libchromaprint)
BuildRequires:  pkgconfig(libmtp)
BuildRequires:  pkgconfig(libmygpo-qt5)
BuildRequires:  pkgconfig(libnotify)
BuildRequires:  pkgconfig(libplist-2.0)
BuildRequires:  pkgconfig(libprojectM) >= 2.0.1-7
BuildRequires:  pkgconfig(libpulse)
BuildRequires:  pkgconfig(libsparsehash)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  pkgconfig(protobuf)
BuildRequires:  pkgconfig(Qt5Concurrent)
BuildRequires:  pkgconfig(Qt5Core)
BuildRequires:  pkgconfig(Qt5DBus)
BuildRequires:  pkgconfig(Qt5Gui)
BuildRequires:  pkgconfig(Qt5Network)
BuildRequires:  pkgconfig(Qt5OpenGL)
BuildRequires:  pkgconfig(Qt5Sql)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(Qt5X11Extras)
BuildRequires:  pkgconfig(Qt5Xml)
BuildRequires:  pkgconfig(QxtCore-qt5)
BuildRequires:  pkgconfig(sqlite3) >= 3.7
BuildRequires:  pkgconfig(taglib) >= 1.11
BuildRequires:  pkgconfig(udisks)
BuildRequires:  qt5-linguist
BuildRequires:  qtiocompressor-devel
BuildRequires:  qtsingleapplication-qt5-devel >= 2.6.1-2
BuildRequires:  qtsinglecoreapplication-qt5-devel
BuildRequires:  sha2-devel
%ifnarch s390 s390x
BuildRequires:  pkgconfig(libgpod-1.0)
BuildRequires:  pkgconfig(libimobiledevice-1.0)
%endif

Requires:       gstreamer1-plugins-good
Requires:       hicolor-icon-theme
Requires:       qtiocompressor >= 2.3.1-17

Provides:       bundled(utf8-cpp)

%description
Clementine is a multi-platform music player. It is inspired by Amarok 1.4,
focusing on a fast and easy-to-use interface for searching and playing your
music.

%prep
%autosetup -p1 -n Clementine-%{version_no_tilde}

# Remove most 3rdparty libraries
# Unbundle taglib next release:
# https://github.com/taglib/taglib/issues/837#issuecomment-428389347
mv 3rdparty/{gmock,qocoa,qsqlite,utf8-cpp}/ .
rm -fr 3rdparty/*
mv {gmock,qocoa,qsqlite,utf8-cpp}/ 3rdparty/
# Not needed and fails build
sed -i "/add_dependencies(clementine_lib qtsingleapplication)/d" src/CMakeLists.txt
# Use system-wide qtiocompressor
sed -i 's|#include "3rdparty/qtiocompressor/qtiocompressor.h"|#include "qtiocompressor.h"|' src/internet/spotifywebapi/spotifywebapiservice.cpp
# Fix for GCC 12, to send upstream when root cause is determined
sed -i 's|local_server_name_ = qApp->applicationName().toLower();|local_server_name_ = QString(qApp->applicationName()).toLower();|' ext/libclementine-common/core/workerpool.h

%build
# QT applications need to avoid local binding and copy relocations.  Forcing them to build with
# -fPIC solves that problem
%global optflags %{optflags} -fPIC
%{cmake} \
  -DBUILD_WERROR:BOOL=OFF \
  -DCMAKE_BUILD_TYPE:STRING=Release \
  -DUSE_SYSTEM_QTSINGLEAPPLICATION=1 \
  -DUSE_SYSTEM_PROJECTM=1 \
  -DUSE_SYSTEM_QXT=1
%cmake_build

%install
%cmake_install

%check
desktop-file-validate %{buildroot}%{_datadir}/applications/org.clementine_player.Clementine.desktop
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/org.clementine_player.Clementine.appdata.xml

%files
%license COPYING
%doc Changelog
%{_bindir}/clementine
%{_bindir}/clementine-tagreader
%{_metainfodir}/org.clementine_player.Clementine.appdata.xml
%{_datadir}/applications/org.clementine_player.Clementine.desktop
%{_datadir}/icons/hicolor/*/apps/org.clementine_player.Clementine.*
%{_datadir}/kservices5/clementine-*.protocol

%changelog
%autochangelog