diff options
author | aszlig <aszlig@redmoonstudios.org> | 2013-06-14 14:10:47 +0200 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2013-06-14 17:50:36 +0200 |
commit | 872fb3e2ff081f5947f41efa24acf67e5372c5a7 (patch) | |
tree | b36b39858a0cd8324927048d07acbd7e33d77ded /pkgs/applications | |
parent | 5a6242a401a7e5a3820b7d306fa051f34ad1bec9 (diff) | |
download | nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar.gz nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar.bz2 nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar.lz nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar.xz nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.tar.zst nixlib-872fb3e2ff081f5947f41efa24acf67e5372c5a7.zip |
chromium/updater: Fetch more previous versions.
Omahaproxy has an URL which lists a history of the published versions, which allows to not only go back one versions, but several. Now it is ensured, that we always have the latest _available_ version in sources.nix. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'pkgs/applications')
-rwxr-xr-x | pkgs/applications/networking/browsers/chromium/update.sh | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh index 79aa6bf23963..5c89c8e492ac 100755 --- a/pkgs/applications/networking/browsers/chromium/update.sh +++ b/pkgs/applications/networking/browsers/chromium/update.sh @@ -1,6 +1,7 @@ #!/bin/sh channels_url="http://omahaproxy.appspot.com/all?csv=1"; +history_url="http://omahaproxy.appspot.com/history"; bucket_url="http://commondatastorage.googleapis.com/chromium-browser-official/"; output_file="$(cd "$(dirname "$0")" && pwd)/sources.nix"; @@ -74,18 +75,34 @@ else } fi; +fetch_filtered_history() +{ + curl -s "$history_url" | sed -nr 's/^'"linux,$1"',([^,]+).*$/\1/p'; +} + +get_prev_sha256() +{ + channel="$1"; + current_version="$2"; + + for version in $(fetch_filtered_history "$channel"); + do + [ "x$version" = "x$current_version" ] && continue; + url="${bucket_url%/}/chromium-$version.tar.xz"; + sha256="$(get_sha256 "$channel" "$version" "$url")" || continue; + echo "$sha256:$version:$url"; + return 0; + done; +} + get_channel_exprs() { for chline in $1; do channel="${chline%%,*}"; - - versions="${chline#*,}"; - version="${versions%%,*}"; - previous="${versions##*,}"; + version="${chline##*,}"; 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")"; @@ -97,8 +114,13 @@ get_channel_exprs() if [ $? -ne 0 ]; then echo "Whoops, failed to fetch $version, trying previous" \ - "version $previous:" >&2; - sha256="$(get_sha256 "$channel" "$previous" "$prevurl")"; + "versions:" >&2; + + sha_ver_url="$(get_prev_sha256 "$channel" "$version")"; + sha256="${sha_ver_url%%:*}"; + ver_url="${sha_ver_url#*:}"; + version="${ver_url%%:*}"; + url="${ver_url#*:}"; fi; fi; @@ -115,7 +137,7 @@ get_channel_exprs() cd "$(dirname "$0")"; omaha="$(curl -s "$channels_url")"; -versions="$(echo "$omaha" | sed -nr -e 's/^linux,(([^,]+,){2}[^,]+).*$/\1/p')"; +versions="$(echo "$omaha" | sed -nr -e 's/^linux,([^,]+,[^,]+).*$/\1/p')"; channel_exprs="$(get_channel_exprs "$versions")"; cat > "$output_file" <<-EOF |