diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 744ad79062b9..4353d2958f58 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -234,8 +234,9 @@ let use_gold = true; gold_path = "${stdenv.cc}/bin"; is_debug = false; - # at least 2X compilation speedup - use_jumbo_build = true; + # Use jumbo for a 2x (at least) compilation speedup, except where it is currently broken: + # https://gist.github.com/ivan/6fe7014c1b1cc35dec133fa6de0549d9 + use_jumbo_build = (version != "78.0.3904.17"); proprietary_codecs = false; use_sysroot = false; diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index f099ddbff737..5fb0d67a4809 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -50,6 +50,7 @@ in let widevine = let upstream-info = chromium.upstream-info; in stdenv.mkDerivation { name = "chromium-binary-plugin-widevine"; + # The .deb file for Google Chrome src = upstream-info.binary; nativeBuildInputs = [ patchelfUnstable ]; @@ -57,14 +58,21 @@ in let phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ]; unpackCmd = let - chan = if upstream-info.channel == "dev" then "chrome-unstable" - else if upstream-info.channel == "stable" then "chrome" - else if upstream-info.channel == "beta" then "chrome-beta" - else throw "Unknown chromium channel."; + soPath = + if upstream-info.channel == "stable" then + "./opt/google/chrome/libwidevinecdm.so" + else if upstream-info.channel == "beta" then + "./opt/google/chrome-beta/libwidevinecdm.so" + else if upstream-info.channel == "dev" then + "./opt/google/chrome-unstable/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" + else + throw "Unknown chromium channel."; in '' mkdir -p plugins - ar p "$src" data.tar.xz | tar xJ -C plugins --strip-components=4 \ - ./opt/google/${chan}/libwidevinecdm.so + # Extract just libwidevinecdm.so from upstream's .deb file + ar p "$src" data.tar.xz | tar xJ -C plugins ${soPath} + mv plugins/${soPath} plugins/ + rm -rf plugins/opt ''; doCheck = true; @@ -83,7 +91,10 @@ in let "$out/lib/libwidevinecdm.so" ''; - meta.platforms = lib.platforms.x86_64; + meta = { + platforms = [ "x86_64-linux" ]; + license = lib.licenses.unfree; + }; }; suffix = if channel != "stable" then "-" + channel else ""; @@ -92,18 +103,21 @@ in let version = chromium.browser.version; - # This is here because we want to add the widevine shared object at the last - # minute in order to avoid a full rebuild of chromium. Additionally, this - # isn't in `browser.nix` so we can avoid having to re-expose attributes of - # the chromium derivation (see above: we introspect `sandboxExecutableName`). + # We want users to be able to enableWideVine without rebuilding all of + # chromium, so we have a separate derivation here that copies chromium + # and adds the unfree libwidevinecdm.so. chromiumWV = let browser = chromium.browser; in if enableWideVine then runCommand (browser.name + "-wv") { version = browser.version; } '' mkdir -p $out - cp -R ${browser}/* $out/ - chmod u+w $out/libexec/chromium* - cp ${widevine}/lib/libwidevinecdm.so $out/libexec/chromium/ - # patchelf? + cp -a ${browser}/* $out/ + chmod u+w $out/libexec/chromium + if [[ ${channel} != "dev" ]]; then + cp ${widevine}/lib/libwidevinecdm.so $out/libexec/chromium/ + else + mkdir -p $out/libexec/chromium/WidevineCdm/_platform_specific/linux_x64 + cp ${widevine}/lib/libwidevinecdm.so $out/libexec/chromium/WidevineCdm/_platform_specific/linux_x64/ + fi '' else browser; in stdenv.mkDerivation { diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix index df2ce798f1fb..b641d1163bc4 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix @@ -1,18 +1,18 @@ # This file is autogenerated from update.sh in the same directory. { beta = { - sha256 = "12cp24h93b48pwfywf5b6qvjdlhxrhp87qdaqbfcn6g787r2z5gb"; - sha256bin64 = "0d9w869qqwbmw3qjvxkfm37i7dvrgmrwm5y96sm1dg2jnxqj4bdz"; - version = "77.0.3865.75"; + sha256 = "1hzgzmrn0d6cqvqnqayl048zwlcx0f7azg2rhvm7p13lvyqzsk00"; + sha256bin64 = "0p3275ii8800swlfmljbdrvyqjd5nlw0vgv2my4r8ccszgbhidbd"; + version = "77.0.3865.90"; }; dev = { - sha256 = "0x5r6xqwiggwyzbinm252xc1n3f9r7cmmzj6assi4v1nsispdh2k"; - sha256bin64 = "03yymhbpd1snycmcv7wkg5j6zbydvyc365gy5myp7wgas7cd0mb6"; - version = "78.0.3887.7"; + sha256 = "0zka01ml3hbximswzkkqbqq8wpiz8f4fq4wx5fys002hi69l296l"; + sha256bin64 = "0nrip45s0ylri34vlpf16xlwv3ybmy2jg7dz8l9rvgbdwwdzdb75"; + version = "78.0.3904.17"; }; stable = { - sha256 = "12cp24h93b48pwfywf5b6qvjdlhxrhp87qdaqbfcn6g787r2z5gb"; - sha256bin64 = "1wp5g09czyslkkhw3nhbp39fxfcz0pprsgj8h0aggghpdbvzph3d"; - version = "77.0.3865.75"; + sha256 = "1hzgzmrn0d6cqvqnqayl048zwlcx0f7azg2rhvm7p13lvyqzsk00"; + sha256bin64 = "1npx867j39mdyivf8nlkcfwgq7j34hl7s948vf6h2kqni0y50hzl"; + version = "77.0.3865.90"; }; }