clementine: fix Spotify support

This commit is contained in:
Thomas Tuegel 2015-05-04 21:07:56 -05:00
parent 7931799a0f
commit 256a372b08
2 changed files with 107 additions and 41 deletions

View File

@ -0,0 +1,25 @@
From d9ebe7ec09a48b1ea505ccc33686b72642f083f4 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 4 May 2015 19:59:38 -0500
Subject: [PATCH] Runtime selection of Spotify blob
---
src/internet/spotifyservice.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/internet/spotifyservice.cpp b/src/internet/spotifyservice.cpp
index 543744e..d987a36 100644
--- a/src/internet/spotifyservice.cpp
+++ b/src/internet/spotifyservice.cpp
@@ -65,7 +65,7 @@ SpotifyService::SpotifyService(Application* app, InternetModel* parent)
system_blob_path_ = QCoreApplication::applicationDirPath() +
"/../PlugIns/clementine-spotifyblob";
#else
- system_blob_path_ = QCoreApplication::applicationDirPath() +
+ system_blob_path_ = qgetenv("CLEMENTINE_SPOTIFYBLOB") +
"/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX;
#endif
--
2.3.6

View File

@ -1,16 +1,15 @@
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base { stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
, liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist , liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist
, usbmuxd, libmtp, gvfs, libcdio, protobuf, libspotify, qca2, pkgconfig , usbmuxd, libmtp, gvfs, libcdio, libspotify, protobuf, qca2, pkgconfig
, sparsehash, config, makeWrapper, runCommand, gst_plugins }: , sparsehash, config, makeWrapper, runCommand, gst_plugins }:
let let
withSpotify = config.clementine.spotify or false;
version = "1.2.3"; version = "1.2.3";
exeName = "clementine"; exeName = "clementine";
unwrapped = stdenv.mkDerivation {
name = "clementine-unwrapped-${version}";
src = fetchurl { src = fetchurl {
url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz; url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz;
sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx"; sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx";
@ -19,6 +18,7 @@ let
patches = [ patches = [
./clementine-1.2.1-include-paths.patch ./clementine-1.2.1-include-paths.patch
./clementine-dbus-namespace.patch ./clementine-dbus-namespace.patch
./clementine-spotify-blob.patch
]; ];
buildInputs = [ buildInputs = [
@ -46,20 +46,60 @@ let
usbmuxd usbmuxd
]; ];
unwrapped = stdenv.mkDerivation {
name = "clementine-unwrapped-${version}";
inherit patches src buildInputs;
enableParallelBuilding = true; enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = "http://www.clementine-player.org";
description = "A multiplatform music player";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
};
};
# Spotify blob for Clementine
blob = stdenv.mkDerivation {
name = "clementine-blob-${version}";
# Use the same patches and sources as Clementine
inherit patches src;
buildInputs = buildInputs ++ [ libspotify ];
# Only build and install the Spotify blob
preBuild = ''
cd ext/clementine-spotifyblob
'';
postInstall = ''
mkdir -p $out/libexec/clementine
mv $out/bin/clementine-spotifyblob $out/libexec/clementine
rmdir $out/bin
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = "http://www.clementine-player.org";
description = "Spotify integration for Clementine";
# The blob itself is Apache-licensed, although libspotify is unfree.
license = licenses.asl20;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
};
}; };
in in
with stdenv.lib;
runCommand "clementine-${version}" runCommand "clementine-${version}"
{ {
buildInputs = [ unwrapped makeWrapper ] ++ gst_plugins; inherit blob unwrapped;
buildInputs = [ makeWrapper ] ++ gst_plugins; # for the setup-hooks
dontPatchELF = true; dontPatchELF = true;
dontStrip = true; dontStrip = true;
meta = with stdenv.lib; { meta = {
homepage = "http://www.clementine-player.org"; homepage = "http://www.clementine-player.org";
description = "A multiplatform music player" description = "A multiplatform music player"
+ " (with gstreamer plugins: " + " (" + (optionalString withSpotify "with Spotify, ")
+ "with gstreamer plugins: "
+ concatStrings (intersperse ", " (map (x: x.name) gst_plugins)) + concatStrings (intersperse ", " (map (x: x.name) gst_plugins))
+ ")"; + ")";
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
@ -69,6 +109,7 @@ runCommand "clementine-${version}"
} }
'' ''
mkdir -p $out/bin mkdir -p $out/bin
makeWrapper "${unwrapped}/bin/${exeName}" "$out/bin/${exeName}" \ makeWrapper "$unwrapped/bin/${exeName}" "$out/bin/${exeName}" \
${optionalString withSpotify "--set CLEMENTINE_SPOTIFYBLOB \"$blob/libexec/clementine\""} \
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
'' ''