Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 2f0ee4bd0bc3
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 41582c7a0232
Choose a head ref
  • 1 commit
  • 3 files changed
  • 1 contributor

Commits on Apr 20, 2020

  1. Verified

    This commit was signed with the committer’s verified signature.
    millotp Pierre Millot
    Copy the full SHA
    41582c7 View commit details
41 changes: 9 additions & 32 deletions pkgs/applications/video/plex-media-player/default.nix
Original file line number Diff line number Diff line change
@@ -5,45 +5,20 @@ let
# During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`,
# which then downloads a handful of web client-related files. To enable
# sandboxed builds, we manually download them and save them so these files
# are fetched ahead-of-time instead of during the CMake build. Whenever
# plex-media-player is updated, the versions for these files are changed,
# so the build IDs (and SHAs) below will need to be updated!
depSrcs = rec {
webClientBuildId = "141-4af71961b12c68";
webClientDesktopBuildId = "3.104.2-1b12c68";
webClientTvBuildId = "4.3.0-4af7196";

webClient = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake";
sha256 = "0fpkd1s49dbiqqlijxbillqd71a78p8y2sc23mwp0lvcmxrg265p";
};
webClientDesktopHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1";
sha256 = "0sb0j44lwqz9zbm98nba4x6c1jxdzvs36ynwfg527avkxxna0f8f";
};
webClientDesktop = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz";
sha256 = "0dxa0ka0igfsryzda4r5clwdl47ah78nmlmgj9d5pgsvyvzjp87z";
};
webClientTvHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1";
sha256 = "086w1bavk2aqsyhv9zi5fynk31zf61sl91r6gjrdrz656wfk5bxa";
};
webClientTv = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz";
sha256 = "12vbgsfnj0j2y5jd73dpi08hqsr9888sma41nvd4ydsd7qblm455";
};
};
# are fetched ahead-of-time instead of during the CMake build. To update
# plex-media-player use the update.sh script, so the versions and hashes
# for these files are are also updated!
depSrcs = import ./deps.nix { inherit fetchurl; };
in mkDerivation rec {
pname = "plex-media-player";
version = "2.40.0.1007";
vsnHash = "5482132c";
version = "2.55.0.1069";
vsnHash = "2369bed9";

src = fetchFromGitHub {
owner = "plexinc";
repo = "plex-media-player";
rev = "v${version}-${vsnHash}";
sha256 = "0ibdh5g8x32iy74q97jfsmxd08wnyrzs3gfiwjfgc10vaa1qdhli";
sha256 = "1jq4592sgaia0xy2h7n3vh5i7c84sdh4l64fdc774r4i0bmg66qi";
};

nativeBuildInputs = [ pkgconfig cmake python3 ];
@@ -61,6 +36,8 @@ in mkDerivation rec {

cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DQTROOT=${qtbase}" ];

passthru.updateScript = ./update.sh;

meta = with stdenv.lib; {
description = "Streaming media player for Plex";
license = licenses.gpl2;
28 changes: 28 additions & 0 deletions pkgs/applications/video/plex-media-player/deps.nix

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

71 changes: 71 additions & 0 deletions pkgs/applications/video/plex-media-player/update.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq

set -xeuo pipefail

nixpkgs="$(git rev-parse --show-toplevel)"

oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; plex-media-player.version or (builtins.parseDrvName plex-media-player.name).version" | tr -d '"')"
latestTag="$(curl -s https://api.github.com/repos/plexinc/plex-media-player/tags | jq -r '.[] | .name' | sort --version-sort | tail -1)"
latestVersion="$(expr $latestTag : 'v\(.*\)-.*')"
latestHash="$(expr $latestTag : 'v.*-\(.*\)')"

if [ ! "$oldVersion" = "$latestVersion" ]; then
# update default.nix with the new version and hash
expectedHash=$(nix-prefetch-git --url https://github.com/plexinc/plex-media-player.git --rev $latestTag --quiet | jq -r '.sha256')
update-source-version plex-media-player --version-key=vsnHash "${latestHash}" 0000
update-source-version plex-media-player "${latestVersion}" $expectedHash

# extract the webClientBuildId from the source folder
src="$(nix-build --no-out-link $nixpkgs -A plex-media-player.src)"
webClientBuildId="$(grep 'set(WEB_CLIENT_BUILD_ID' $src/CMakeModules/WebClient.cmake | cut -d' ' -f2 | tr -d ')')"

# retreive the included cmake file and hash
{ read -r webClientBuildIdHash; read -r webClientBuildIdPath; } < \
<(nix-prefetch-url --print-path "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake")
webClientDesktopBuildId="$(grep 'set(DESKTOP_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
webClientTvBuildId="$(grep 'set(TV_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"

# get the hashes for the other files
webClientDesktopHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1")"
webClientDesktop="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz")"
webClientTvHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1")"
webClientTv="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz")"

# update deps.nix
cat > $nixpkgs/pkgs/applications/video/plex-media-player/deps.nix <<EOF
{ fetchurl }:
rec {
webClientBuildId = "${webClientBuildId}";
webClientDesktopBuildId = "${webClientDesktopBuildId}";
webClientTvBuildId = "${webClientTvBuildId}";
webClient = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/buildid.cmake";
sha256 = "${webClientBuildIdHash}";
};
webClientDesktopHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz.sha1";
sha256 = "${webClientDesktopHash}";
};
webClientDesktop = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz";
sha256 = "${webClientDesktop}";
};
webClientTvHash = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz.sha1";
sha256 = "${webClientTvHash}";
};
webClientTv = fetchurl {
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz";
sha256 = "${webClientTv}";
};
}
EOF

git add "$nixpkgs"/pkgs/applications/video/plex-media-player/{default,deps}.nix
git commit -m "plex-media-player: ${oldVersion} -> ${latestVersion}"
else
echo "plex-media-player is already up-to-date"
fi