diff options
Diffstat (limited to 'pkgs/applications/audio/spotify/default.nix')
-rw-r--r-- | pkgs/applications/audio/spotify/default.nix | 87 |
1 files changed, 72 insertions, 15 deletions
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix index 874cc321f8be..59bea8fc1944 100644 --- a/pkgs/applications/audio/spotify/default.nix +++ b/pkgs/applications/audio/spotify/default.nix @@ -1,24 +1,64 @@ { fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper, openssl, freetype , glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng, GConf -, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer, udev }: +, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer, udev, fontconfig +, dbus, expat }: assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; let - version = "0.9.4.183"; + version = if stdenv.system == "i686-linux" + then "0.9.4.183.g644e24e.428" + else "0.9.10.17.g4129e1c.78"; + qt4webkit = if stdenv.system == "i686-linux" then fetchurl { - name = "libqtwebkit4_2.2_i386.deb"; - url = http://mirrors.us.kernel.org/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_i386.deb; + name = "libqtwebkit4_2.3.2_i386.deb"; + url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_i386.deb; sha256 = "0hi6cwx2b2cwa4nv5phqqw526lc8p9x7kjkcza9x47ny3npw2924"; } else fetchurl { - name = "libqtwebkit4_2.2_amd64.deb"; - url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_amd64.deb; - sha256 = "0bvy6qz9y19ck391z8c049v07y4vdyvgykpxi7x1nvn078p1imiw"; + name = "libqtwebkit4_2.3.2_amd64.deb"; + url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_amd64.deb; + sha256 = "0sac88avfivwkfhmd6fik7ili8fdznqas6741dbspf9mfnawbwch"; }; + + deps = [ + alsaLib + atk + cairo + cups + dbus + expat + fontconfig + freetype + GConf + gdk_pixbuf + glib + gst_plugins_base + gstreamer + gtk + libgcrypt + libpng + nss + pango + qt4 + sqlite + stdenv.gcc.gcc + xlibs.libX11 + xlibs.libXcomposite + xlibs.libXdamage + xlibs.libXext + xlibs.libXfixes + xlibs.libXi + xlibs.libXrandr + xlibs.libXrender + xlibs.libXrender + xlibs.libXScrnSaver + #xlibs.libXss + ]; + in stdenv.mkDerivation { @@ -27,13 +67,13 @@ stdenv.mkDerivation { src = if stdenv.system == "i686-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g644e24e.428-1_i386.deb"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_i386.deb"; sha256 = "1wl6v5x8vm74h5lxp8fhvmih8l122aadsf1qxvpk0k3y6mbx0ifa"; } else if stdenv.system == "x86_64-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g644e24e.428-1_amd64.deb"; - sha256 = "1yniln6iswrrrny01qr2w5zcvam0vnrvy9mwbnk9i14i2ch0f3fx"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_amd64.deb"; + sha256 = "1a4vn2ij3nghnc0fq3nsyb95gwhaw4zabdq6jd52hxz8iv31pn1z"; } else throw "Spotify not supported on this platform."; @@ -51,34 +91,51 @@ stdenv.mkDerivation { # Work around Spotify referring to a specific minor version of # OpenSSL. mkdir $out/lib - ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8 - ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8 + ln -s ${nss}/lib/libnss3.so $out/lib/libnss3.so.1d ln -s ${nss}/lib/libnssutil3.so $out/lib/libnssutil3.so.1d ln -s ${nss}/lib/libsmime3.so $out/lib/libsmime3.so.1d + + ${if stdenv.system == "x86_64-linux" then '' + ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.1.0.0 + ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0 + ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so + ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so + '' else '' + ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8 + ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8 ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so.0d ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so.0d + ''} # Work around Spotify trying to open libudev.so.0 (which we don't have) ln -s ${udev}/lib/libudev.so.1 $out/lib/libudev.so.0 mkdir -p $out/bin + rpath="$out/spotify-client/Data:$out/lib:$out/spotify-client:${stdenv.gcc.gcc}/lib64" + ln -s $out/spotify-client/spotify $out/bin/spotify + + patchelf \ + --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + --set-rpath $rpath $out/spotify-client/spotify + patchelf \ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ - --set-rpath $out/spotify-client/Data:$out/lib:$out/spotify-client:${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc freetype glib pango cairo atk gdk_pixbuf gtk GConf cups sqlite xlibs.libXdamage ]}:${stdenv.gcc.gcc}/lib64 \ - $out/spotify-client/spotify + --set-rpath $rpath $out/spotify-client/Data/SpotifyHelper dpkg-deb -x ${qt4webkit} ./ mkdir -p $out/lib/ cp -v usr/lib/*/* $out/lib/ preload=$out/libexec/spotify/libpreload.so + librarypath="${stdenv.lib.makeLibraryPath deps}:$out/lib" mkdir -p $out/libexec/spotify gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC - wrapProgram $out/bin/spotify --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ GConf libpng cups libgcrypt sqlite gst_plugins_base gstreamer xlibs.libXdamage ]}:$out/lib" + wrapProgram $out/bin/spotify --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "$librarypath" + wrapProgram $out/spotify-client/Data/SpotifyHelper --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "$librarypath" # Desktop file mkdir -p "$out/share/applications/" |