From 5a6242a401a7e5a3820b7d306fa051f34ad1bec9 Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 14 Jun 2013 13:24:40 +0200 Subject: [PATCH] chromium/updater: Fall back to previous version. This is especially annoying for the dev channel, as it happens quite frequently that tarballs are unavailable. So if fetching the latest version doesn't work, try the second latest version. Signed-off-by: aszlig --- .../networking/browsers/chromium/update.sh | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh index b8489ae9598..79aa6bf2396 100755 --- a/pkgs/applications/networking/browsers/chromium/update.sh +++ b/pkgs/applications/networking/browsers/chromium/update.sh @@ -56,30 +56,36 @@ then if [ "x$version" != "x$oldver" ]; then echo " no, getting sha256 for new version $version:" >&2; - sha256="$(nix-prefetch-url "$url")"; + sha256="$(nix-prefetch-url "$url")" || return 1; else echo " yes, keeping old sha256." >&2; - sha256="$(nix_getattr "$output_file" "$channel.sha256")"; + sha256="$(nix_getattr "$output_file" "$channel.sha256")" \ + || return 1; fi; sha_insert "$version" "$sha256"; echo "$sha256"; + return 0; } else get_sha256() { - nix-prefetch-url "$url"; + nix-prefetch-url "$3"; } fi; get_channel_exprs() { - for chline in $(echo "$1" | cut -d, -f-2); + for chline in $1; do channel="${chline%%,*}"; - version="${chline##*,}"; + + versions="${chline#*,}"; + version="${versions%%,*}"; + previous="${versions##*,}"; url="${bucket_url%/}/chromium-$version.tar.xz"; + prevurl="${bucket_url%/}/chromium-$previous.tar.xz"; echo -n "Checking if sha256 of version $version is cached..." >&2; if sha256="$(sha_lookup "$version")"; @@ -88,6 +94,12 @@ get_channel_exprs() else echo " no." >&2; sha256="$(get_sha256 "$channel" "$version" "$url")"; + if [ $? -ne 0 ]; + then + echo "Whoops, failed to fetch $version, trying previous" \ + "version $previous:" >&2; + sha256="$(get_sha256 "$channel" "$previous" "$prevurl")"; + fi; fi; sha_insert "$version" "$sha256"; @@ -103,7 +115,7 @@ get_channel_exprs() cd "$(dirname "$0")"; omaha="$(curl -s "$channels_url")"; -versions="$(echo "$omaha" | sed -n -e 's/^linux,\(\([^,]\+,\)\{2\}\).*$/\1/p')"; +versions="$(echo "$omaha" | sed -nr -e 's/^linux,(([^,]+,){2}[^,]+).*$/\1/p')"; channel_exprs="$(get_channel_exprs "$versions")"; cat > "$output_file" <<-EOF