diff options
author | Michael Weiss <dev.primeos@gmail.com> | 2020-11-03 13:08:09 +0100 |
---|---|---|
committer | Michael Weiss <dev.primeos@gmail.com> | 2020-11-03 20:00:25 +0100 |
commit | d7f53864741aa0cb3a992e74ada3153a89a85f69 (patch) | |
tree | 28ee61b6732bc5ea6e9954c3fb9b7f81e8b78aa9 /pkgs/applications/networking | |
parent | 3fbb1f7e4c44ee09d4230653e7d8273697bab598 (diff) | |
download | nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar.gz nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar.bz2 nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar.lz nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar.xz nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.tar.zst nixpkgs-d7f53864741aa0cb3a992e74ada3153a89a85f69.zip |
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).
Diffstat (limited to 'pkgs/applications/networking')
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 60aca90a95e..76f53dcecc8 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -316,7 +316,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 f83cb1d209d..0f64b859579 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 bfc7f0d2478..b404ca555bf 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 d6971da2c0f..565f884c510 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" + } + } } } |