about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorRussell O'Connor <roconnor@theorem.ca>2013-06-14 12:18:27 -0400
committerRussell O'Connor <roconnor@theorem.ca>2013-06-14 12:18:27 -0400
commit74d7c12e3a55a4b87b8840ac44303933007f9aee (patch)
treefa0388a45d55ab90505ffa2c95146f91b8dac48b /pkgs/applications
parentc9f59592851036eef99ac2ed2096aa46935531ec (diff)
parentcfb697b01372dc9c9d5405005f0e893067ab3c67 (diff)
downloadnixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar.gz
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar.bz2
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar.lz
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar.xz
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.tar.zst
nixlib-74d7c12e3a55a4b87b8840ac44303933007f9aee.zip
Merge branch 'master' of github.com:NixOS/nixpkgs
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/networking/browsers/chromium/sources.nix12
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.sh64
2 files changed, 58 insertions, 18 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix
index 54d9f44f7fba..780c3b62a30d 100644
--- a/pkgs/applications/networking/browsers/chromium/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/sources.nix
@@ -1,14 +1,14 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   dev = {
-    version = "29.0.1516.3";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-29.0.1516.3.tar.xz";
-    sha256 = "0pdn9c6v0v55d7g4amivxrv132bpj9sfqywk5b8l6kqfjq28mw5k";
+    version = "29.0.1521.3";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-29.0.1521.3.tar.xz";
+    sha256 = "0szc3g24jlhcp8cgijdv0q9rfn3mhp2kjyc85ml4snskkpasfrv3";
   };
   beta = {
-    version = "28.0.1500.36";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-28.0.1500.36.tar.xz";
-    sha256 = "1bz9w46ps8gj056hfwbcj4myyxyr7y759nagz9idraia8116m3pp";
+    version = "28.0.1500.45";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-28.0.1500.45.tar.xz";
+    sha256 = "01sxqv6i7m5h0jsypg801w2ivbrir37wdi4ijd5yvprkyzbd90zi";
   };
   stable = {
     version = "27.0.1453.110";
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh
index 0c21213a751c..0c4881bb3962 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";
 
@@ -41,6 +42,17 @@ sha_insert()
     ver_sha_table="$ver_sha_table $version:$sha256";
 }
 
+get_newest_ver()
+{
+    versions="$(for v in $@; do echo "$v"; done)";
+    if oldest="$(echo "$versions" | sort -V 2> /dev/null | tail -n1)";
+    then
+        echo "$oldest";
+    else
+        echo "$versions" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -n1;
+    fi;
+}
+
 if [ -e "$output_file" ];
 then
     get_sha256()
@@ -53,38 +65,55 @@ then
 
         echo -n "Checking if $oldver ($channel) is up to date..." >&2;
 
-        if [ "x$version" != "x$oldver" ];
+        if [ "x$(get_newest_ver "$version" "$oldver")" != "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;
 
+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 $(echo "$1" | cut -d, -f-2);
+    for chline in $1;
     do
         channel="${chline%%,*}";
         version="${chline##*,}";
 
-        # XXX: Remove case after version 26 is stable:
-        if [ "${version%%.*}" -ge 26 ]; then
-            url="${bucket_url%/}/chromium-$version.tar.xz";
-        else
-            url="${bucket_url%/}/chromium-$version.tar.bz2";
-        fi;
+        url="${bucket_url%/}/chromium-$version.tar.xz";
 
         echo -n "Checking if sha256 of version $version is cached..." >&2;
         if sha256="$(sha_lookup "$version")";
@@ -93,6 +122,17 @@ 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" \
+                     "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;
 
         sha_insert "$version" "$sha256";
@@ -108,7 +148,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,([^,]+,[^,]+).*$/\1/p')";
 channel_exprs="$(get_channel_exprs "$versions")";
 
 cat > "$output_file" <<-EOF