mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 14:54:29 +01:00
spotify: 1.0.80.480.g51b03ac3-13 -> 1.0.80.474.gef6b503e-7
The purpose of this update (or downgrade?) is to switch the spotify source to one more reliable. The current source only contains the last few releases, while the new source retains all old releases.
This commit is contained in:
parent
4758fe7c56
commit
e875678f8e
2 changed files with 90 additions and 10 deletions
|
@ -1,13 +1,18 @@
|
||||||
{ fetchurl, stdenv, dpkg, xorg, alsaLib, makeWrapper, openssl, freetype
|
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
|
||||||
, glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng
|
, glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng
|
||||||
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 }:
|
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 }:
|
||||||
|
|
||||||
let
|
let
|
||||||
# Please update the stable branch!
|
# "rev" decides what is actually being downloaded
|
||||||
# Latest version number can be found at:
|
version = "1.0.80.474.gef6b503e-7";
|
||||||
# http://repository-origin.spotify.com/pool/non-free/s/spotify-client/
|
# To get the latest stable revision:
|
||||||
# Be careful not to pick the testing version.
|
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
|
||||||
version = "1.0.80.480.g51b03ac3-13";
|
# To get general information:
|
||||||
|
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
|
||||||
|
# More exapmles of api usage:
|
||||||
|
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
|
||||||
|
rev = "16";
|
||||||
|
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
alsaLib
|
alsaLib
|
||||||
|
@ -49,12 +54,20 @@ in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "spotify-${version}";
|
name = "spotify-${version}";
|
||||||
|
|
||||||
|
# fetch from snapcraft instead of the debian repository most repos fetch from.
|
||||||
|
# That is a bit more cumbersome. But the debian repository only keeps the last
|
||||||
|
# two versions, while snapcraft should provide versions indefinately:
|
||||||
|
# https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
|
||||||
|
|
||||||
|
# This is the next-best thing, since we're not allowed to re-distribute
|
||||||
|
# spotify ourselves:
|
||||||
|
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
|
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
|
||||||
sha256 = "e32f4816ae79dbfa0c14086e76df3bc83d526402aac1dbba534127fc00fe50ea";
|
sha512 = "45b7ab574b30fb368e0b6f4dd60addbfd1ddc02173b4f98b31c524eed49073432352a361e75959ce8e2f752231e93c79ca1b538c4bd295c935d1e2e0585d147f";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ dpkg makeWrapper ];
|
buildInputs = [ squashfsTools makeWrapper ];
|
||||||
|
|
||||||
doConfigure = false;
|
doConfigure = false;
|
||||||
doBuild = false;
|
doBuild = false;
|
||||||
|
@ -63,7 +76,23 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
unpackPhase = ''
|
unpackPhase = ''
|
||||||
runHook preUnpack
|
runHook preUnpack
|
||||||
dpkg-deb -x $src .
|
unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
|
||||||
|
cd squashfs-root
|
||||||
|
if ! grep -q 'grade: stable' meta/snap.yaml; then
|
||||||
|
# Unfortunately this check is not reliable: At the moment (2018-07-26) the
|
||||||
|
# latest version in the "edge" channel is also marked as stable.
|
||||||
|
echo "The snap package is marked as unstable:"
|
||||||
|
grep 'grade: ' meta/snap.yaml
|
||||||
|
echo "You probably chose the wrong revision."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! grep -q '${version}' meta/snap.yaml; then
|
||||||
|
echo "Package version differs from version found in snap metadata:"
|
||||||
|
grep 'version: ' meta/snap.yaml
|
||||||
|
echo "While the nix package specifies: ${version}."
|
||||||
|
echo "You probably chose the wrong revision or forgot to update the nix version."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
runHook postUnpack
|
runHook postUnpack
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -75,6 +104,8 @@ stdenv.mkDerivation {
|
||||||
mkdir -p $libdir
|
mkdir -p $libdir
|
||||||
mv ./usr/* $out/
|
mv ./usr/* $out/
|
||||||
|
|
||||||
|
cp meta/snap.yaml $out
|
||||||
|
|
||||||
# Work around Spotify referring to a specific minor version of
|
# Work around Spotify referring to a specific minor version of
|
||||||
# OpenSSL.
|
# OpenSSL.
|
||||||
|
|
||||||
|
|
49
pkgs/applications/audio/spotify/update.sh
Normal file
49
pkgs/applications/audio/spotify/update.sh
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
channel="stable" # stable/candidate/edge
|
||||||
|
nixpkgs="$(git rev-parse --show-toplevel)"
|
||||||
|
spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# create bash array from snap info
|
||||||
|
snap_info=($(
|
||||||
|
curl -H 'X-Ubuntu-Series: 16' \
|
||||||
|
"https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=$channel" \
|
||||||
|
| jq --raw-output \
|
||||||
|
'.revision,.download_sha512,.version,.last_updated'
|
||||||
|
))
|
||||||
|
|
||||||
|
revision="${snap_info[0]}"
|
||||||
|
sha512="${snap_info[1]}"
|
||||||
|
version="${snap_info[2]}"
|
||||||
|
last_updated="${snap_info[3]}"
|
||||||
|
|
||||||
|
# find the last commited version
|
||||||
|
version_pre=$(
|
||||||
|
git grep 'version\s*=' HEAD "$spotify_nix" \
|
||||||
|
| sed -Ene 's/.*"(.*)".*/\1/p'
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ "$version_pre" = "$version" ]]; then
|
||||||
|
echo "Spotify is already up ot date"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Updating from ${version_pre} to ${version}, released on ${last_updated}"
|
||||||
|
|
||||||
|
# search-andreplace revision, hash and version
|
||||||
|
sed --regexp-extended \
|
||||||
|
-e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
|
||||||
|
-e 's/sha512\s*=\s*".{128}"\s*;/sha512 = "'"${sha512}"'";/' \
|
||||||
|
-e 's/version\s*=\s*".*"\s*;/version = "'"${version}"'";/' \
|
||||||
|
-i "$spotify_nix"
|
||||||
|
|
||||||
|
if ! nix-build -A spotify "$nixpkgs"; then
|
||||||
|
echo "The updated spotify failed to build."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git add "$spotify_nix"
|
||||||
|
# show diff for review
|
||||||
|
git diff HEAD
|
||||||
|
# prepare commit message, but allow edit
|
||||||
|
git commit --edit --message "spotify: $version_pre -> $version"
|
Loading…
Reference in a new issue