From ec395a78ee87388b4f808a9d4efaa28fd518cea6 Mon Sep 17 00:00:00 2001 From: aszlig Date: Tue, 3 Jul 2012 21:48:19 +0200 Subject: [PATCH 1/5] chromium: Extend update script to use channels. The previos update script just used the last version of chromium that showed up at the bucket list at: http://commondatastorage.googleapis.com/chromium-browser-official/ I'm not sure which channel this list actually holds, so I'm going to switch now using the official release channels grabbed by omahaproxy. This also has the advantage that we can provide different versions/flavors of chromium. We now also write our data to sources.nix instead of source.nix, as we have more than one source. --- .../networking/browsers/chromium/update.sh | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) 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 From a65ba9e083f9049a7644f1bc96c2de40d3e98b4d Mon Sep 17 00:00:00 2001 From: aszlig Date: Tue, 3 Jul 2012 21:53:56 +0200 Subject: [PATCH 2/5] chromium: Generate new sources.nix. This means that we now have hashes and URLs for the latest versions of chromium and can now work on integrating the changes into default.nix. --- .../networking/browsers/chromium/sources.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 pkgs/applications/networking/browsers/chromium/sources.nix diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix new file mode 100644 index 00000000000..db07bc460c7 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -0,0 +1,19 @@ +# This file is autogenerated from update.sh in the same directory. +# VHASH: 5e5af2017fa2e05f11aa741c6f87fff0549b93e3bc2aa40e6cc0a0aff84ba010 +{ + dev = { + version = "21.0.1180.15"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-21.0.1180.15.tar.bz2"; + sha256 = "0ahsrsyw4928vg1kl3dv44q77ksp85crw6m7fy20nq46qihb0mxa"; + }; + beta = { + version = "20.0.1132.47"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-20.0.1132.47.tar.bz2"; + sha256 = "1rd1lfn9xchf4nrgi46van5aigqxj2n303890sslc4bcj6p8fkm3"; + }; + stable = { + version = "20.0.1132.47"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-20.0.1132.47.tar.bz2"; + sha256 = "1rd1lfn9xchf4nrgi46van5aigqxj2n303890sslc4bcj6p8fkm3"; + }; +} From f6e063e7fc23a4a28134e34b41b37c5bb2026bf5 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 4 Jul 2012 14:11:25 +0200 Subject: [PATCH 3/5] chromium: Use new channel based sources. Switch to channel based sources and default to the "stable" channel. --- pkgs/applications/networking/browsers/chromium/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 889c2ad8318..751aaf8ee67 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -26,6 +26,7 @@ let mkConfigurable = stdenv.lib.mapAttrs (flag: default: getConfig ["chromium" flag] default); config = mkConfigurable { + channel = "stable"; selinux = false; nacl = false; openssl = true; @@ -36,7 +37,7 @@ let pulseaudio = getConfig ["pulseaudio"] true; }; - sourceInfo = import ./source.nix; + sourceInfo = builtins.getAttr config.channel (import ./sources.nix); mkGypFlags = with stdenv.lib; let sanitize = value: From 834d8be46e0469d80bd9e208793991694d4d6ec2 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 4 Jul 2012 14:12:36 +0200 Subject: [PATCH 4/5] chromium: Fix build for versions older than 21.x. The current stable version won't build if gyp can't use svnversion from the subversion package, so let's provide it for versions below 21.x. --- pkgs/applications/networking/browsers/chromium/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 751aaf8ee67..4c3a02dcecc 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -1,5 +1,8 @@ { stdenv, getConfig, fetchurl, makeWrapper, which +# this is needed in order to build the versions older than 21.x +, subversion + # default dependencies , bzip2, flac, speex , libevent, expat, libjpeg @@ -70,12 +73,14 @@ let use_system_v8 = false; }; + needsSubversion = stdenv.lib.versionOlder sourceInfo.version "21.0.0.0"; + defaultDependencies = [ bzip2 flac speex libevent expat libjpeg libpng libxml2 libxslt xdg_utils yasm zlib - ]; + ] ++ stdenv.lib.optional needsSubversion subversion; in stdenv.mkDerivation rec { name = "${packageName}-${version}"; From 950c73271ae35d4211f4f64d834c059f941084b7 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 4 Jul 2012 14:14:00 +0200 Subject: [PATCH 5/5] chromium: Remove obsolete source.nix. As already promised, the old single-channel source.nix is now obsolete as we're using Omahaproxy now and the build of the stable version finishes successful and the browser runs fine. --- pkgs/applications/networking/browsers/chromium/source.nix | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/chromium/source.nix diff --git a/pkgs/applications/networking/browsers/chromium/source.nix b/pkgs/applications/networking/browsers/chromium/source.nix deleted file mode 100644 index 2dc94ea2943..00000000000 --- a/pkgs/applications/networking/browsers/chromium/source.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - version = "21.0.1179.1"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-21.0.1179.1.tar.bz2"; - sha256 = "1ynm1dv8nwjg6a0absid1g3r62y0mpb74pmal8g9nmqb92rlkdnc"; -}