Improvements to the clementine package.
- Pass the gstreamer plugins as a list attribute instead of individual attributes. + This should allow for greater customization (e.g.: a user can add / remove plugins by overriding the plugin list attribute). This is the same technique as used for wrapping chrome with gstreamer plugins. - Moved integration of gstreamer plugins, spotify library and clementine into a wrapper derivation. + This should allow a user to change the gstreamer plugin set and activate / deactivate the spotify plugin without triggering a whole rebuild of the clementine sources (which is pretty long).
This commit is contained in:
parent
4463bad2dd
commit
22faf646f1
@ -1,13 +1,17 @@
|
|||||||
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
|
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
|
||||||
, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg
|
|
||||||
, 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, protobuf, libspotify, qca2, pkgconfig
|
||||||
, sparsehash, config, makeWrapper }:
|
, sparsehash, config, makeWrapper, gst_plugins }:
|
||||||
|
|
||||||
let withSpotify = config.clementine.spotify or false;
|
let
|
||||||
in
|
version = "1.2.3";
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "clementine-1.2.3";
|
withSpotify = config.clementine.spotify or false;
|
||||||
|
|
||||||
|
wrappedExeName = "clementine";
|
||||||
|
|
||||||
|
wrapped = stdenv.mkDerivation {
|
||||||
|
name = "clementine-wrapped-${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;
|
||||||
@ -23,9 +27,6 @@ stdenv.mkDerivation {
|
|||||||
gettext
|
gettext
|
||||||
glew
|
glew
|
||||||
gst_plugins_base
|
gst_plugins_base
|
||||||
gst_plugins_good
|
|
||||||
gst_plugins_ugly
|
|
||||||
gst_ffmpeg
|
|
||||||
gstreamer
|
gstreamer
|
||||||
gvfs
|
gvfs
|
||||||
libcdio
|
libcdio
|
||||||
@ -33,7 +34,6 @@ stdenv.mkDerivation {
|
|||||||
liblastfm
|
liblastfm
|
||||||
libmtp
|
libmtp
|
||||||
libplist
|
libplist
|
||||||
makeWrapper
|
|
||||||
pkgconfig
|
pkgconfig
|
||||||
protobuf
|
protobuf
|
||||||
qca2
|
qca2
|
||||||
@ -43,18 +43,46 @@ stdenv.mkDerivation {
|
|||||||
sqlite
|
sqlite
|
||||||
taglib
|
taglib
|
||||||
usbmuxd
|
usbmuxd
|
||||||
] ++ stdenv.lib.optional withSpotify libspotify;
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
};
|
||||||
|
|
||||||
postInstall = ''
|
in
|
||||||
wrapProgram $out/bin/clementine \
|
|
||||||
--set GST_PLUGIN_SYSTEM_PATH "$GST_PLUGIN_SYSTEM_PATH"
|
stdenv.mkDerivation {
|
||||||
|
name = "clementine-${version}";
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
wrapped
|
||||||
|
makeWrapper
|
||||||
|
] ++ gst_plugins
|
||||||
|
++ stdenv.lib.optional withSpotify libspotify;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -a ${wrapped}/* $out
|
||||||
|
chmod -R u+w-t $out
|
||||||
|
|
||||||
|
wrapProgram "$out/bin/${wrappedExeName}" \
|
||||||
|
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
preferLocalBuild = true;
|
||||||
|
dontPatchELF = true;
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = "http://www.clementine-player.org";
|
homepage = "http://www.clementine-player.org";
|
||||||
description = "A multiplatform music player";
|
description = "A multiplatform music player"
|
||||||
|
+ " ("
|
||||||
|
+ concatStrings (optionals (withSpotify) ["with spotify, "])
|
||||||
|
+ "with gstreamer plugins: "
|
||||||
|
+ concatStrings (intersperse ", " (map (x: x.name) gst_plugins))
|
||||||
|
+ ")";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = [ maintainers.ttuegel ];
|
maintainers = [ maintainers.ttuegel ];
|
||||||
|
@ -976,6 +976,7 @@ let
|
|||||||
|
|
||||||
clementine = callPackage ../applications/audio/clementine {
|
clementine = callPackage ../applications/audio/clementine {
|
||||||
boost = boost156;
|
boost = boost156;
|
||||||
|
gst_plugins = [ gst_plugins_base gst_plugins_good gst_plugins_ugly gst_ffmpeg ];
|
||||||
};
|
};
|
||||||
|
|
||||||
ciopfs = callPackage ../tools/filesystems/ciopfs { };
|
ciopfs = callPackage ../tools/filesystems/ciopfs { };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user