File spotify-client.spec of Package spotify-client

#source: http://download.opensuse.org/repositories/home:/bosconovic:/spotify-client/
#download source: https://repository-origin.spotify.com/pool/non-free/s/spotify-client/

%global __strip /bin/true
%global __requires_exclude ^(libcef\\.so.*|libwidevine.*\\.so.*|libcurl-gnutls\\.so\\..*)$


# If firewalld macro is not defined, define it here:
%{!?firewalld_reload:%global firewalld_reload test -f /usr/bin/firewall-cmd && firewall-cmd --reload --quiet || :}


Name:           spotify-client
Summary:        Spotify music player native client
Version:        1.2.26.1187.g36b715a1
Release:        0
Group:          Productivity/Multimedia/Sound/Players
License:        https://www.spotify.com/legal/end-user-agreement
URL:            http://www.spotify.com/
ExclusiveArch:  x86_64 %{ix86}
Source0:        http://repository.spotify.com/pool/non-free/s/%{name}/%{name}_%{version}_amd64.deb 
Source2:        spotify-wrapper
Source3:        spotify.xml
Source4:        spotify.appdata.xml
Source5:        spotify.protocol
Source6:        spotifywm-master.tar.gz
Source10:       README.SUSE
BuildRequires:  libglvnd
BuildRequires:  libX11-devel
BuildRequires:  gcc-c++
BuildRequires:  fdupes
BuildRequires:  chrpath
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  desktop-file-utils
BuildRequires:  pkgconfig(appstream-glib)
Requires:       libcurl.so.4()(64bit)
Requires:       libgtk-2_0-0
Requires:       libX11.so.6()(64bit)
Requires:       libXtst.so.6()(64bit)
Requires:       libnotify-tools
Requires:       libsmime3.so()(64bit)
Requires:       zenity
Requires:       mozilla-nss
Requires:       mozilla-nspr
Requires:       libopenssl1_0_0
Requires:       libpng12-0
Requires:       libatomic1
Requires:       noto-sans-fonts
Requires:       libayatana-appindicator3-1
# jap/kr font support
Requires:       noto-sans-kr-fonts
Requires:       noto-sans-jp-fonts

Recommends:     libmp3lame0
Recommends:     ffmpeg

Provides:       spotify = %{version}

BuildRoot: %{_tmppath}/%{name}-%{version}-build


%description
Think of Spotify as your new music collection. Your library. Only this time your
collection is vast: millions of tracks and counting. Spotify comes in all shapes
and sizes, available for your PC, Mac, home audio system and mobile phone.
Wherever you go, your music follows you. And because the music plays live,
there’s no need to wait for downloads and no big dent in your hard drive.

%prep
%setup -q -c -T %{name}_%{version}

# unpack deb
ar x %{SOURCE0}
# unpack data
tar -xzf data.tar.gz
# remove used files
rm data.tar.gz control.tar.gz debian-binary

%define _use_internal_dependency_generator 0
%define __find_requires %_builddir/%{name}-%{version}/find-requires.sh
cat >%__find_requires <<'EOF'
#!/bin/sh
EOF
chmod +x %__find_requires


chrpath -d \
    .%{_datadir}/spotify/spotify

cp %{SOURCE10} .

%build
export CC=gcc
export CXX=g++

tar -xzf %{SOURCE6}
cd spotifywm-master
make %{?_smp_mflags}

%install
mkdir -p %{buildroot}%{_libdir}/%{name}

# Program resources - 512x512 icon along main executable is needed by the client
cp -frp \
    .%{_datadir}/spotify/*.{pak,dat,bin} \
    .%{_datadir}/spotify/{Apps,locales} \
    %{buildroot}%{_libdir}/%{name}
install -p -D -m 644 .%{_datadir}/spotify/icons/spotify-linux-512.png \
    %{buildroot}%{_libdir}/%{name}/icons/spotify-linux-512.png

# Binaries
install -p -m 755 \
    .%{_datadir}/spotify/*.so \
    .%{_datadir}/spotify/spotify \
    %{buildroot}%{_libdir}/%{name}/

# Wrapper script
mkdir -p %{buildroot}%{_bindir}
cat %{SOURCE2} | sed -e 's|INSTALL_DIR|%{_libdir}/%{name}|g' \
    > %{buildroot}%{_bindir}/spotify
chmod +x %{buildroot}%{_bindir}/spotify

# Desktop file
install -m 0644 -D -p .%{_datadir}/spotify/spotify.desktop \
    %{buildroot}%{_datadir}/applications/spotify.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/spotify.desktop

# Icons
for size in 16 22 24 32 48 64 128 256 512; do
    install -p -D -m 644 .%{_datadir}/spotify/icons/spotify-linux-${size}.png \
        %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/%{name}.png
done

# Firewalld rules
install -D -m 644 -p %{SOURCE3} \
    %{buildroot}%{_libexecdir}/firewalld/services/spotify.xml

mkdir -p %{buildroot}%{_datadir}/appdata
install -p -m 0644 %{SOURCE4} %{buildroot}%{_datadir}/appdata/
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/spotify.appdata.xml

# The launcher will download the native client which requires libcurl-gnutls.so.4
mkdir -p %{buildroot}%{_libdir}
ln -s -f libcurl.so.4 %{buildroot}%{_libdir}/libcurl-gnutls.so.4

# Copy protocol file for KDE
mkdir -p %{buildroot}%{_datadir}/kservices5
install -D -m 644 -p %{SOURCE5} %{buildroot}%{_datadir}/kservices5/spotify.protocol

# Set kwin fix patch
mkdir -p %{buildroot}%{_libdir}/%{name}
rm -f spotifywm.so-%{version}-*.x86_64.debug
install -D -m 644 -p spotifywm-master/spotifywm.so %{buildroot}%{_libdir}/%{name}/spotifywm.so

%fdupes %{buildroot}%{_prefix}

%post
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :

#%firewalld_reload

%postun
if [ $1 -eq 0 ] ; then
    /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
    %{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi

%posttrans
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

%files
%doc README.SUSE
%{_bindir}/spotify
%{_datadir}/applications/spotify.desktop
%dir %{_datadir}/icons/hicolor
%dir %{_datadir}/icons/hicolor/*
%dir %{_datadir}/icons/hicolor/*/apps
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%{_datadir}/appdata/spotify.appdata.xml
%{_datadir}/kservices5
%{_datadir}/kservices5/spotify.protocol
%{_libdir}/%{name}
%{_libdir}/%{name}/spotifywm.so
%{_libdir}/libcurl-gnutls.so.4
%dir %{_libexecdir}/firewalld
%dir %{_libexecdir}/firewalld/services
%{_libexecdir}/firewalld/services/spotify.xml

%changelog
openSUSE Build Service is sponsored by