diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh index 066cd1c147f..c9dd69df9a2 100755 --- a/pkgs/applications/networking/browsers/chromium/update.sh +++ b/pkgs/applications/networking/browsers/chromium/update.sh @@ -1,34 +1,50 @@ #!/bin/sh +channels_url="http://omahaproxy.appspot.com/"; bucket_url="http://commondatastorage.googleapis.com/chromium-browser-official/"; +output_file="$(cd "$(dirname "$0")" && pwd)/sources.nix"; -get_newest_version() +get_channels() { - curl -s "$bucket_url" | sed -ne ' H;/<[Kk][Ee][Yy]>chromium-[^<]*chromium-\([^<.]\+\(\.[^<.]\+\)\+\)\.tar\.bz2<.*$/\1/p - }'; + for chline in $(echo "$1" | cut -d, -f-2); + do + channel="${chline%%,*}"; + version="${chline##*,}"; + + url="${bucket_url%/}/chromium-$version.tar.bz2"; + + sha256="$(nix-prefetch-url "$url")"; + + echo " $channel = {"; + echo " version = \"$version\";"; + echo " url = \"$url\";"; + echo " sha256 = \"$sha256\";"; + echo " };"; + done; } cd "$(dirname "$0")"; -version="$(get_newest_version)"; +versions="$(curl -s "$channels_url" | sed -n -e 's/^linux,\(\([^,]\+,\)\{2\}\).*$/\1/p')"; -if [ -e source.nix ]; then - oldver="$(sed -n 's/^ *version *= *"\([^"]\+\)".*$/\1/p' source.nix)"; - if [ "x$oldver" = "x$version" ]; then - echo "Already the newest version: $version" >&2; +if [ -e "$output_file" ]; +then + vhash="$(echo "$versions" | sha256sum | cut -d' ' -f1)"; + old_vhash="$(sed -n 's/# *VHASH: *//p' "$output_file")"; + + if [ "x$vhash" = "x$old_vhash" ]; + then + echo "$output_file is already up to date, bailing out." >&2; exit 1; fi; fi; -url="${bucket_url%/}/chromium-$version.tar.bz2"; +channels="$(get_channels "$versions")"; -sha256="$(nix-prefetch-url "$url")"; - -cat > source.nix < "$output_file" <<-EOF +# This file is autogenerated from update.sh in the same directory. +# VHASH: $vhash { - version = "$version"; - url = "$url"; - sha256 = "$sha256"; +$channels } EOF