summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weiss <dev.primeos@gmail.com>2020-11-03 13:08:09 +0100
committerMichael Weiss <dev.primeos@gmail.com>2020-11-11 16:16:42 +0100
commit67d9c40ccd4d86c1f702ceca2eadd519916c4cba (patch)
tree418eb51328e0cbf0b503ededc8c76f34a0b517f7
parentnats-server: 2.1.7 -> 2.1.9 (diff)
downloadnixpkgs-67d9c40ccd4d86c1f702ceca2eadd519916c4cba.tar.gz
chromium: Extend update.py to automatically update gn
The gn version depends on the channel and new gn versions aren't always backward compatible. Therefore we should also include it in upstream-info.json (I've scoped it under "deps" as we'll likely have to add more like this in the future). (cherry picked from commit d7f53864741aa0cb3a992e74ada3153a89a85f69)
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix7
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix15
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.py30
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json30
4 files changed, 64 insertions, 18 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index 99967435bc94..599522c56745 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -335,7 +335,12 @@ let
patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
'';
- passthru.updateScript = ./update.py;
+ passthru = {
+ updateScript = ./update.py;
+ chromiumDeps = {
+ gn = gnChromium;
+ };
+ };
};
# Remove some extraAttrs we supplied to the base attributes already.
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index 2c92ca588688..434945910fda 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -35,26 +35,15 @@ let
mkChromiumDerivation = callPackage ./common.nix ({
inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
cupsSupport pulseSupport useOzone;
- # TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
gnChromium = gn.overrideAttrs (oldAttrs: {
- version = "2020-07-20";
+ inherit (upstream-info.deps.gn) version;
src = fetchgit {
- url = "https://gn.googlesource.com/gn";
- rev = "3028c6a426a4aaf6da91c4ebafe716ae370225fe";
- sha256 = "0h3wf4152zdvrbb0jbj49q6814lfl3rcy5mj8b2pl9s0ahvkbc6q";
+ inherit (upstream-info.deps.gn) url rev sha256;
};
});
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") {
useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/
useVaapi = !stdenv.isAarch64; # TODO: Might be best to not set use_vaapi anymore (default is fine)
- gnChromium = gn.overrideAttrs (oldAttrs: {
- version = "2020-08-17";
- src = fetchgit {
- url = "https://gn.googlesource.com/gn";
- rev = "6f13aaac55a977e1948910942675c69f2b4f7a94";
- sha256 = "01hpma1sllpdx09mvr4d6073sg6zmk6iv44kd3r28khymcj4s251";
- };
- });
});
browser = callPackage ./browser.nix { inherit channel enableWideVine; };
diff --git a/pkgs/applications/networking/browsers/chromium/update.py b/pkgs/applications/networking/browsers/chromium/update.py
index bfc7f0d2478c..b404ca555bff 100755
--- a/pkgs/applications/networking/browsers/chromium/update.py
+++ b/pkgs/applications/networking/browsers/chromium/update.py
@@ -1,13 +1,15 @@
#! /usr/bin/env nix-shell
-#! nix-shell -i python -p python3 nix
+#! nix-shell -i python -p python3 nix nix-prefetch-git
import csv
import json
+import re
import subprocess
import sys
from codecs import iterdecode
from collections import OrderedDict
+from datetime import datetime
from os.path import abspath, dirname
from urllib.request import urlopen
@@ -26,6 +28,30 @@ def nix_prefetch_url(url, algo='sha256'):
out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url])
return out.decode('utf-8').rstrip()
+def nix_prefetch_git(url, rev):
+ print(f'nix-prefetch-git {url} {rev}')
+ out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev])
+ return json.loads(out)
+
+def get_file_revision(revision, file_path):
+ url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}'
+ with urlopen(url) as http_response:
+ return http_response.read()
+
+def get_channel_dependencies(channel):
+ deps = get_file_revision(channel['version'], 'DEPS')
+ gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'"
+ gn_commit = re.search(gn_pattern, deps).group(1).decode()
+ gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit)
+ return {
+ 'gn': {
+ 'version': datetime.fromisoformat(gn['date']).date().isoformat(),
+ 'url': gn['url'],
+ 'rev': gn['rev'],
+ 'sha256': gn['sha256']
+ }
+ }
+
channels = {}
last_channels = load_json(JSON_PATH)
@@ -58,6 +84,8 @@ with urlopen(HISTORY_URL) as resp:
# the next one.
continue
+ channel['deps'] = get_channel_dependencies(channel)
+
channels[channel_name] = channel
with open(JSON_PATH, 'w') as out:
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index d6971da2c0f4..565f884c5102 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -2,16 +2,40 @@
"stable": {
"version": "86.0.4240.183",
"sha256": "1g39i82js7fm4fqb8i66d6xs0kzqjxzi4vzvvwz5y9rkbikcc4ma",
- "sha256bin64": "1r0dxqsx6j19hgwr3v2sdlb2vd7gb961c4wba4ymd8wy8j8pzly9"
+ "sha256bin64": "1r0dxqsx6j19hgwr3v2sdlb2vd7gb961c4wba4ymd8wy8j8pzly9",
+ "deps": {
+ "gn": {
+ "version": "2020-08-07",
+ "url": "https://gn.googlesource.com/gn",
+ "rev": "e327ffdc503815916db2543ec000226a8df45163",
+ "sha256": "0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr"
+ }
+ }
},
"beta": {
"version": "87.0.4280.40",
"sha256": "07xh76fl257np68way6i5rf64qbvirkfddy7m5gvqb0fzcqd7dp3",
- "sha256bin64": "1b2z0aqlh28pqrk6dmabxp1d4mvp9iyfmi4kqmns4cdpg0qgaf41"
+ "sha256bin64": "1b2z0aqlh28pqrk6dmabxp1d4mvp9iyfmi4kqmns4cdpg0qgaf41",
+ "deps": {
+ "gn": {
+ "version": "2020-09-09",
+ "url": "https://gn.googlesource.com/gn",
+ "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2",
+ "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk"
+ }
+ }
},
"dev": {
"version": "88.0.4300.0",
"sha256": "00cfs2rp4h8ybn2snr1d8ygg635hx7q5gv2aqriy1j6f8a1pgh1b",
- "sha256bin64": "110r1m14h91212nx6pfhn8wkics7wlwx1608l5cqsxxcpvpzl3pv"
+ "sha256bin64": "110r1m14h91212nx6pfhn8wkics7wlwx1608l5cqsxxcpvpzl3pv",
+ "deps": {
+ "gn": {
+ "version": "2020-09-09",
+ "url": "https://gn.googlesource.com/gn",
+ "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2",
+ "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk"
+ }
+ }
}
}