about summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:13 +0200
committerVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:37 +0200
commit5227fb1dd53fcb5918b9342dff4868f4ad68427e (patch)
treed6cd521e3f67944031216a27f740f28f22b73b41 /pkgs/applications/networking/browsers
parentd6dd3b8bd1eaeeb21dfdb5051cd4732c748ce5d7 (diff)
parent33373d939a19f465228ddede6d38ce9032b5916b (diff)
downloadnixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.gz
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.bz2
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.lz
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.xz
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.zst
nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.zip
Merge commit staging+systemd into closure-size
Many non-conflict problems weren't (fully) resolved in this commit yet.
Diffstat (limited to 'pkgs/applications/networking/browsers')
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix8
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix28
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix16
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix5
-rw-r--r--pkgs/applications/networking/browsers/chromium/sandbox.nix21
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch14
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/default.nix22
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_44.patch (renamed from pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch)9
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch (renamed from pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths.patch)38
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/sandbox_userns_36.patch287
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/sources.nix24
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/update.nix3
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.sh39
-rw-r--r--pkgs/applications/networking/browsers/conkeror/default.nix14
-rw-r--r--pkgs/applications/networking/browsers/dillo/default.nix8
-rw-r--r--pkgs/applications/networking/browsers/dwb/default.nix19
-rw-r--r--pkgs/applications/networking/browsers/elinks/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix18
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb2
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/sources.nix358
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix84
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix15
-rw-r--r--pkgs/applications/networking/browsers/jumanji/default.nix14
-rw-r--r--pkgs/applications/networking/browsers/kwebkitpart/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/links2/default.nix10
-rw-r--r--pkgs/applications/networking/browsers/midori/default.nix3
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix57
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix12
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix8
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix42
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libCSS.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libParserUtils.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsbmp.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsgif.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/netsurf.nix11
-rw-r--r--pkgs/applications/networking/browsers/opera/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/qutebrowser/default.nix35
-rw-r--r--pkgs/applications/networking/browsers/rekonq/default.nix7
-rw-r--r--pkgs/applications/networking/browsers/vimb/default.nix5
-rw-r--r--pkgs/applications/networking/browsers/vimprobable2/default.nix5
-rw-r--r--pkgs/applications/networking/browsers/w3m/cygwin.patch1710
-rw-r--r--pkgs/applications/networking/browsers/w3m/default.nix15
46 files changed, 2231 insertions, 767 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index 41617d0182a8..5c8c25553ee1 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -5,18 +5,18 @@ with stdenv.lib;
 mkChromiumDerivation (base: rec {
   name = "chromium-browser";
   packageName = "chromium";
-  buildTargets = [ "mksnapshot" "chrome" ];
+  buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
 
   installPhase = ''
     mkdir -p "$libExecPath"
     cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
     cp -v "$buildPath/icudtl.dat" "$libExecPath/"
     cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
-    cp -v "$buildPath/libffmpegsumo.so" "$libExecPath/"
-    ${optionalString (versionOlder base.version "42.0.0.0") ''
-      cp -v "$buildPath/libpdf.so" "$libExecPath/"
+    ${optionalString (versionOlder base.version "44.0.0.0") ''
+      cp -v "$buildPath/libffmpegsumo.so" "$libExecPath/"
     ''}
     cp -v "$buildPath/chrome" "$libExecPath/$packageName"
+    cp -v "$buildPath/chrome_sandbox" "$libExecPath/chrome-sandbox"
 
     mkdir -vp "$out/share/man/man1"
     cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index e46b44191975..070859b902d9 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, ninja, which
 
 # default dependencies
-, bzip2, flac, speex, icu, libopus
+, bzip2, flac, speex, libopus
 , libevent, expat, libjpeg, snappy
 , libpng, libxml2, libxslt, libcap
 , xdg_utils, yasm, minizip, libwebp
@@ -21,12 +21,13 @@
 # package customization
 , enableSELinux ? false, libselinux ? null
 , enableNaCl ? false
+, enableHotwording ? false
 , useOpenSSL ? false, nss ? null, openssl ? null
 , gnomeSupport ? false, gnome ? null
 , gnomeKeyringSupport ? false, libgnome_keyring3 ? null
 , proprietaryCodecs ? true
 , cupsSupport ? true
-, pulseSupport ? false, pulseaudio ? null
+, pulseSupport ? false, libpulseaudio ? null
 , hiDPISupport ? false
 
 , source
@@ -84,7 +85,7 @@ let
   };
 
   defaultDependencies = [
-    bzip2 flac speex icu opusWithCustomModes
+    bzip2 flac speex opusWithCustomModes
     libevent expat libjpeg snappy
     libpng libxml2 libxslt libcap
     xdg_utils yasm minizip libwebp
@@ -118,28 +119,18 @@ let
       ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
       ++ optional enableSELinux libselinux
       ++ optionals cupsSupport [ libgcrypt cups ]
-      ++ optional pulseSupport pulseaudio;
+      ++ optional pulseSupport libpulseaudio;
 
     # XXX: Wait for https://crbug.com/239107 and https://crbug.com/239181 to
     #      be fixed, then try again to unbundle everything into separate
     #      derivations.
     prePatch = ''
-      cp -dsr --no-preserve=mode "${source.main}"/* .
-      cp -dsr --no-preserve=mode "${source.sandbox}" sandbox
+      cp -dr --no-preserve=mode "${source.main}"/* .
       cp -dr "${source.bundled}" third_party
       chmod -R u+w third_party
-
-      # Hardcode source tree root in all gyp files
-      find -iname '*.gyp*' \( -type f -o -type l \) \
-        -exec sed -i -e 's|<(DEPTH)|'"$(pwd)"'|g' {} + \
-        -exec chmod u+w {} +
     '';
 
-    postPatch = optionalString (versionOlder version "42.0.0.0") ''
-      sed -i -e '/base::FilePath exe_dir/,/^ *} *$/c \
-        sandbox_binary = base::FilePath(getenv("CHROMIUM_SANDBOX_BINARY_PATH"));
-      ' sandbox/linux/suid/client/setuid_sandbox_client.cc
-    '' + ''
+    postPatch = ''
       sed -i -e '/module_path *=.*libexif.so/ {
         s|= [^;]*|= base::FilePath().AppendASCII("${libexif}/lib/libexif.so")|
       }' chrome/utility/media_galleries/image_metadata_extractor.cc
@@ -163,11 +154,10 @@ let
       use_pulseaudio = pulseSupport;
       linux_link_pulseaudio = pulseSupport;
       disable_nacl = !enableNaCl;
+      enable_hotwording = enableHotwording;
       use_openssl = useOpenSSL;
       selinux = enableSELinux;
       use_cups = cupsSupport;
-    } // optionalAttrs (versionOlder version "42.0.0.0") {
-      linux_sandbox_chrome_path="${libExecPath}/${packageName}";
     } // {
       werror = "";
       clang = false;
@@ -200,7 +190,7 @@ let
       # This is to ensure expansion of $out.
       libExecPath="${libExecPath}"
       python build/linux/unbundle/replace_gyp_files.py ${gypFlags}
-      python build/gyp_chromium -f ninja --depth "$(pwd)" ${gypFlags}
+      python build/gyp_chromium -f ninja --depth . ${gypFlags}
     '';
 
     buildPhase = let
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index 85b2e9b8051e..9a7f4a2757ef 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -4,6 +4,7 @@
 , channel ? "stable"
 , enableSELinux ? false
 , enableNaCl ? false
+, enableHotwording ? false
 , useOpenSSL ? false
 , gnomeSupport ? false
 , gnomeKeyringSupport ? false
@@ -26,13 +27,12 @@ let
     };
 
     mkChromiumDerivation = callPackage ./common.nix {
-      inherit enableSELinux enableNaCl useOpenSSL gnomeSupport
-              gnomeKeyringSupport proprietaryCodecs cupsSupport
-              pulseSupport hiDPISupport;
+      inherit enableSELinux enableNaCl enableHotwording useOpenSSL gnomeSupport
+              gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport
+              hiDPISupport;
     };
 
     browser = callPackage ./browser.nix { };
-    sandbox = callPackage ./sandbox.nix { };
 
     plugins = callPackage ./plugins.nix {
       inherit enablePepperFlash enableWideVine;
@@ -41,8 +41,8 @@ let
 
   desktopItem = makeDesktopItem {
     name = "chromium";
-    exec = "chromium";
-    icon = "${chromium.browser}/share/icons/hicolor/48x48/apps/chromium.png";
+    exec = "chromium %U";
+    icon = "chromium";
     comment = "An open source web browser from Google";
     desktopName = "Chromium";
     genericName = "Web browser";
@@ -70,18 +70,14 @@ in stdenv.mkDerivation {
 
   buildCommand = let
     browserBinary = "${chromium.browser}/libexec/chromium/chromium";
-    sandboxBinary = "${chromium.sandbox}/bin/chromium-sandbox";
     mkEnvVar = key: val: "--set '${key}' '${val}'";
     envVars = chromium.plugins.settings.envVars or {};
-    isVer42 = !stdenv.lib.versionOlder chromium.browser.version "42.0.0.0";
     flags = chromium.plugins.settings.flags or [];
-    setBinPath = "--set CHROMIUM_SANDBOX_BINARY_PATH \"${sandboxBinary}\"";
   in with stdenv.lib; ''
     mkdir -p "$out/bin" "$out/share/applications"
 
     ln -s "${chromium.browser}/share" "$out/share"
     makeWrapper "${browserBinary}" "$out/bin/chromium" \
-      ${optionalString (!isVer42) setBinPath} \
       ${concatStrings (mapAttrsToList mkEnvVar envVars)} \
       --add-flags "${concatStringsSep " " flags}"
 
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index b4766cee4347..0b0e5bd08382 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -21,10 +21,9 @@ let
       chan = if source.channel == "dev"    then "chrome-unstable"
         else if source.channel == "stable" then "chrome"
         else "chrome-${source.channel}";
-      cext = if versionOlder source.version "41.0.0.0" then "lzma" else "xz";
     in ''
       mkdir -p plugins
-      ar p "$src" data.tar.${cext} | tar xJ -C plugins --strip-components=4 \
+      ar p "$src" data.tar.xz | tar xJ -C plugins --strip-components=4 \
         ./opt/google/${chan}/PepperFlash \
         ./opt/google/${chan}/libwidevinecdm.so \
         ./opt/google/${chan}/libwidevinecdmadapter.so
@@ -54,7 +53,7 @@ let
       wvDescription = "Playback of encrypted HTML audio/video content";
       wvMimeTypes = "application/x-ppapi-widevine-cdm";
       wvModule = "$widevine/lib/libwidevinecdmadapter.so";
-      wvInfo = "#${wvName}#${wvDescription}:${wvMimeTypes}";
+      wvInfo = "#${wvName}#${wvDescription};${wvMimeTypes}";
     in ''
       flashVersion="$(
         sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json
diff --git a/pkgs/applications/networking/browsers/chromium/sandbox.nix b/pkgs/applications/networking/browsers/chromium/sandbox.nix
deleted file mode 100644
index b470ed633253..000000000000
--- a/pkgs/applications/networking/browsers/chromium/sandbox.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, source }:
-
-stdenv.mkDerivation {
-  name = "chromium-sandbox-${source.version}";
-  src = source.sandbox;
-
-  patchPhase = ''
-    sed -i -e '/#include.*base_export/c \
-      #define BASE_EXPORT __attribute__((visibility("default")))
-    /#include/s|sandbox/linux|'"$(pwd)"'/linux|
-    ' linux/suid/*.[hc]
-  '';
-
-  buildPhase = ''
-    gcc -Wall -std=gnu99 -o sandbox linux/suid/*.c
-  '';
-
-  installPhase = ''
-    install -svD sandbox "$out/bin/chromium-sandbox"
-  '';
-}
diff --git a/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch b/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch
new file mode 100644
index 000000000000..c0aeb5d3a56c
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch
@@ -0,0 +1,14 @@
+diff --git a/chrome/test/data/webui_test_resources.grd b/chrome/test/data/webui_test_resources.grd
+index 6f8530d..f92a76a 100644
+--- a/chrome/test/data/webui_test_resources.grd
++++ b/chrome/test/data/webui_test_resources.grd
+@@ -6,9 +6,4 @@
+     </output>
+     <output filename="webui_test_resources.pak" type="data_package" />
+   </outputs>
+-  <release seq="1">
+-    <includes>
+-      <include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST" file="webui/i18n_process_css_test.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+-    </includes>
+-  </release>
+ </grit>
diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix
index 54430bb5be9f..965c7885416c 100644
--- a/pkgs/applications/networking/browsers/chromium/source/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python
+{ stdenv, fetchurl, fetchpatch, patchutils, python
 , channel ? "stable"
 , useOpenSSL # XXX
 }:
@@ -14,12 +14,9 @@ let
     "s,^[^/]+(.*)$,$main\\1,"
     "s,$main/(build|tools)(/.*)?$,$out/\\1\\2,"
     "s,$main/third_party(/.*)?$,$bundled\\1,"
-    "s,$main/sandbox(/.*)?$,$sandbox\\1,"
     "s,^/,,"
   ]);
 
-  pre42 = versionOlder version "42.0.0.0";
-
 in stdenv.mkDerivation {
   name = "chromium-source-${version}";
 
@@ -28,7 +25,7 @@ in stdenv.mkDerivation {
   buildInputs = [ python ]; # cannot patch shebangs otherwise
 
   phases = [ "unpackPhase" "patchPhase" ];
-  outputs = [ "out" "sandbox" "bundled" "main" ];
+  outputs = [ "out" "bundled" "main" ];
 
   unpackPhase = ''
     tar xf "$src" -C / \
@@ -47,11 +44,11 @@ in stdenv.mkDerivation {
     done
   '';
 
-  patches = if pre42 then [
-    ./sandbox_userns_36.patch ./nix_plugin_paths.patch
-  ] else [
-    ./nix_plugin_paths_42.patch
-  ];
+  patches =
+    if versionOlder version "45.0.0.0"
+    then singleton ./nix_plugin_paths_44.patch
+    else singleton ./nix_plugin_paths_46.patch ++
+         optional (!versionOlder version "46.0.0.0") ./build_fixes_46.patch;
 
   patchPhase = let
     diffmod = sym: "/^${sym} /{s/^${sym} //;${transform ""};s/^/${sym} /}";
@@ -75,13 +72,8 @@ in stdenv.mkDerivation {
       "$out/build/common.gypi" "$main/chrome/chrome_tests.gypi"
   '' + optionalString useOpenSSL ''
     cat $opensslPatches | patch -p1 -d "$bundled/openssl/openssl"
-  '' + optionalString (!pre42) ''
-    sed -i -e '/LOG.*no_suid_error/d' \
-      "$main/content/browser/browser_main_loop.cc"
   '';
 
-  preferLocalBuild = true;
-
   passthru = {
     inherit version channel;
     plugins = fetchurl binary;
diff --git a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_44.patch
index fb09763c997a..326da7f420a5 100644
--- a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch
+++ b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_44.patch
@@ -55,15 +55,6 @@ index 8a205a6..d5c24e1 100644
          return false;
        cur = cur.Append(kInternalFlashPluginFileName);
        break;
-@@ -295,7 +288,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(chrome::kPepperFlashPluginFilename);
-       break;
-     case chrome::FILE_EFFECTS_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "FILE_EFFECTS"))
-         return false;
-       cur = cur.Append(kEffectsPluginFileName);
-       break;
 @@ -308,7 +301,7 @@ bool PathProvider(int key, base::FilePath* result) {
      // We currently need a path here to look up whether the plugin is disabled
      // and what its permissions are.
diff --git a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths.patch b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch
index 0220d0429413..7482be7062d0 100644
--- a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths.patch
+++ b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch
@@ -1,8 +1,8 @@
 diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
-index 8a205a6..d5c24e1 100644
+index 74bf041..5f34198 100644
 --- a/chrome/common/chrome_paths.cc
 +++ b/chrome/common/chrome_paths.cc
-@@ -97,21 +97,14 @@ static base::LazyInstance<base::FilePath>
+@@ -66,21 +66,14 @@ static base::LazyInstance<base::FilePath>
      g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
  
  // Gets the path for internal plugins.
@@ -31,8 +31,8 @@ index 8a205a6..d5c24e1 100644
 +      *result = base::FilePath(value);
  }
  
- }  // namespace
-@@ -248,11 +241,11 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if defined(OS_WIN)
+@@ -253,11 +246,11 @@ bool PathProvider(int key, base::FilePath* result) {
        create_dir = true;
        break;
      case chrome::DIR_INTERNAL_PLUGINS:
@@ -46,31 +46,7 @@ index 8a205a6..d5c24e1 100644
          return false;
        cur = cur.Append(kPepperFlashBaseDirectory);
        break;
-@@ -285,7 +278,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(FILE_PATH_LITERAL("script.log"));
-       break;
-     case chrome::FILE_FLASH_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "FILEFLASH"))
-         return false;
-       cur = cur.Append(kInternalFlashPluginFileName);
-       break;
-@@ -295,12 +288,12 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(chrome::kPepperFlashPluginFilename);
-       break;
-     case chrome::FILE_PDF_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "PDF"))
-         return false;
-       cur = cur.Append(kInternalPDFPluginFileName);
-       break;
-     case chrome::FILE_EFFECTS_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "FILE_EFFECTS"))
-         return false;
-       cur = cur.Append(kEffectsPluginFileName);
-       break;
-@@ -308,7 +301,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -314,7 +307,7 @@ bool PathProvider(int key, base::FilePath* result) {
      // We currently need a path here to look up whether the plugin is disabled
      // and what its permissions are.
      case chrome::FILE_NACL_PLUGIN:
@@ -79,7 +55,7 @@ index 8a205a6..d5c24e1 100644
          return false;
        cur = cur.Append(kInternalNaClPluginFileName);
        break;
-@@ -343,7 +336,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -349,7 +342,7 @@ bool PathProvider(int key, base::FilePath* result) {
          cur = cur.DirName();
        }
  #else
@@ -88,7 +64,7 @@ index 8a205a6..d5c24e1 100644
          return false;
  #endif
        cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
-@@ -372,7 +365,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -366,7 +359,7 @@ bool PathProvider(int key, base::FilePath* result) {
      // In the component case, this is the source adapter. Otherwise, it is the
      // actual Pepper module that gets loaded.
      case chrome::FILE_WIDEVINE_CDM_ADAPTER:
diff --git a/pkgs/applications/networking/browsers/chromium/source/sandbox_userns_36.patch b/pkgs/applications/networking/browsers/chromium/source/sandbox_userns_36.patch
deleted file mode 100644
index 6f5d52b72af1..000000000000
--- a/pkgs/applications/networking/browsers/chromium/source/sandbox_userns_36.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-commit 0fec7e4a742f001c9816a8b58a1120fb44230867
-Author: aszlig <aszlig@redmoonstudios.org>
-Date:   Thu May 16 14:17:56 2013 +0200
-
-    zygote: Add support for user namespaces on Linux.
-    
-    The implementation is done by patching the Zygote host to execute the sandbox
-    binary with CLONE_NEWUSER and setting the uid and gid mapping so that the child
-    process is using uid 0 and gid 0 which map to the current user of the parent.
-    Afterwards, the sandbox will continue as if it was called as a setuid binary.
-    
-    In addition, this adds new_user_namespace as an option in process_util in order
-    to set the UID and GID mapping correctly. The reason for this is that just
-    passing CLONE_NEWUSER to clone_flags doesn't help in LaunchProcess(), because
-    without setting the mappings exec*() will clear the process's capability sets.
-    
-    If the kernel doesn't support unprivileged user namespaces and the sandbox
-    binary doesn't have the setuid flag, the Zygote main process will run without a
-    sandbox. This is to mimic the behaviour if no SUID sandbox binary path is set.
-    
-    Signed-off-by: aszlig <aszlig@redmoonstudios.org>
-
-diff --git a/base/process/launch.cc b/base/process/launch.cc
-index 81748f5..930f20f 100644
---- a/base/process/launch.cc
-+++ b/base/process/launch.cc
-@@ -26,6 +26,7 @@ LaunchOptions::LaunchOptions()
- #if defined(OS_LINUX)
-       , clone_flags(0)
-       , allow_new_privs(false)
-+      , new_user_namespace(false)
- #endif  // OS_LINUX
- #if defined(OS_CHROMEOS)
-       , ctrl_terminal_fd(-1)
-diff --git a/base/process/launch.h b/base/process/launch.h
-index 9e39fba..00e4c79 100644
---- a/base/process/launch.h
-+++ b/base/process/launch.h
-@@ -115,6 +115,9 @@ struct BASE_EXPORT LaunchOptions {
-   // By default, child processes will have the PR_SET_NO_NEW_PRIVS bit set. If
-   // true, then this bit will not be set in the new child process.
-   bool allow_new_privs;
-+
-+  // If true, start the process in a new user namespace.
-+  bool new_user_namespace;
- #endif  // defined(OS_LINUX)
- 
- #if defined(OS_CHROMEOS)
-diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
-index 457234f..a99ce9b 100644
---- a/base/process/launch_posix.cc
-+++ b/base/process/launch_posix.cc
-@@ -40,6 +40,10 @@
- 
- #if defined(OS_LINUX)
- #include <sys/prctl.h>
-+#include <sched.h>
-+#if !defined(CLONE_NEWUSER)
-+#define CLONE_NEWUSER 0x10000000
-+#endif
- #endif
- 
- #if defined(OS_CHROMEOS)
-@@ -301,13 +305,23 @@ bool LaunchProcess(const std::vector<std::string>& argv,
- 
-   pid_t pid;
- #if defined(OS_LINUX)
--  if (options.clone_flags) {
-+  int map_pipe_fd[2];
-+  int flags = options.clone_flags;
-+
-+  if (options.new_user_namespace) {
-+    flags |= CLONE_NEWUSER;
-+    if (pipe(map_pipe_fd) < 0) {
-+      DPLOG(ERROR) << "user namespace pipe";
-+      return false;
-+    }
-+  }
-+
-+  if (options.clone_flags || options.new_user_namespace) {
-     // Signal handling in this function assumes the creation of a new
-     // process, so we check that a thread is not being created by mistake
-     // and that signal handling follows the process-creation rules.
--    RAW_CHECK(
--        !(options.clone_flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
--    pid = syscall(__NR_clone, options.clone_flags, 0, 0, 0);
-+    RAW_CHECK(!(flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
-+    pid = syscall(__NR_clone, flags, 0, 0, 0);
-   } else
- #endif
-   {
-@@ -328,6 +342,21 @@ bool LaunchProcess(const std::vector<std::string>& argv,
-     // DANGER: no calls to malloc or locks are allowed from now on:
-     // http://crbug.com/36678
- 
-+#if defined(OS_LINUX)
-+    if (options.new_user_namespace) {
-+      // Close the write end of the pipe so we get an EOF when the parent closes
-+      // the FD. This is to avoid race conditions when the UID/GID mappings are
-+      // written _after_ execvp().
-+      close(map_pipe_fd[1]);
-+
-+      char dummy;
-+      if (HANDLE_EINTR(read(map_pipe_fd[0], &dummy, 1)) != 0) {
-+        RAW_LOG(ERROR, "Unexpected input in uid/gid mapping pipe.");
-+        _exit(127);
-+      }
-+    }
-+#endif
-+
-     // DANGER: fork() rule: in the child, if you don't end up doing exec*(),
-     // you call _exit() instead of exit(). This is because _exit() does not
-     // call any previously-registered (in the parent) exit handlers, which
-@@ -452,6 +481,40 @@ bool LaunchProcess(const std::vector<std::string>& argv,
-     _exit(127);
-   } else {
-     // Parent process
-+#if defined(OS_LINUX)
-+    if (options.new_user_namespace) {
-+      // We need to write UID/GID mapping here to map the current user outside
-+      // the namespace to the root user inside the namespace in order to
-+      // correctly "fool" the child process.
-+      char buf[256];
-+      int map_fd, map_len;
-+
-+      snprintf(buf, sizeof(buf), "/proc/%d/uid_map", pid);
-+      map_fd = open(buf, O_RDWR);
-+      DPCHECK(map_fd >= 0);
-+      snprintf(buf, sizeof(buf), "0 %d 1", geteuid());
-+      map_len = strlen(buf);
-+      if (write(map_fd, buf, map_len) != map_len) {
-+        RAW_LOG(WARNING, "Can't write to uid_map.");
-+      }
-+      close(map_fd);
-+
-+      snprintf(buf, sizeof(buf), "/proc/%d/gid_map", pid);
-+      map_fd = open(buf, O_RDWR);
-+      DPCHECK(map_fd >= 0);
-+      snprintf(buf, sizeof(buf), "0 %d 1", getegid());
-+      map_len = strlen(buf);
-+      if (write(map_fd, buf, map_len) != map_len) {
-+        RAW_LOG(WARNING, "Can't write to gid_map.");
-+      }
-+      close(map_fd);
-+
-+      // Close the pipe on the parent, so the child can continue doing the
-+      // execvp() call.
-+      close(map_pipe_fd[1]);
-+    }
-+#endif
-+
-     if (options.wait) {
-       // While this isn't strictly disk IO, waiting for another process to
-       // finish is the sort of thing ThreadRestrictions is trying to prevent.
-diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
-index 9d63ad9..0885705 100644
---- a/content/browser/zygote_host/zygote_host_impl_linux.cc
-+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
-@@ -144,6 +144,9 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
-   // A non empty sandbox_cmd means we want a SUID sandbox.
-   using_suid_sandbox_ = !sandbox_cmd.empty();
- 
-+  bool userns_sandbox = false;
-+  const std::vector<std::string> cmd_line_unwrapped(cmd_line.argv());
-+
-   // Start up the sandbox host process and get the file descriptor for the
-   // renderers to talk to it.
-   const int sfd = RenderSandboxHostLinux::GetInstance()->GetRendererSocket();
-@@ -156,11 +159,24 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
-     sandbox_client->PrependWrapper(&cmd_line);
-     sandbox_client->SetupLaunchOptions(&options, &fds_to_map, &dummy_fd);
-     sandbox_client->SetupLaunchEnvironment();
-+    userns_sandbox = sandbox_client->IsNoSuid();
-   }
- 
-   base::ProcessHandle process = -1;
-   options.fds_to_remap = &fds_to_map;
-+  if (userns_sandbox)
-+    options.new_user_namespace = true;
-   base::LaunchProcess(cmd_line.argv(), options, &process);
-+
-+  if (process == -1 && userns_sandbox) {
-+    LOG(ERROR) << "User namespace sandbox failed to start, running without "
-+               << "sandbox! You need at least kernel 3.8.0 with CONFIG_USER_NS "
-+               << "enabled in order to use the sandbox without setuid bit.";
-+    using_suid_sandbox_ = false;
-+    options.new_user_namespace = false;
-+    base::LaunchProcess(cmd_line_unwrapped, options, &process);
-+  }
-+
-   CHECK(process != -1) << "Failed to launch zygote process";
-   dummy_fd.reset();
- 
-diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
-index 11f0602..b7b8214 100644
---- a/content/zygote/zygote_main_linux.cc
-+++ b/content/zygote/zygote_main_linux.cc
-@@ -389,6 +389,13 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox) {
-     CHECK(CreateInitProcessReaper());
-   }
- 
-+  // Don't set non-dumpable, as it causes trouble when the host tries to find
-+  // the zygote process (XXX: Not quite sure why this happens with user
-+  // namespaces). Fortunately, we also have the seccomp filter sandbox which
-+  // should disallow the use of ptrace.
-+  if (setuid_sandbox->IsNoSuid())
-+    return true;
-+
- #if !defined(OS_OPENBSD)
-   // Previously, we required that the binary be non-readable. This causes the
-   // kernel to mark the process as non-dumpable at startup. The thinking was
-diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.cc b/sandbox/linux/suid/client/setuid_sandbox_client.cc
-index fc03cdd..a972faa 100644
---- a/sandbox/linux/suid/client/setuid_sandbox_client.cc
-+++ b/sandbox/linux/suid/client/setuid_sandbox_client.cc
-@@ -229,6 +229,10 @@ bool SetuidSandboxClient::IsInNewNETNamespace() const {
-   return env_->HasVar(kSandboxNETNSEnvironmentVarName);
- }
- 
-+bool SetuidSandboxClient::IsNoSuid() const {
-+  return env_->HasVar(kSandboxNoSuidVarName);
-+}
-+
- bool SetuidSandboxClient::IsSandboxed() const {
-   return sandboxed_;
- }
-@@ -277,8 +281,7 @@ void SetuidSandboxClient::PrependWrapper(base::CommandLine* cmd_line) {
-                                     "LinuxSUIDSandboxDevelopment.";
-   }
- 
--  if (access(sandbox_binary.c_str(), X_OK) != 0 || (st.st_uid != 0) ||
--      ((st.st_mode & S_ISUID) == 0) || ((st.st_mode & S_IXOTH)) == 0) {
-+  if (access(sandbox_binary.c_str(), X_OK) != 0) {
-     LOG(FATAL) << "The SUID sandbox helper binary was found, but is not "
-                   "configured correctly. Rather than run without sandboxing "
-                   "I'm aborting now. You need to make sure that "
-@@ -286,6 +289,12 @@ void SetuidSandboxClient::PrependWrapper(base::CommandLine* cmd_line) {
-   }
- 
-   cmd_line->PrependWrapper(sandbox_binary);
-+
-+  if (!((st.st_uid == 0) &&
-+        (st.st_mode & S_ISUID) &&
-+        (st.st_mode & S_IXOTH))) {
-+    env_->SetVar(kSandboxNoSuidVarName, "1");
-+  }
- }
- 
- void SetuidSandboxClient::SetupLaunchOptions(
-diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.h b/sandbox/linux/suid/client/setuid_sandbox_client.h
-index 2bbad7a..8605475 100644
---- a/sandbox/linux/suid/client/setuid_sandbox_client.h
-+++ b/sandbox/linux/suid/client/setuid_sandbox_client.h
-@@ -66,6 +66,8 @@ class SANDBOX_EXPORT SetuidSandboxClient {
-   bool IsInNewPIDNamespace() const;
-   // Did the setuid helper create a new network namespace ?
-   bool IsInNewNETNamespace() const;
-+  // Is sandboxed without SUID binary ?
-+  bool IsNoSuid() const;
-   // Are we done and fully sandboxed ?
-   bool IsSandboxed() const;
- 
-diff --git a/sandbox/linux/suid/common/sandbox.h b/sandbox/linux/suid/common/sandbox.h
-index 9345287..2db659e 100644
---- a/sandbox/linux/suid/common/sandbox.h
-+++ b/sandbox/linux/suid/common/sandbox.h
-@@ -15,6 +15,7 @@ static const char kAdjustOOMScoreSwitch[] = "--adjust-oom-score";
- 
- static const char kSandboxDescriptorEnvironmentVarName[] = "SBX_D";
- static const char kSandboxHelperPidEnvironmentVarName[] = "SBX_HELPER_PID";
-+static const char kSandboxNoSuidVarName[] = "SBX_NO_SUID";
- 
- static const long kSUIDSandboxApiNumber = 1;
- static const char kSandboxEnvironmentApiRequest[] = "SBX_CHROME_API_RQ";
-diff --git a/sandbox/linux/suid/sandbox.c b/sandbox/linux/suid/sandbox.c
-index 7410b71..a83593d 100644
---- a/sandbox/linux/suid/sandbox.c
-+++ b/sandbox/linux/suid/sandbox.c
-@@ -330,7 +330,7 @@ static bool DropRoot() {
-     return false;
-   }
- 
--  if (setresgid(rgid, rgid, rgid)) {
-+  if (egid != rgid && setresgid(rgid, rgid, rgid)) {
-     perror("setresgid");
-     return false;
-   }
diff --git a/pkgs/applications/networking/browsers/chromium/source/sources.nix b/pkgs/applications/networking/browsers/chromium/source/sources.nix
index e1144a44afb2..b80e3b534fbb 100644
--- a/pkgs/applications/networking/browsers/chromium/source/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/sources.nix
@@ -1,21 +1,21 @@
 # This file is autogenerated from update.sh in the parent directory.
 {
   dev = {
-    version = "43.0.2327.5";
-    sha256 = "0k9jpzm1n7d3zv6f77vz33jcvmnbxnl6plabvlrf8w83kbzhi76n";
-    sha256bin32 = "1dm4xp0x02kqj82giw45qd2z12wf22h2bs0d3hnlz050innxgcb6";
-    sha256bin64 = "1b13g44y704llsnw68840zmaahj1hwzram50v8fqmff44w1b0bxb";
+    version = "47.0.2508.0";
+    sha256 = "1jmcvbimj3x91czvclnqbp8w2nfqhk2bd7bw9yd37c576md1wnw2";
+    sha256bin32 = "10spq63yfyzw419bz22r2g5rmnaxy5861715mkrcbpfm8cylzmzh";
+    sha256bin64 = "1ycdp37ikdc9w4hp9qgpzjp47zh37g01ax8x4ack202vrv0dxhsh";
   };
   beta = {
-    version = "42.0.2311.39";
-    sha256 = "0qiyg8bg9f1daf8v2jlrv54lis7156h44ak42jdx96xanvj2rvj0";
-    sha256bin32 = "0v4dr2a3n51dais2mg0dml0rmqfmalfj0zgp20a4kkarbpih1x0v";
-    sha256bin64 = "19638ik9qgfmxpzdry0qwkwpzvhlbs2h2nn1kwsjja5j49817ksx";
+    version = "46.0.2490.42";
+    sha256 = "0nw6sc6vc5vm5j133hrjq06bibaljq5calqlmzha8ckx21zrr5yy";
+    sha256bin32 = "1a1xi4w7f16chb9w1c102ya7890lj31c0fyyrwgvmpymlw9msnh0";
+    sha256bin64 = "11758h6674d7g6c5bb820x1pg5z9q78j582kd0sa0p73g5888wd0";
   };
   stable = {
-    version = "41.0.2272.89";
-    sha256 = "1saxcyqp8pz496qwdgl4dqxll6l9icbljm56w1rrkxgwrrvl4iwk";
-    sha256bin32 = "19srg0isp1k4fwixwjxm1j88bnqx9sb349n992i038c3h8raa1v4";
-    sha256bin64 = "1fb8ffgbsjsij7bd1qawa03z9pybasfig1cmdzwybmlwg2fdlvfv";
+    version = "45.0.2454.101";
+    sha256 = "1yw5xlgy5hd3iwcyf0sillq5p367fcpvp4mizpmv52cwmv52ss0v";
+    sha256bin32 = "1ll8lmkmx7v74naz1vcnrwk5ighh0skfcb66jkq4kgxrb5fjgwm5";
+    sha256bin64 = "1cwbd3n77dnbfnrfr8g0qng9xkgvz6y7mx489gpx1wsamgi42bzj";
   };
 }
diff --git a/pkgs/applications/networking/browsers/chromium/source/update.nix b/pkgs/applications/networking/browsers/chromium/source/update.nix
index 27af85de5465..49864cf1c7b0 100644
--- a/pkgs/applications/networking/browsers/chromium/source/update.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/update.nix
@@ -9,7 +9,7 @@ let
             then import ./sources.nix
             else null;
 
-  bucketURL = "http://commondatastorage.googleapis.com/"
+  bucketURL = "https://commondatastorage.googleapis.com/"
             + "chromium-browser-official";
 
   debURL = "https://dl.google.com/linux/chrome/deb/pool/main/g";
@@ -18,6 +18,7 @@ let
   debMirrors = [
     "http://95.31.35.30/chrome/pool/main/g"
     "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+    "http://repo.fdzh.org/chrome/deb/pool/main/g"
   ];
 
   tryChannel = channel: let
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh
index e82d22f34fd0..e079762420be 100755
--- a/pkgs/applications/networking/browsers/chromium/update.sh
+++ b/pkgs/applications/networking/browsers/chromium/update.sh
@@ -11,22 +11,6 @@ source "$(nix-build --no-out-link "$base_path/update.nix" -A updateHelpers)";
 
 ver_sha_table=""; # list of version:sha256
 
-sha_lookup()
-{
-    version="$1";
-
-    for ver_sha in $ver_sha_table;
-    do
-        if [ "x${ver_sha%:*}" = "x$version" ];
-        then
-            echo "${ver_sha##*:}";
-            return 0;
-        fi;
-    done;
-
-    return 1;
-}
-
 sha_insert()
 {
     version="$1";
@@ -72,22 +56,15 @@ get_channel_exprs()
         channel="${chline%%,*}";
         version="${chline##*,}";
 
-        echo -n "Checking if sha256 of version $version is cached..." >&2;
-        if sha256="$(sha_lookup "$version")";
+        sha256="$(get_sha256 "$channel" "$version")";
+        if [ $? -ne 0 ];
         then
-            echo " yes: $sha256" >&2;
-        else
-            echo " no." >&2;
-            sha256="$(get_sha256 "$channel" "$version")";
-            if [ $? -ne 0 ];
-            then
-                echo "Whoops, failed to fetch $version, trying previous" \
-                     "versions:" >&2;
-
-                sha_ver="$(get_prev_sha256 "$channel" "$version")";
-                sha256="${sha_ver%:*}";
-                version="${sha_ver#*:}";
-            fi;
+            echo "Whoops, failed to fetch $version, trying previous" \
+                 "versions:" >&2;
+
+            sha_ver="$(get_prev_sha256 "$channel" "$version")";
+            sha256="${sha_ver%:*}";
+            version="${sha_ver#*:}";
         fi;
 
         sha_insert "$version" "$sha256";
diff --git a/pkgs/applications/networking/browsers/conkeror/default.nix b/pkgs/applications/networking/browsers/conkeror/default.nix
index f6e3cd3cf8d1..007c49b2733b 100644
--- a/pkgs/applications/networking/browsers/conkeror/default.nix
+++ b/pkgs/applications/networking/browsers/conkeror/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchgit, unzip, firefox, makeWrapper }:
 
 stdenv.mkDerivation {
-  name = "conkeror-1.0pre-20150319";
+  name = "conkeror-1.0pre-20150730";
 
   src = fetchgit {
     url = git://repo.or.cz/conkeror.git;
-    rev = "6450632b3f0c315f79e7a9856658083fe8fc9c29";
-    sha256 = "18cqz1n2n6aimmgd69mdrgmkjf4207k7yz11wihka6b5z1hfiv64";
+    rev = "a1f7e879b129df5cf14ea4ce80a9c1407380ed58";
+    sha256 = "12d8949a81a670037664dd930f7efe3d54b321aad48deea68343eba9aaea8785";
   };
 
   buildInputs = [ unzip makeWrapper ];
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
       --add-flags "-app $out/libexec/conkeror/application.ini"
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A keyboard-oriented, customizable, extensible web browser";
     longDescription = ''
       Conkeror is a keyboard-oriented, highly-customizable, highly-extensible
@@ -30,8 +30,8 @@ stdenv.mkDerivation {
       self-documenting, featuring a powerful interactive help system.
     '';
     homepage = http://conkeror.org/;
-    license = [ "MPLv1.1" "GPLv2" "LGPLv2.1" ];
-    maintainers = with stdenv.lib.maintainers; [ astsmtl chaoflow ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = with licenses; [ mpl11 gpl2 lgpl21 ];
+    maintainers = with maintainers; [ astsmtl chaoflow ];
+    platforms = with platforms; linux;
   };
 }
diff --git a/pkgs/applications/networking/browsers/dillo/default.nix b/pkgs/applications/networking/browsers/dillo/default.nix
index c6c862638889..a54e5e0c3701 100644
--- a/pkgs/applications/networking/browsers/dillo/default.nix
+++ b/pkgs/applications/networking/browsers/dillo/default.nix
@@ -6,18 +6,16 @@
 , libXcursor, libXi, libXinerama }:
 
 stdenv.mkDerivation rec {
-  version = "3.0.4";
+  version = "3.0.5";
   name = "dillo-${version}";
 
   src = fetchurl {
     url = "http://www.dillo.org/download/${name}.tar.bz2";
-    sha256 = "0ffz481vgl7f12f575pmbagm8swgxgv9s9c0p8c7plhd04jsnazf";
+    sha256 = "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv";
   };
 
   buildInputs = with stdenv.lib;
-    [ fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
-
-  nativeBuildInputs = [ perl ];
+  [ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
 
   configureFlags =  "--enable-ssl";
 
diff --git a/pkgs/applications/networking/browsers/dwb/default.nix b/pkgs/applications/networking/browsers/dwb/default.nix
index f4b36d5e7567..d79a5215ce21 100644
--- a/pkgs/applications/networking/browsers/dwb/default.nix
+++ b/pkgs/applications/networking/browsers/dwb/default.nix
@@ -1,16 +1,17 @@
-{ stdenv, fetchgit, pkgconfig, makeWrapper, libsoup, webkitgtk2, gtk2, gnutls, json_c,
-  m4, glib_networking, gsettings_desktop_schemas, dconf }:
+{ stdenv, fetchgit, pkgconfig, makeWrapper, libsoup, webkitgtk2, gtk2, gnutls
+, json_c, m4, glib_networking, gsettings_desktop_schemas, dconf }:
 
 stdenv.mkDerivation {
-  name = "dwb-2014-12-15";
+  name = "dwb-2015-07-07";
 
   src = fetchgit {
     url = "https://bitbucket.org/0mark/dwb_collect";
-    rev = "b94785470b11a0b6b52eecfc3bae276796b83a0d";
-    sha256 = "09xbifj223mflj62rfhi6q7cvnkpkzkwyyqhkm8w067pdscdhyvs";
+    rev = "9a50dcc7134015c6cb1d26afb77840cf69f7c782";
+    sha256 = "03nyr3c0x5b1jqax0zh407vvi4j47zkj1i52lqs35j2d2sci3lkb";
   };
 
-  buildInputs = [ pkgconfig makeWrapper gsettings_desktop_schemas libsoup webkitgtk2 gtk2 gnutls json_c m4 ];
+  buildInputs = [ pkgconfig makeWrapper gsettings_desktop_schemas libsoup
+    webkitgtk2 gtk2 gnutls json_c m4 ];
 
   # There are Xlib and gtk warnings therefore I have set Wno-error
   makeFlags = ''PREFIX=$(out) GTK=2 CPPFLAGS="-Wno-error"'';
@@ -27,7 +28,11 @@ stdenv.mkDerivation {
     homepage = http://portix.bitbucket.org/dwb/;
     description = "A lightweight web browser based on the webkit web browser engine and the gtk toolkit";
     platforms = platforms.mesaPlatforms;
-    maintainers = with maintainers;[ pSub ];
+    maintainers = with maintainers; [ pSub ];
     license = licenses.gpl3;
+
+    # dwb is no longer maintained by portix and efforts to keep it alive
+    # were not successful, see issue #7952 for discussion.
+    broken = true;
   };
 }
diff --git a/pkgs/applications/networking/browsers/elinks/default.nix b/pkgs/applications/networking/browsers/elinks/default.nix
index 0e4fd4db1ba8..1a698b0effda 100644
--- a/pkgs/applications/networking/browsers/elinks/default.nix
+++ b/pkgs/applications/networking/browsers/elinks/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, ncurses, x11, bzip2, zlib, openssl
+{ stdenv, fetchurl, perl, ncurses, xlibsWrapper, bzip2, zlib, openssl
 , spidermonkey, gpm
 , enableGuile ? false, guile ? null   # Incompatible licenses, LGPLv3 - GPLv2
 , enablePython ? false, python ? null
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   patches = [ ./gc-init.patch ];
 
-  buildInputs = [ perl ncurses x11 bzip2 zlib openssl spidermonkey gpm ]
+  buildInputs = [ perl ncurses xlibsWrapper bzip2 zlib openssl spidermonkey gpm ]
     ++ stdenv.lib.optional enableGuile guile
     ++ stdenv.lib.optional enablePython python;
 
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index 23726f5c3d18..336c727ea151 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -30,8 +30,8 @@
 , nspr
 , nss
 , pango
-, heimdal
-, pulseaudio
+, libheimdal
+, libpulseaudio
 , systemd
 }:
 
@@ -102,8 +102,8 @@ stdenv.mkDerivation {
       nspr
       nss
       pango
-      heimdal
-      pulseaudio
+      libheimdal
+      libpulseaudio
       systemd
     ] + ":" + stdenv.lib.makeSearchPath "lib64" [
       stdenv.cc.cc
@@ -129,13 +129,9 @@ stdenv.mkDerivation {
           "$out/usr/lib/firefox-bin-${version}/$executable"
       done
 
-      for executable in \
-        firefox firefox-bin plugin-container \
-        updater crashreporter webapprt-stub libxul.so
-      do
+      find . -executable -type f -exec \
         patchelf --set-rpath "$libPath" \
-          "$out/usr/lib/firefox-bin-${version}/$executable"
-      done
+          "$out/usr/lib/firefox-bin-${version}/{}" \;
 
       # Create a desktop item.
       mkdir -p $out/share/applications
@@ -143,7 +139,7 @@ stdenv.mkDerivation {
       [Desktop Entry]
       Type=Application
       Exec=$out/bin/firefox
-      Icon=$out/lib/firefox-bin-${version}/chrome/icons/default/default256.png
+      Icon=$out/usr/lib/firefox-bin-${version}/browser/icons/mozicon128.png
       Name=Firefox
       GenericName=Web Browser
       Categories=Application;Network;
diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
index eabff067f750..b7627e52068d 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
+++ b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
@@ -8,7 +8,7 @@ version = if ARGV.empty?
             ARGV[0]
           end
 
-base_path = "http://download-installer.cdn.mozilla.net/pub/firefox/releases"
+base_path = "http://archive.mozilla.org/pub/firefox/releases"
 
 Source = Struct.new(:hash, :arch, :locale, :filename)
 
diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
index 4d002119a898..f617cf5636b8 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
@@ -4,185 +4,185 @@
 # ruby generate_source.rb > source.nix
 
 {
-  version = "37.0.2";
+  version = "41.0.1";
   sources = [
-    { locale = "ach"; arch = "linux-i686"; sha1 = "77e30ca3d592424f80cf7c6cf31e90edddbebb3d"; }
-    { locale = "ach"; arch = "linux-x86_64"; sha1 = "c101098915d8955da06751d5bdf2afe029054e3f"; }
-    { locale = "af"; arch = "linux-i686"; sha1 = "4287ba79e3aaaa601ae36643ad281c64554b847f"; }
-    { locale = "af"; arch = "linux-x86_64"; sha1 = "a787ec352ad94375600185902766ddfd91ac2d5d"; }
-    { locale = "an"; arch = "linux-i686"; sha1 = "4910dab93896ca7198b0154f0518ea5613b9a3b0"; }
-    { locale = "an"; arch = "linux-x86_64"; sha1 = "60d2c5122a67bae8d7c27fd01caa8d8eef0a143f"; }
-    { locale = "ar"; arch = "linux-i686"; sha1 = "f2b70fc8a72d3d43a28cc51776eaacff22f288ad"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha1 = "409d2981a9aff39e23bd00231761899e65e80862"; }
-    { locale = "as"; arch = "linux-i686"; sha1 = "d27e921e475608cc52e6f07a22687497eb575b01"; }
-    { locale = "as"; arch = "linux-x86_64"; sha1 = "3bfa7ccaff6b04f9f1d0a479c10412a1308caf4f"; }
-    { locale = "ast"; arch = "linux-i686"; sha1 = "d1c94f4c5fe83d52fa8e0ee586f78747616e1aaf"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha1 = "df3d38e59a5f233caa97134713e29cfa0dce6e27"; }
-    { locale = "az"; arch = "linux-i686"; sha1 = "5d01ef1267ddcc28e89009b86f2bb0a1e70fc386"; }
-    { locale = "az"; arch = "linux-x86_64"; sha1 = "440a5cd423147412335636326618e6b6b4c02416"; }
-    { locale = "be"; arch = "linux-i686"; sha1 = "1b9a9758c17ae74876ee6d09373dd99e89da05a3"; }
-    { locale = "be"; arch = "linux-x86_64"; sha1 = "940d2a07808aedc1f9c927b62f03b75270bbecd7"; }
-    { locale = "bg"; arch = "linux-i686"; sha1 = "ee3f4b60ebb6fd3639ba7e2a3acd81ffcd13ba3f"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha1 = "f97ef4f7d3264b1aaf7699fe656f7dccf2cd4238"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha1 = "1a0e2da3014a811a766164953d003c136e28c174"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "703116b7d2583d21fda09933e5d8b9244c15c6ee"; }
-    { locale = "bn-IN"; arch = "linux-i686"; sha1 = "f501f69cf65bf340d5d5ce6744394f1a83c2daf3"; }
-    { locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "eb74b7a12a2fddf8c47e9c0b0ab9359b7da10703"; }
-    { locale = "br"; arch = "linux-i686"; sha1 = "9ecc2ca3344559a63fefee144fde9faa391f1c29"; }
-    { locale = "br"; arch = "linux-x86_64"; sha1 = "5121ac58aa90f6a2e3b3f87bcf7dbd8670b7c9bf"; }
-    { locale = "bs"; arch = "linux-i686"; sha1 = "42b9ace3d28e103fb195599c7c88ae78f16c3e4c"; }
-    { locale = "bs"; arch = "linux-x86_64"; sha1 = "06b81108ec1509e36de108837f3c7ed1d96ebc0e"; }
-    { locale = "ca"; arch = "linux-i686"; sha1 = "5fb5aee535cbede12169d1208d59fb1510207a66"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha1 = "e8e6ebb6d70a809cfe8e9102ede99b7ce6239b8e"; }
-    { locale = "cs"; arch = "linux-i686"; sha1 = "13d157533dfca54b2a81625dbf3642b915f18e47"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha1 = "f7fc30f448e981a47c63c21756dcd6feff08783c"; }
-    { locale = "cy"; arch = "linux-i686"; sha1 = "c9cdc5eefca689aabb7861e1ad9f44f42b36acb0"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha1 = "a76182a74992ce7031fa2254f056694910c963d1"; }
-    { locale = "da"; arch = "linux-i686"; sha1 = "afb09acee0d8456e2bab32d7579da39244754038"; }
-    { locale = "da"; arch = "linux-x86_64"; sha1 = "26bca2ea48a814b7b3ffb91fc461867bf775c6dc"; }
-    { locale = "de"; arch = "linux-i686"; sha1 = "36a8bf02f324d929c52a6f4f38bb8cd413bbec3e"; }
-    { locale = "de"; arch = "linux-x86_64"; sha1 = "2d39187c71ad006e1fbd7ab488c7560d1c88f9cb"; }
-    { locale = "dsb"; arch = "linux-i686"; sha1 = "8c9843547aec04af07a09c2f9902583b2daab3f0"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha1 = "7778c1588580bf735e5dd4da89ab16528163a2c3"; }
-    { locale = "el"; arch = "linux-i686"; sha1 = "8aef1a9b8c6d1297d53002f1852bf52d6728c0fa"; }
-    { locale = "el"; arch = "linux-x86_64"; sha1 = "b7c2ad5da9c446939bf5e7071f84a6c3f8cd7b22"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha1 = "f85f36fcd900f642f53a74d6b843e2c67b3ab950"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha1 = "9dcc21ec189c588931e9bf38310522bb994d98c2"; }
-    { locale = "en-US"; arch = "linux-i686"; sha1 = "df80ad28979145a116d13db19c1c4e4b516c362d"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha1 = "b4e2da05fcd224ee01e2742d86d6b68bbdc108cd"; }
-    { locale = "en-ZA"; arch = "linux-i686"; sha1 = "73a83b23f2f1edcc4114df0b728e791c0626292a"; }
-    { locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "fd451735b82a9b609b7f5f09aa0461191b490e5a"; }
-    { locale = "eo"; arch = "linux-i686"; sha1 = "471873938d52ccebe8958407be1989937181ca9a"; }
-    { locale = "eo"; arch = "linux-x86_64"; sha1 = "fc8c668d3d66a4e42be9aa0fd46ca84cf061dade"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha1 = "599823d54919efb62ffd4f65fd8b873720d64b08"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha1 = "cc2e509b55de680d4c9a95ac84765c5fb5fa8b44"; }
-    { locale = "es-CL"; arch = "linux-i686"; sha1 = "754b32bbc0108f0e9c3c2e78f4c3e023e0486bff"; }
-    { locale = "es-CL"; arch = "linux-x86_64"; sha1 = "7ab4206b66783a72fbe66c59fda120dc1afd0e3c"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha1 = "b52814a56ee620693aa4d658ada67e816a3daf59"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha1 = "b4cbbc984c7cc9f566ddce0e180410ccb79adc13"; }
-    { locale = "es-MX"; arch = "linux-i686"; sha1 = "874cb197fe4498a83822fa386ac0824bffc9646d"; }
-    { locale = "es-MX"; arch = "linux-x86_64"; sha1 = "056746dae1ba7e88a3f2403fb11b17ee831b199b"; }
-    { locale = "et"; arch = "linux-i686"; sha1 = "70bb834ac4d70fb1f20625027c73a6ece8f24cc8"; }
-    { locale = "et"; arch = "linux-x86_64"; sha1 = "57202dd5e34ed24e31f30bab79b0fcbb220e81b7"; }
-    { locale = "eu"; arch = "linux-i686"; sha1 = "1e7287dfcd55f79e2157f3e49875a85f8a500c75"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha1 = "a6389d117c02ad2d9a997dcac64ba54c0310d715"; }
-    { locale = "fa"; arch = "linux-i686"; sha1 = "5f82328712e7a16ae6dab5928623b0c652b646bc"; }
-    { locale = "fa"; arch = "linux-x86_64"; sha1 = "5625f288967b3afc86a5d0136d64a1ba9581a6c1"; }
-    { locale = "ff"; arch = "linux-i686"; sha1 = "73afc152eca2aeb346b1ea46a35b24132061c6af"; }
-    { locale = "ff"; arch = "linux-x86_64"; sha1 = "ea1eab3e656f1bc68fc76425cd10be01945e7d66"; }
-    { locale = "fi"; arch = "linux-i686"; sha1 = "24d0bc254438b96307c650700ca58d4e1b2d5fe8"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha1 = "d5b8f8f2052985c5f6dcbcdd5b122094347ed26b"; }
-    { locale = "fr"; arch = "linux-i686"; sha1 = "118d981ae14f0425e27726afb516519b8de11390"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha1 = "af883c88b1a1e31a31a5a20d603b6109209c6f6b"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha1 = "44d6d4be0a1d1ddd75f476a94b3e2f6117ffca72"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "1629ea289914570257e611323618b477b2cf6576"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha1 = "c3ac3c11a490f37a6c209d753d6db5cd0c696dff"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "ea778a04a997632a38e70d3b96c5cc86545056d3"; }
-    { locale = "gd"; arch = "linux-i686"; sha1 = "2e71d653007e589cd93a90e3239beb0074d33e9d"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha1 = "d878a2c149a96e2181d110e5ae265f35c0d44b62"; }
-    { locale = "gl"; arch = "linux-i686"; sha1 = "2669d169a07cfbba062e147d12cd2a708579c76e"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha1 = "515622615f08c49a257ba6766ff0af1984c134a1"; }
-    { locale = "gu-IN"; arch = "linux-i686"; sha1 = "98bc0711616e665dc386e2c24b6a96ca5e3bfe25"; }
-    { locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "a87c089251356074bc039c88e040138db3485539"; }
-    { locale = "he"; arch = "linux-i686"; sha1 = "b8fb6b91641f89159485ea65efb98c0f3aa23d84"; }
-    { locale = "he"; arch = "linux-x86_64"; sha1 = "2a2a6cc3dcf6b988138549649ede6b030c26818c"; }
-    { locale = "hi-IN"; arch = "linux-i686"; sha1 = "611ed2ff88f2872acfd1302f2ee3defe59142dbd"; }
-    { locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "04922ffab952b7493059304d70064956cbaf5dce"; }
-    { locale = "hr"; arch = "linux-i686"; sha1 = "13a43d380043f008e26f6fb77b16e6087c622a64"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha1 = "c7d45cdd831bafba438c81efa6cf5dd3f4a5657e"; }
-    { locale = "hsb"; arch = "linux-i686"; sha1 = "319a922186b3a8a9bea749014498e7f492043b4b"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha1 = "fdd0485af2b0684436bd6207701c287a2f3d05c6"; }
-    { locale = "hu"; arch = "linux-i686"; sha1 = "33e82dea7e4a6e421ee23a94ba3a5ca5171fef34"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha1 = "fde72e1c7f93e4bcbebc9803e78d3e1cbce2d64b"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha1 = "ad702a8c047a5044ffb39039eaa74e7a86bd80ae"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "b83ff7323e9e66907a02f798cbb13a114fdc652c"; }
-    { locale = "id"; arch = "linux-i686"; sha1 = "c435f7c84ee188d09b5352163334a6458ec125ba"; }
-    { locale = "id"; arch = "linux-x86_64"; sha1 = "dc8858ac8ae9ef92013fa73f986daf6eade1ae26"; }
-    { locale = "is"; arch = "linux-i686"; sha1 = "c1d853deba529e750b8b705581aedb218f0c57d9"; }
-    { locale = "is"; arch = "linux-x86_64"; sha1 = "ba819e0bd9e630a6299fd8ef1dd99d1203abbd2d"; }
-    { locale = "it"; arch = "linux-i686"; sha1 = "1ffccd73282e28a52d99b8e98e3bf8ccefcf405b"; }
-    { locale = "it"; arch = "linux-x86_64"; sha1 = "9d68d2cb24ecf349ff504638e04272d56a636f90"; }
-    { locale = "ja"; arch = "linux-i686"; sha1 = "e7cae2f72552fdcd1ccb57c760ddd4b694218513"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha1 = "57befb5643689b0ab2b456651735c75fc47a312a"; }
-    { locale = "kk"; arch = "linux-i686"; sha1 = "345e0cf27301357d46ead1ef04fcc415c9db4f99"; }
-    { locale = "kk"; arch = "linux-x86_64"; sha1 = "ac55fbb3ca6e8ad69c7aceebad99d18ed1353cbc"; }
-    { locale = "km"; arch = "linux-i686"; sha1 = "9c8d7c1a6b79dc2ff7a28e309e24fdb2d07385ba"; }
-    { locale = "km"; arch = "linux-x86_64"; sha1 = "e122a13e5485d9a8bf12e91487cf0247fb652eea"; }
-    { locale = "kn"; arch = "linux-i686"; sha1 = "4da07bc2cdb714f8083032f99e702333ece64dfa"; }
-    { locale = "kn"; arch = "linux-x86_64"; sha1 = "48b5f227919b06ee995b68ee0b6117df8f428942"; }
-    { locale = "ko"; arch = "linux-i686"; sha1 = "ce22701571474e14ad690ccb5ee700c790667fe8"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha1 = "d901ffdec4217b389b96268f9094fc1d01cd2263"; }
-    { locale = "lij"; arch = "linux-i686"; sha1 = "2191718817cbf9eefef3f7d994849a737e9adb88"; }
-    { locale = "lij"; arch = "linux-x86_64"; sha1 = "f21245f7b00187d8b6fb3d30f6ec83510acf7546"; }
-    { locale = "lt"; arch = "linux-i686"; sha1 = "47ebc8005959e431cca843a0514c2499449ed9b2"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha1 = "18220fab22a9737d1577455ec218f5b2f9226e53"; }
-    { locale = "lv"; arch = "linux-i686"; sha1 = "e4e3d2de5a899c422b85ab1518c454d81ee54bd8"; }
-    { locale = "lv"; arch = "linux-x86_64"; sha1 = "45a2551248ee43e189492b1416ed096799857382"; }
-    { locale = "mai"; arch = "linux-i686"; sha1 = "aa1374d602fff2d393be86563d3cab72b35f7384"; }
-    { locale = "mai"; arch = "linux-x86_64"; sha1 = "acfb03ba9f3d232ff68af24d61f80c6c0a94aeca"; }
-    { locale = "mk"; arch = "linux-i686"; sha1 = "a9295e006982059b01f7bd7e2c6f8959de2a2e23"; }
-    { locale = "mk"; arch = "linux-x86_64"; sha1 = "e37dcfc6bd29e8a5034624df71726091c6c768f0"; }
-    { locale = "ml"; arch = "linux-i686"; sha1 = "b81b278d31aff4d4912da328f2c3ecdbb1ec830a"; }
-    { locale = "ml"; arch = "linux-x86_64"; sha1 = "b5c21e4d32f9f78043eee8605d131e63d9568ef1"; }
-    { locale = "mr"; arch = "linux-i686"; sha1 = "56d7cc6bf3a125c9e9f5b4799a2d34a5d941dc43"; }
-    { locale = "mr"; arch = "linux-x86_64"; sha1 = "528db467e4f64f9149f88ecd36c19c8a23835c17"; }
-    { locale = "ms"; arch = "linux-i686"; sha1 = "71482b740ea057ae9cdd15cfba89467639dbda63"; }
-    { locale = "ms"; arch = "linux-x86_64"; sha1 = "bdaff803efa7cb1e2bd31e7f7a29b4c174fb60e3"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha1 = "1f4642a4dd61ad57d833ae961ce0f0f1c6c7471a"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "3e89f59c82ae0ee52af586364bad8b6e69fdec28"; }
-    { locale = "nl"; arch = "linux-i686"; sha1 = "3292597b5f499193c8a1bd1f71b9df81925e4c87"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha1 = "ddb145bb406c096be680d246b9a727d6e926f9cb"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha1 = "9cedfe3a1f98db1a999f64bcfdc77e8df72cbbc5"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "a58a8593b49cbf1d6f6b35feb61df95a51717127"; }
-    { locale = "or"; arch = "linux-i686"; sha1 = "b80d8770ce0358674d1b2f39c7bb5b8a042a5d32"; }
-    { locale = "or"; arch = "linux-x86_64"; sha1 = "66540a388aa07190fa98aff515f09a01d1c173ee"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha1 = "d9e85c6de7487b13e91f400ce8a06c0104b08ddc"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "01da681d516c6b1febd0096c6dcd8ccbc9b6fdef"; }
-    { locale = "pl"; arch = "linux-i686"; sha1 = "faa22ad8c24d6465976412d1bd252c74936f937c"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha1 = "5410dcf34d4207e005f207fc430892f23f160461"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha1 = "0735e4827702f896332e1461dcdb3e7088e60d90"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "8b083ad5aad313afd9fa9c4e91ebbd03f205b67f"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha1 = "2fc593cebbfe2bdae3689255f46cd9c41314f00c"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "5bfa929956b1ce9a0ef2afb08ae3510326e962c6"; }
-    { locale = "rm"; arch = "linux-i686"; sha1 = "81e5a280e47fbbac82d1c0e0604828ab9937e1e6"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha1 = "fbc333306bb32eaf2b2d815efa32a5915cd15ede"; }
-    { locale = "ro"; arch = "linux-i686"; sha1 = "df75129e5c618cdfe180ddf71598704f8c652e5c"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha1 = "6b0556075110eac4263e1b2ba9bef29a3504d302"; }
-    { locale = "ru"; arch = "linux-i686"; sha1 = "3309c2e1bcc6d623a28c01cf3e61ed9d9a2d676b"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha1 = "f729504273d11b18f3b9c1f4918a18a2a63483da"; }
-    { locale = "si"; arch = "linux-i686"; sha1 = "9d54da726bd01800a7fa41de9bc0b9aaba9202b9"; }
-    { locale = "si"; arch = "linux-x86_64"; sha1 = "1550492673a913ecd0ff14ccdea0289bbfc680f6"; }
-    { locale = "sk"; arch = "linux-i686"; sha1 = "d8b97959e6d77ac9d1e0c512414824c9c037d2f0"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha1 = "1056467b1726dc0469745d5eb80407e3715c6aee"; }
-    { locale = "sl"; arch = "linux-i686"; sha1 = "9c51bd6b10adfb2dc3cf07d38981636c3a13557a"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha1 = "9f58166807385e0e95682b361e0654125311b4d6"; }
-    { locale = "son"; arch = "linux-i686"; sha1 = "cf5b8b7266e6c6c5054aeab213c37e61df68057f"; }
-    { locale = "son"; arch = "linux-x86_64"; sha1 = "36a609e8e1a2002653520b7a872562ecd34d6afc"; }
-    { locale = "sq"; arch = "linux-i686"; sha1 = "6c723410982cf03559199122ce358757670f0d61"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha1 = "7e0dae98aa342781a5e89c7f531545704d48b9b6"; }
-    { locale = "sr"; arch = "linux-i686"; sha1 = "eb000da14a0e48ffac929e51db640c721e8c9e11"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha1 = "5696ee19d90930527370021a9eb51f0579080293"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha1 = "ed9c5d17963779cebd526a65abd10d82b9b7aadc"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "7086405ab9008c91c9acbe7685590ee4497b0576"; }
-    { locale = "ta"; arch = "linux-i686"; sha1 = "0f0aea80ca1dbf604a3c0ac28a255431c1952f88"; }
-    { locale = "ta"; arch = "linux-x86_64"; sha1 = "e794ceab525cbc0314d10398a807c436ef66d17d"; }
-    { locale = "te"; arch = "linux-i686"; sha1 = "09c3427c855d7c82e44997accc80a52317d0d22d"; }
-    { locale = "te"; arch = "linux-x86_64"; sha1 = "af19d02ed9dbb366d0c7b34b538ae83bf2f6212c"; }
-    { locale = "th"; arch = "linux-i686"; sha1 = "3064e5bcea910f32fbef60acd41a9917145c48a1"; }
-    { locale = "th"; arch = "linux-x86_64"; sha1 = "a7ad2f98a7a534667370ef3f22ae00f90002a1a7"; }
-    { locale = "tr"; arch = "linux-i686"; sha1 = "76726e6bbbd89eb6469df960ec889ce781cfc68b"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha1 = "031b5eb83b6e96dcd9bdf2eabdfab7a370b0becb"; }
-    { locale = "uk"; arch = "linux-i686"; sha1 = "5d31c283914d67dcfc0af09525ab3814d0e05db4"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha1 = "a9e577f4e9aba0af6b019b566f98121586112552"; }
-    { locale = "uz"; arch = "linux-i686"; sha1 = "f84745683934f221dc5de1b970dae5c919979a71"; }
-    { locale = "uz"; arch = "linux-x86_64"; sha1 = "95aef2a68a86030078ac64346445f5f92a85fb63"; }
-    { locale = "vi"; arch = "linux-i686"; sha1 = "53e9197a3de8d63950b5d324a4da0d3533dd492c"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha1 = "be24b818a6ba1209d383c9c43af0bb0ddd82070b"; }
-    { locale = "xh"; arch = "linux-i686"; sha1 = "be808769e77a47ace01b1b2455607c56a402e795"; }
-    { locale = "xh"; arch = "linux-x86_64"; sha1 = "9feca0a4ba5ab71b05bad4ff0324c648ccae7f38"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha1 = "057c9ead60a3819eecae1f31ed512ea3e5e2aab4"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "2503f8354c07929c1b943c64ea233bb6453c2740"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha1 = "75c439a7002183aa5ad8795c1986c109714c2f00"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "add241bb07ff446df18f98f6eec18ebec3bb4e31"; }
+    { locale = "ach"; arch = "linux-i686"; sha1 = "cfb24e0fd6e10febf2381101d4a8f3de1516a732"; }
+    { locale = "ach"; arch = "linux-x86_64"; sha1 = "642d44d0fe13be4eaf4d1b495dfc7b285f7c2de7"; }
+    { locale = "af"; arch = "linux-i686"; sha1 = "b4e5ce516dbc5d4157bd1c85b23b5cc233bbf8d5"; }
+    { locale = "af"; arch = "linux-x86_64"; sha1 = "40f9b3a3ac3089f6bbf9c42a3259a484b49a659a"; }
+    { locale = "an"; arch = "linux-i686"; sha1 = "0bfa3cd6867316ca10ebe57ab2cebd03a59b096c"; }
+    { locale = "an"; arch = "linux-x86_64"; sha1 = "69369093f488223decdb77f2d12676be4aeb4d95"; }
+    { locale = "ar"; arch = "linux-i686"; sha1 = "3a091005a265c6b06a77416223caa45a51d36056"; }
+    { locale = "ar"; arch = "linux-x86_64"; sha1 = "0f9c79ae4aa4498bc9f8a3e372b26b0b000a0db9"; }
+    { locale = "as"; arch = "linux-i686"; sha1 = "cf996943809573aca05dc88ed4d843afda11710f"; }
+    { locale = "as"; arch = "linux-x86_64"; sha1 = "609860ebd75ea9731912b4fcbb343fa027ebbb77"; }
+    { locale = "ast"; arch = "linux-i686"; sha1 = "5adbd6c9194f8f214c94b587a41c5399116316d4"; }
+    { locale = "ast"; arch = "linux-x86_64"; sha1 = "feaeae77f9578a452cb98893701f14047d65a5d3"; }
+    { locale = "az"; arch = "linux-i686"; sha1 = "8718585cb6fb8b7823a572ddc21f910877287133"; }
+    { locale = "az"; arch = "linux-x86_64"; sha1 = "0834d8d8a29f805b435c2d6a29403c9180471837"; }
+    { locale = "be"; arch = "linux-i686"; sha1 = "abb5002f7275cb5b65942a735864783bf32c4d9e"; }
+    { locale = "be"; arch = "linux-x86_64"; sha1 = "bc0ef337ec080b46db30728a425695d78a908d46"; }
+    { locale = "bg"; arch = "linux-i686"; sha1 = "7bcee63546e75aa94ccd9fd65db18ebf8360e5ba"; }
+    { locale = "bg"; arch = "linux-x86_64"; sha1 = "8c9c23313710f7467bc34d2ea462dd8e9df6fcde"; }
+    { locale = "bn-BD"; arch = "linux-i686"; sha1 = "fa80f7049f926205878e1f9e99d2abba876ea9d9"; }
+    { locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "add645cc1b73affbc35c265ec2f82a9d97abddf6"; }
+    { locale = "bn-IN"; arch = "linux-i686"; sha1 = "a391b6305ecf256a5be3e7b29427ff1979b90a9e"; }
+    { locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "77d637809f26bf3214fc93d39547863d56b9949d"; }
+    { locale = "br"; arch = "linux-i686"; sha1 = "a7e0fc1a0b340232585c2b4630834e67b2ee565a"; }
+    { locale = "br"; arch = "linux-x86_64"; sha1 = "80f61d890df9c5c126846ee293a0c1295f3b52bc"; }
+    { locale = "bs"; arch = "linux-i686"; sha1 = "f007e6bac7ae796822496b4b06fed7f9112032ad"; }
+    { locale = "bs"; arch = "linux-x86_64"; sha1 = "7abfb01029faa86d2245a273381ef8e5453dc89a"; }
+    { locale = "ca"; arch = "linux-i686"; sha1 = "3bbdf70ed21803dacb4cf000055f27d8f11bf6a2"; }
+    { locale = "ca"; arch = "linux-x86_64"; sha1 = "de2696a5c031b05479d12319d57dd44dd644f1ff"; }
+    { locale = "cs"; arch = "linux-i686"; sha1 = "0d678464f64f2ba1ff8e924336992faf9f50659c"; }
+    { locale = "cs"; arch = "linux-x86_64"; sha1 = "86d68fde6d6255407b8b0f46845416141745b805"; }
+    { locale = "cy"; arch = "linux-i686"; sha1 = "eb0270f0315d31a0c8f9d2919eb4408996b4cdeb"; }
+    { locale = "cy"; arch = "linux-x86_64"; sha1 = "004c5d1cfbcf7535765bc1cb3d8a8ea2d72386e5"; }
+    { locale = "da"; arch = "linux-i686"; sha1 = "e333b6e553bc208c50c71d89d41ce0075e72bed9"; }
+    { locale = "da"; arch = "linux-x86_64"; sha1 = "dacd29f1fb10cfab134d302ca50092d50ebf8936"; }
+    { locale = "de"; arch = "linux-i686"; sha1 = "349d731fae24d6717d35e5b945add7c992a587e2"; }
+    { locale = "de"; arch = "linux-x86_64"; sha1 = "635fc409b6433c6a8b4bb48799fe76c50153f944"; }
+    { locale = "dsb"; arch = "linux-i686"; sha1 = "ed8520837da7170a1e6ba63b1c97e34730ad2f1d"; }
+    { locale = "dsb"; arch = "linux-x86_64"; sha1 = "7ea5a1cfe9f25364e9d7902cf93459478fddac5e"; }
+    { locale = "el"; arch = "linux-i686"; sha1 = "831e7929fa7fff2e410359b6a599e293f7587f71"; }
+    { locale = "el"; arch = "linux-x86_64"; sha1 = "fb9829b8a41fc07f54ca21260b0e33f178a8c392"; }
+    { locale = "en-GB"; arch = "linux-i686"; sha1 = "f122389f405bb36231139a50198e969a11898273"; }
+    { locale = "en-GB"; arch = "linux-x86_64"; sha1 = "919e765df3434d4349c3d5a8dbd5a3030f749d09"; }
+    { locale = "en-US"; arch = "linux-i686"; sha1 = "a75b1c5106eaefec2c6c68538b870f6fa21667c1"; }
+    { locale = "en-US"; arch = "linux-x86_64"; sha1 = "5ed50e7ba72beec9b46155ffc2958b7ec3c287af"; }
+    { locale = "en-ZA"; arch = "linux-i686"; sha1 = "061a683c163d48c79246a28562b7047f492f87e3"; }
+    { locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "d10d80b665c85b8e90be69b3192ec8d0ec623bf3"; }
+    { locale = "eo"; arch = "linux-i686"; sha1 = "65e68765f422a3c829faf7f25f6b832223c27711"; }
+    { locale = "eo"; arch = "linux-x86_64"; sha1 = "a036d85b96a319bd677b17f640329a247d7046ed"; }
+    { locale = "es-AR"; arch = "linux-i686"; sha1 = "9fdccf38442e4d46aca7ad7f0d2936cf2430840f"; }
+    { locale = "es-AR"; arch = "linux-x86_64"; sha1 = "c28754a1f2dd926202edaf13241d0b22de744cd1"; }
+    { locale = "es-CL"; arch = "linux-i686"; sha1 = "900b4573ee4611c537cd97ac353c9200d4a09387"; }
+    { locale = "es-CL"; arch = "linux-x86_64"; sha1 = "235dfe745c2e5de80deadc22e9e0fcfef0d48ee4"; }
+    { locale = "es-ES"; arch = "linux-i686"; sha1 = "1236b095b4a6aed92a574c96aa0d724abf6de934"; }
+    { locale = "es-ES"; arch = "linux-x86_64"; sha1 = "f4d83aa231a22f981c4177971414061b562620fb"; }
+    { locale = "es-MX"; arch = "linux-i686"; sha1 = "fd5e4b7f019b12a307909ab481579d4b717a0ae2"; }
+    { locale = "es-MX"; arch = "linux-x86_64"; sha1 = "4b4a33fd2a6aa8061008f7a22c5c970490f64127"; }
+    { locale = "et"; arch = "linux-i686"; sha1 = "db06c7ea90e42b7dd55e95c3c1c65c3464842056"; }
+    { locale = "et"; arch = "linux-x86_64"; sha1 = "2842e4cb8c1c07dc221acca4dc4965ed25a2c993"; }
+    { locale = "eu"; arch = "linux-i686"; sha1 = "bf5d17a4ba5f08574e7aaa9d34507cff22da87d6"; }
+    { locale = "eu"; arch = "linux-x86_64"; sha1 = "74fef0cd9fe3ec31e2d3127662d33d0b2f02cfe5"; }
+    { locale = "fa"; arch = "linux-i686"; sha1 = "05b07e6d1d274fafbc9a2ce201d36ea3cccbffd3"; }
+    { locale = "fa"; arch = "linux-x86_64"; sha1 = "8e9ad7e990c8091fccda1a6651a5711b61147cd9"; }
+    { locale = "ff"; arch = "linux-i686"; sha1 = "86cf25b38865428ea4c744a3fe438bf88d2994f3"; }
+    { locale = "ff"; arch = "linux-x86_64"; sha1 = "c90ad173f42267a0b8ef16ad4c0b4f29299e6eed"; }
+    { locale = "fi"; arch = "linux-i686"; sha1 = "e22411eeb539a1fde08f20b44cfb1b5ff017b582"; }
+    { locale = "fi"; arch = "linux-x86_64"; sha1 = "ed7b3383209ceb588126a0bcb4433e5bbda2b46f"; }
+    { locale = "fr"; arch = "linux-i686"; sha1 = "90c2a9fb92335d504a9dc9d8a6afedd494b69f8b"; }
+    { locale = "fr"; arch = "linux-x86_64"; sha1 = "80e4efdd06b1aa47f348e4056c134bf24a74f4cc"; }
+    { locale = "fy-NL"; arch = "linux-i686"; sha1 = "122998b498e79a8eb6daf0e877e38fafeeedd679"; }
+    { locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "99eb9694ecbd3aa892524467ced78bbc0a97d1fd"; }
+    { locale = "ga-IE"; arch = "linux-i686"; sha1 = "adb3d58c050adfb38576fcbbc62a28bfab5f196d"; }
+    { locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "9a5a8a4a78c9b2f114609552e952a5ad4f7c1603"; }
+    { locale = "gd"; arch = "linux-i686"; sha1 = "876bb49fa2399e53d68bf8bd9c403b008068c5c9"; }
+    { locale = "gd"; arch = "linux-x86_64"; sha1 = "06dd806eba47b93f85d49cfabaefbb1d4ed04f49"; }
+    { locale = "gl"; arch = "linux-i686"; sha1 = "3b5867e14e051c8405ebe79f1147c89340ccdfed"; }
+    { locale = "gl"; arch = "linux-x86_64"; sha1 = "25f5e9ca92c194cbca6d3b06089e884b8c0aed13"; }
+    { locale = "gu-IN"; arch = "linux-i686"; sha1 = "df3db443c51ea75a22a9ca0666c92c28b43db5e4"; }
+    { locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "2af9d3810a60e0cb2674c74925f9076996abef3d"; }
+    { locale = "he"; arch = "linux-i686"; sha1 = "b8b89d4a3e7836c2bf26819e917b7a655aee44d5"; }
+    { locale = "he"; arch = "linux-x86_64"; sha1 = "9a56a307750c21cdfbefda1abaf1763c2aab1875"; }
+    { locale = "hi-IN"; arch = "linux-i686"; sha1 = "0b8ddcb306d23fdd67abcc098c11420133fea996"; }
+    { locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "ae56f2f5caf403ab2f569f843e234cb983e6eb85"; }
+    { locale = "hr"; arch = "linux-i686"; sha1 = "3a829bf25984b0004edb130ef9df5d826ddac5a9"; }
+    { locale = "hr"; arch = "linux-x86_64"; sha1 = "ada293b8ab51d393eda5be8f078e69c584ef6dda"; }
+    { locale = "hsb"; arch = "linux-i686"; sha1 = "3ed330ee86404bdc6080feaeef0f6a095ca0fbee"; }
+    { locale = "hsb"; arch = "linux-x86_64"; sha1 = "ee20f0c59b0340f68f066a78f7455d9c0d95fd2f"; }
+    { locale = "hu"; arch = "linux-i686"; sha1 = "ff66764fe50e5115bf70acce753aa240feffea28"; }
+    { locale = "hu"; arch = "linux-x86_64"; sha1 = "5e7605de920f18b64b0b4974d46e5fc2f2f4e869"; }
+    { locale = "hy-AM"; arch = "linux-i686"; sha1 = "c074b5ce903cd4d8ab66ea79a15025b4eb492774"; }
+    { locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "7284c71aaa692a98a451ac862af9e0ed6519df55"; }
+    { locale = "id"; arch = "linux-i686"; sha1 = "80fa7c3cd2dea7ee4e4acccc74c8b6936cfe3fa7"; }
+    { locale = "id"; arch = "linux-x86_64"; sha1 = "7ddf8a8c2c3b590a76463e13f8f677c3cb985302"; }
+    { locale = "is"; arch = "linux-i686"; sha1 = "a52ad05729c59acfe826cb211f5da631036aa366"; }
+    { locale = "is"; arch = "linux-x86_64"; sha1 = "7e21475ef56523e7b7bd92cba2e2f4a46bb437e4"; }
+    { locale = "it"; arch = "linux-i686"; sha1 = "48191529939cf46cf0c0573a4fcd53a9703c8db8"; }
+    { locale = "it"; arch = "linux-x86_64"; sha1 = "6b1d93070e8c29573e32abd3ba7b7bf7f07ab269"; }
+    { locale = "ja"; arch = "linux-i686"; sha1 = "136b76925e0b7f766ccf9ca1ee1dcdb7a2046509"; }
+    { locale = "ja"; arch = "linux-x86_64"; sha1 = "0fe5a34c842963e83b14a79c2309b6a906eae5f8"; }
+    { locale = "kk"; arch = "linux-i686"; sha1 = "98c8801e99639de3609dcaba57eacfd2d3eaffc6"; }
+    { locale = "kk"; arch = "linux-x86_64"; sha1 = "ae3d6c13e877ae207c36c2c6e9e4eb5da3d76fff"; }
+    { locale = "km"; arch = "linux-i686"; sha1 = "4bfa2ddd28447fd34fd9e50b3f75033c8212d3c2"; }
+    { locale = "km"; arch = "linux-x86_64"; sha1 = "bbf1b20376f92c353859d671536436a22a87faa9"; }
+    { locale = "kn"; arch = "linux-i686"; sha1 = "edf31da5957d27e2b60a13d91b4520c7f67da77a"; }
+    { locale = "kn"; arch = "linux-x86_64"; sha1 = "275c253e1b913f8cc2a2437602c7edd66eaab011"; }
+    { locale = "ko"; arch = "linux-i686"; sha1 = "b213520660c5d6a1c85c3f6a11ff7c9d7f947274"; }
+    { locale = "ko"; arch = "linux-x86_64"; sha1 = "65a37cccaf55c9fa251157da1d93dcafc4ddc3b8"; }
+    { locale = "lij"; arch = "linux-i686"; sha1 = "368a3517809b7560908162efeee6d10842f537ea"; }
+    { locale = "lij"; arch = "linux-x86_64"; sha1 = "212b14ce7e8bbd96a60d23fcd8a8598f8f9ed900"; }
+    { locale = "lt"; arch = "linux-i686"; sha1 = "d27ccfe0459f6b3567818af9e5ccd5d84dd810ba"; }
+    { locale = "lt"; arch = "linux-x86_64"; sha1 = "f47264b2fa1e6f073d0300f0476fed32fb8bca48"; }
+    { locale = "lv"; arch = "linux-i686"; sha1 = "abf68081c4c011552974cf191463186fb350bf7e"; }
+    { locale = "lv"; arch = "linux-x86_64"; sha1 = "d3a3d999205418043bef4680c256f1555ab4e615"; }
+    { locale = "mai"; arch = "linux-i686"; sha1 = "2f88361cb70283bd29f641762b0ba9205a3db932"; }
+    { locale = "mai"; arch = "linux-x86_64"; sha1 = "4802f3a575d68d4e471eab9fbb638f8dcf6801f3"; }
+    { locale = "mk"; arch = "linux-i686"; sha1 = "1a82499a0b9eb4bcdc4ffcf305de7e250d4ddf91"; }
+    { locale = "mk"; arch = "linux-x86_64"; sha1 = "6d0eaf89b4f7d0821be181fbe877935db0cd6ea5"; }
+    { locale = "ml"; arch = "linux-i686"; sha1 = "16f7c329c62c7430b7e989e4d20b4fa406d34e57"; }
+    { locale = "ml"; arch = "linux-x86_64"; sha1 = "ea6b4c37abb4bde4c3c97a6de01414df336546b9"; }
+    { locale = "mr"; arch = "linux-i686"; sha1 = "e21203ab9285444b5dd19a7add22efd7750a75c4"; }
+    { locale = "mr"; arch = "linux-x86_64"; sha1 = "0992eabe63f8a9b759be99a410a600df53f70c80"; }
+    { locale = "ms"; arch = "linux-i686"; sha1 = "7c5314f43623fa25ca1813c58f8a0f3bfcb19624"; }
+    { locale = "ms"; arch = "linux-x86_64"; sha1 = "8be86e6ff4f8c0baa220143d2798c3f707db6752"; }
+    { locale = "nb-NO"; arch = "linux-i686"; sha1 = "fcc032e0ceddbe41527d8adad42c55a4a8626660"; }
+    { locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "8c4365d752844adb31df201901c951b720b7401a"; }
+    { locale = "nl"; arch = "linux-i686"; sha1 = "42adac56689caf8c2cb838bad8c14b6a81c61456"; }
+    { locale = "nl"; arch = "linux-x86_64"; sha1 = "3c835567fe91ae8c386199957b2d64d185020ca9"; }
+    { locale = "nn-NO"; arch = "linux-i686"; sha1 = "47c29bceee08af768f90f54883300704630ac478"; }
+    { locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "57ac712d8b93d19a155ebf08929ee395d5975b09"; }
+    { locale = "or"; arch = "linux-i686"; sha1 = "a96e39bb3eceb2e7252ad9e659981e14975c025b"; }
+    { locale = "or"; arch = "linux-x86_64"; sha1 = "004b52fb5ce3da6106c6875369299a85fd9f2091"; }
+    { locale = "pa-IN"; arch = "linux-i686"; sha1 = "4cf037c5878372a87f18122e8dc205ace8292f68"; }
+    { locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "30128d1d927194cc1eac4b8d297faa5ab5d74b1c"; }
+    { locale = "pl"; arch = "linux-i686"; sha1 = "93aae61fcb7f17f5e83ee1ac8af190ee9c28bf5b"; }
+    { locale = "pl"; arch = "linux-x86_64"; sha1 = "f7ae0d826144607bb814c7b1c8dde63ad679148c"; }
+    { locale = "pt-BR"; arch = "linux-i686"; sha1 = "48cedf32ea01a9548902c8ce0a998c01d2c3da12"; }
+    { locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "f31b4c25be102bc96f8795721a19c3c9fdd00043"; }
+    { locale = "pt-PT"; arch = "linux-i686"; sha1 = "e735996d21d15020bea72d9b01b0686d8fb1cd9e"; }
+    { locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "705dedac0d8b9df87301eb06251b81e8d5f34d47"; }
+    { locale = "rm"; arch = "linux-i686"; sha1 = "ad7ce0ef601763795f5998e56b89d77f466f50de"; }
+    { locale = "rm"; arch = "linux-x86_64"; sha1 = "50f08008a9a12172f379dafaea656cae3f7a2d5b"; }
+    { locale = "ro"; arch = "linux-i686"; sha1 = "6f925c413fe655a35ffad0b9d3b22bc6c9af15d1"; }
+    { locale = "ro"; arch = "linux-x86_64"; sha1 = "6592bf15bdf465100dbb00a00b5e77eb10f42cae"; }
+    { locale = "ru"; arch = "linux-i686"; sha1 = "2bf3af22a827f6ea9ba849bcbe2da6687fecaa2c"; }
+    { locale = "ru"; arch = "linux-x86_64"; sha1 = "35817ed10d23415bc8c8359fc0ac080c84a648fc"; }
+    { locale = "si"; arch = "linux-i686"; sha1 = "084109d7bb0b17da1d44d0cd954d55e1ce0b03ee"; }
+    { locale = "si"; arch = "linux-x86_64"; sha1 = "83c8e57b708a62cfa159f5a58b3d808fd3ca7e2d"; }
+    { locale = "sk"; arch = "linux-i686"; sha1 = "ea7637b7c8228ae9edab0d82bebc4bb7bda7c2a1"; }
+    { locale = "sk"; arch = "linux-x86_64"; sha1 = "6b6a13d882eb59d14d51a24be90153b6c928ce01"; }
+    { locale = "sl"; arch = "linux-i686"; sha1 = "dfbce85ca19bdb9aeecf23027a9f4e6e4eb4dba8"; }
+    { locale = "sl"; arch = "linux-x86_64"; sha1 = "09ba3868ae42a1e937f21c30d7b56d8c74668e5c"; }
+    { locale = "son"; arch = "linux-i686"; sha1 = "05c37865cea7ebc007099c14b2a38c315541477b"; }
+    { locale = "son"; arch = "linux-x86_64"; sha1 = "de6aafaaff37f9ffd5dc2a5dc793a8034340eb16"; }
+    { locale = "sq"; arch = "linux-i686"; sha1 = "0c2b5a383d33a347e2c136a76f99c6a72fdf14a1"; }
+    { locale = "sq"; arch = "linux-x86_64"; sha1 = "e6fb929c285406656ae25156eeb8e446f69cb5ec"; }
+    { locale = "sr"; arch = "linux-i686"; sha1 = "2699adadaf32b89077b2e11fff1966841e4df500"; }
+    { locale = "sr"; arch = "linux-x86_64"; sha1 = "53c0d1d7559b4a9f6310b2bbec039a9d02a42200"; }
+    { locale = "sv-SE"; arch = "linux-i686"; sha1 = "5e680c4a9f9c0be0b74fee65688a4e748b73a7ec"; }
+    { locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "feafa153bf9dc1827acb64a219e2eeecda99e49d"; }
+    { locale = "ta"; arch = "linux-i686"; sha1 = "d372de893c61af574ce5543dbea51b86e89ac24b"; }
+    { locale = "ta"; arch = "linux-x86_64"; sha1 = "774e8166ca5418be29bbf75665431301bab0c261"; }
+    { locale = "te"; arch = "linux-i686"; sha1 = "84619cf1f9fca5bc49312e6929e0e27fb38ea058"; }
+    { locale = "te"; arch = "linux-x86_64"; sha1 = "abc1565856241ebb91ceb41c6891c8db843946dd"; }
+    { locale = "th"; arch = "linux-i686"; sha1 = "337b5d30b5da8eef79992c33755956efd2c98297"; }
+    { locale = "th"; arch = "linux-x86_64"; sha1 = "02e7c2ab7ed3ff5da36cb3fca19e019961dd015c"; }
+    { locale = "tr"; arch = "linux-i686"; sha1 = "e3e0caef6f82a09edfbe9024701d829c0e5bc625"; }
+    { locale = "tr"; arch = "linux-x86_64"; sha1 = "184ffa3647d57adaf419f9209682aca913249b49"; }
+    { locale = "uk"; arch = "linux-i686"; sha1 = "0ae60e506d63373730895526bc7bcb9dc5c7b814"; }
+    { locale = "uk"; arch = "linux-x86_64"; sha1 = "f54d9fb8b704178bceed03646af17ab8e49a94d4"; }
+    { locale = "uz"; arch = "linux-i686"; sha1 = "77973a500608be31185ea172b4c4f21191838e9d"; }
+    { locale = "uz"; arch = "linux-x86_64"; sha1 = "5cb1cb1618cdc2b4515b3569c2ef8341b91d547b"; }
+    { locale = "vi"; arch = "linux-i686"; sha1 = "d957cedd5a36546f7d9cef3ddcdbdfb9dfb376a3"; }
+    { locale = "vi"; arch = "linux-x86_64"; sha1 = "992d5939c9db596dfc1e118c80a5fb2c08c96753"; }
+    { locale = "xh"; arch = "linux-i686"; sha1 = "1eab731be806a22e29940676d3766190becf9561"; }
+    { locale = "xh"; arch = "linux-x86_64"; sha1 = "fe4872dd673fdbf867921f7c1fbc36ae0be74c3e"; }
+    { locale = "zh-CN"; arch = "linux-i686"; sha1 = "8cc0e2ea6342577761a6ef9655c4f07f9dae1367"; }
+    { locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "5854d58a2ec318d5dc16f905853fa808774c956d"; }
+    { locale = "zh-TW"; arch = "linux-i686"; sha1 = "875013ebba184c5a656abb2ab4fee3948689beef"; }
+    { locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "7e416b11856aae2d52bc24b7629fc2d90719e9b1"; }
   ];
 }
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index bd8fb4d2cd7b..df176caaa2d6 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -1,9 +1,10 @@
-{ lib, stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
-, libjpeg, zlib, dbus, dbus_glib, bzip2, xlibs
+{ lib, stdenv, fetchurl, pkgconfig, gtk, gtk3, pango, perl, python, zip, libIDL
+, libjpeg, zlib, dbus, dbus_glib, bzip2, xorg
 , freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
 , yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
 , hunspell, libevent, libstartup_notification, libvpx
-, cairo, gstreamer, gst_plugins_base, icu
+, cairo, gstreamer, gst_plugins_base, icu, libpng, jemalloc, libpulseaudio
+, enableGTK3 ? false
 , debugBuild ? false
 , # If you want the resulting program to call itself "Firefox" instead
   # of "Shiretoko" or whatever, enable this option.  However, those
@@ -15,26 +16,30 @@
 
 assert stdenv.cc ? libc && stdenv.cc.libc != null;
 
-let version = "37.0.2"; in
+let
 
-stdenv.mkDerivation rec {
-  name = "firefox-${version}";
+common = { pname, version, sha1 }: stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2";
-    sha1 = "6e306d56e4e00ffdc2ddbdfbbabe4cb9fc527071";
+    url =
+      let ext = if lib.versionAtLeast version "41.0" then "xz" else "bz2";
+      in "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.${ext}";
+    inherit sha1;
   };
 
   buildInputs =
     [ pkgconfig gtk perl zip libIDL libjpeg zlib bzip2
-      python dbus dbus_glib pango freetype fontconfig xlibs.libXi
-      xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
-      alsaLib nspr nss libnotify xlibs.pixman yasm mesa
-      xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite
-      xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper
-      hunspell libevent libstartup_notification libvpx cairo
-      gstreamer gst_plugins_base icu
-    ];
+      python dbus dbus_glib pango freetype fontconfig xorg.libXi
+      xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
+      alsaLib nspr nss libnotify xorg.pixman yasm mesa
+      xorg.libXScrnSaver xorg.scrnsaverproto pysqlite
+      xorg.libXext xorg.xextproto sqlite unzip makeWrapper
+      hunspell libevent libstartup_notification libvpx /* cairo */
+      gstreamer gst_plugins_base icu libpng jemalloc
+      libpulseaudio # only headers are needed
+    ]
+    ++ lib.optional enableGTK3 gtk3;
 
   configureFlags =
     [ "--enable-application=browser"
@@ -46,25 +51,27 @@ stdenv.mkDerivation rec {
       "--with-system-nss"
       "--with-system-libevent"
       "--with-system-libvpx"
-      # "--with-system-png" # needs APNG support
-      # "--with-system-icu" # causes ‘ar: invalid option -- 'L'’ in Firefox 28.0
+      "--with-system-png" # needs APNG support
+      "--with-system-icu"
       "--enable-system-ffi"
       "--enable-system-hunspell"
       "--enable-system-pixman"
       "--enable-system-sqlite"
-      "--enable-system-cairo"
+      #"--enable-system-cairo"
       "--enable-gstreamer"
       "--enable-startup-notification"
-      # "--enable-content-sandbox"            # available since 26.0, but not much info available
-      # "--enable-content-sandbox-reporter"   # keeping disabled for now
+      "--enable-content-sandbox"            # available since 26.0, but not much info available
+      "--disable-content-sandbox-reporter"  # keeping disabled for now
       "--disable-crashreporter"
       "--disable-tests"
       "--disable-necko-wifi" # maybe we want to enable this at some point
       "--disable-installer"
       "--disable-updater"
-      "--disable-pulseaudio"
+      "--enable-jemalloc"
+      "--disable-gconf"
     ]
-    ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"]
+    ++ lib.optional enableGTK3 "--enable-default-toolkit=cairo-gtk3"
+    ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
                       else [ "--disable-debug" "--enable-release"
                              "--enable-optimize${lib.optionalString (stdenv.system == "i686-linux") "=-O1"}"
                              "--enable-strip" ])
@@ -76,7 +83,7 @@ stdenv.mkDerivation rec {
     ''
       mkdir ../objdir
       cd ../objdir
-      configureScript=../mozilla-release/configure
+      configureScript=../mozilla-*/configure
     '';
 
   preInstall =
@@ -92,10 +99,21 @@ stdenv.mkDerivation rec {
 
       # Remove SDK cruft. FIXME: move to a separate output?
       rm -rf $out/share/idl $out/include $out/lib/firefox-devel-*
+    '' + lib.optionalString enableGTK3
+      # argv[0] must point to firefox itself
+    ''
+      wrapProgram "$out/bin/firefox" \
+        --argv0 "$out/bin/.firefox-wrapped" \
+        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
+        --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
+    '' +
+      # some basic testing
+    ''
+      "$out/bin/firefox" --version
     '';
 
   meta = {
-    description = "Web browser";
+    description = "A web browser" + lib.optionalString (pname == "firefox-esr") " (Extended Support Release)";
     homepage = http://www.mozilla.com/en-US/firefox/;
     maintainers = with lib.maintainers; [ eelco ];
     platforms = lib.platforms.linux;
@@ -105,4 +123,20 @@ stdenv.mkDerivation rec {
     inherit gtk nspr version;
     isFirefox3Like = true;
   };
+};
+
+in {
+
+  firefox = common {
+    pname = "firefox";
+    version = "41.0.1";
+    sha1 = "4f6bf34b7b286e033f401d7d4112ec6310577aae";
+  };
+
+  firefox-esr = common {
+    pname = "firefox-esr";
+    version = "38.3.0esr";
+    sha1 = "57d2c255348ac13b6ffbb952c5e0d57757aa0290";
+  };
+
 }
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index 5ebd26078412..db51dc8b148b 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
   desktopItem = makeDesktopItem {
     name = browserName;
     exec = browserName + " %U";
-    icon = browserName;
+    inherit icon;
     comment = "";
     desktopName = desktopName;
     genericName = "Web Browser";
@@ -43,11 +43,10 @@ stdenv.mkDerivation {
         --suffix-each LD_PRELOAD ':' "$(cat $(filterExisting $(addSuffix /extra-ld-preload $plugins)))" \
         --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \
         --prefix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))" \
-        --set MOZ_OBJDIR "$(ls -d "${browser}/lib/${browserName}*")"
+        --set MOZ_OBJDIR "$(ls -d "${browser}/lib/${browserName}"*)"
 
     ${ lib.optionalString libtrick
     ''
-    sed -e "s@exec @exec -a '$out/bin/${browserName}${nameSuffix}' @" -i "$out/bin/${browserName}${nameSuffix}"
     libdirname="$(echo "${browser}/lib/${browserName}"*)"
     libdirbasename="$(basename "$libdirname")"
     mkdir -p "$out/lib/$libdirbasename"
@@ -58,8 +57,14 @@ stdenv.mkDerivation {
     ''
     }
 
-    mkdir -p $out/share/icons
-    ln -s $out/lib/${browserName}${nameSuffix}/browser/icons/mozicon128.png $out/share/icons/${browserName}.png
+    if [ -e "${browser}/share/icons" ]; then
+        mkdir -p "$out/share"
+        ln -s "${browser}/share/icons" "$out/share/icons"
+    else
+        mkdir -p "$out/share/icons/hicolor/128x128/apps"
+        ln -s "$out/lib/$libdirbasename/browser/icons/mozicon128.png" \
+            "$out/share/icons/hicolor/128x128/apps/${browserName}.png"
+    fi
 
     mkdir -p $out/share/applications
     cp $desktopItem/share/applications/* $out/share/applications
diff --git a/pkgs/applications/networking/browsers/jumanji/default.nix b/pkgs/applications/networking/browsers/jumanji/default.nix
index ff4fea90bff1..1969a1f502f2 100644
--- a/pkgs/applications/networking/browsers/jumanji/default.nix
+++ b/pkgs/applications/networking/browsers/jumanji/default.nix
@@ -1,22 +1,24 @@
-{ stdenv, fetchgit, pkgconfig, girara, gtk, webkitgtk, glib_networking, makeWrapper }:
+{ stdenv, fetchgit, pkgconfig, girara, gtk, webkitgtk, glib_networking, makeWrapper
+, gsettings_desktop_schemas }:
 
 stdenv.mkDerivation rec {
   name = "jumanji-${version}";
-  version = "20140622";
+  version = "20150107";
 
   src = fetchgit {
     url = git://pwmt.org/jumanji.git;
-    rev = "8f40487304a6a931487c411b25001f2bb5cf8d4f";
-    sha256 = "1hdk09rayyv2knxzn4n7d41dvh34gdk9ra75x7g9n985w13pkinv";
+    rev = "f8e04e5b5a9fec47d49ca63a096e5d35be281151";
+    sha256 = "1xq06iabr4y76faf4w1cx6fhwdksfsxggz1ndny7icniwjzk98h9";
   };
 
-  buildInputs = [ girara pkgconfig gtk webkitgtk makeWrapper ];
+  buildInputs = [ girara pkgconfig gtk webkitgtk makeWrapper gsettings_desktop_schemas ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
   preFixup=''
     wrapProgram "$out/bin/jumanji" \
-     --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules"
+     --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \
+     --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/browsers/kwebkitpart/default.nix b/pkgs/applications/networking/browsers/kwebkitpart/default.nix
index cb3a0e9eac49..173ffcb93304 100644
--- a/pkgs/applications/networking/browsers/kwebkitpart/default.nix
+++ b/pkgs/applications/networking/browsers/kwebkitpart/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, kdelibs }:
+{ stdenv, fetchgit, automoc4, cmake, perl, pkgconfig, kdelibs }:
 
 stdenv.mkDerivation rec {
   name = "kwebkitpart-${version}";
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ kdelibs ];
 
+  nativeBuildInputs = [ automoc4 cmake perl pkgconfig ];
+
   meta = with stdenv.lib; {
     platforms = platforms.linux;
     maintainers = [ maintainers.phreedom ];
diff --git a/pkgs/applications/networking/browsers/links2/default.nix b/pkgs/applications/networking/browsers/links2/default.nix
index 9b9d9ab6db17..518a4d667dda 100644
--- a/pkgs/applications/networking/browsers/links2/default.nix
+++ b/pkgs/applications/networking/browsers/links2/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl
-, gpm, openssl, pkgconfig # Misc.
-, libpng, libjpeg, libtiff # graphic formats
+, gpm, openssl, pkgconfig, libev # Misc.
+, libpng, libjpeg, libtiff, librsvg # graphic formats
 , bzip2, zlib, xz # Transfer encodings
 , enableFB ? true
 , enableDirectFB ? false, directfb
@@ -8,16 +8,16 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.8";
+  version = "2.11";
   name = "links2-${version}";
 
   src = fetchurl {
     url = "${meta.homepage}/download/links-${version}.tar.bz2";
-    sha256 = "15h07498z52jfdahzgvkphg1f7qvxnpbyfn2xmsls0d2dwwdll3r";
+    sha256 = "0gqjdz1brdcx02mcwchi6bxy1i1ljbw5zpc6b321skrrsqkzkxw7";
   };
 
   buildInputs =
-    [ libpng libjpeg libtiff gpm openssl xz bzip2 zlib ]
+    [ libev librsvg libpng libjpeg libtiff gpm openssl xz bzip2 zlib ]
     ++ stdenv.lib.optionals enableX11 [ libX11 libXau libXt ]
     ++ stdenv.lib.optional enableDirectFB [ directfb ];
 
diff --git a/pkgs/applications/networking/browsers/midori/default.nix b/pkgs/applications/networking/browsers/midori/default.nix
index d398cdd29421..5cdfcf5e975a 100644
--- a/pkgs/applications/networking/browsers/midori/default.nix
+++ b/pkgs/applications/networking/browsers/midori/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
 , gtk3, webkitgtk, librsvg, libnotify, sqlite
-, glib_networking, gsettings_desktop_schemas
+, glib_networking, gsettings_desktop_schemas, libsoup
 }:
 
 let
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     cmake pkgconfig intltool vala makeWrapper
     webkitgtk librsvg libnotify sqlite
+    (libsoup.override {gnomeSupport = true;})
   ];
 
   cmakeFlags = ''
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
new file mode 100644
index 000000000000..4b05dcd2675d
--- /dev/null
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, xorg, gtk, glib, gdk_pixbuf, dpkg, libXext, libXfixes
+, libXrender, libuuid, libXrandr, libXcomposite, libpulseaudio
+}:
+
+with stdenv.lib;
+
+let
+
+  rpathInstaller = makeLibraryPath
+    [gtk glib stdenv.cc.cc];
+
+  rpathPlugin = makeLibraryPath
+    [ stdenv.cc.cc gtk glib xorg.libX11 gdk_pixbuf libXext libXfixes libXrender libXrandr libuuid libXcomposite libpulseaudio ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "bluejeans-${version}";
+
+  version = "2.100.102.8";
+
+  src = fetchurl {
+    url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
+    sha256 = "18f8jmhxvqy1yiiwlsssj7rjlfcb41xn16hnl6wv8r8r2mmic4v8";
+  };
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  unpackPhase = "${dpkg}/bin/dpkg-deb -x $src .";
+
+  installPhase =
+    ''
+      mkdir -p $out
+      cp -R usr/lib $out/
+
+      plugins=$out/lib/mozilla/plugins
+      patchelf \
+        --set-rpath "${rpathPlugin}" \
+        $plugins/npbjnplugin_${version}.so
+
+      patchelf \
+        --set-rpath "${rpathInstaller}" \
+        $plugins/npbjninstallplugin_${version}.so
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  passthru.mozillaPlugin = "/lib/mozilla/plugins";
+
+  meta = {
+    homepage = http://bluejeans.com;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with maintainers; [ ocharles kamilchm ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 35541b39ee87..01c643408757 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -36,7 +36,7 @@
 
 let
   # -> http://get.adobe.com/flashplayer/
-  version = "11.2.202.457";
+  version = "11.2.202.508";
 
   src =
     if stdenv.system == "x86_64-linux" then
@@ -46,21 +46,21 @@ let
         throw "no x86_64 debugging version available"
       else rec {
         inherit version;
-        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
-        sha256 = "0nkr6p4h5l03ywsj1sbap359cl1x9rq3m12j9gvwvbvn935rmyr2";
+        url = "http://fpdownload.adobe.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
+        sha256 = "1i0301vnz94pxcwm9wk1jjyv7gwywy6p7z26ikd5cg259myxbg75";
       }
     else if stdenv.system == "i686-linux" then
       if debug then
         throw "flash debugging version is outdated and probably broken" /* {
         # The debug version also contains a player
         version = "11.1";
-        url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
+        url = http://fpdownload.adobe.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
         sha256 = "0jn7klq2cyqasj6nxfka2l8nsf7sn7hi6443nv6dd2sb3g7m6x92";
       }*/
       else rec {
         inherit version;
-        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
-        sha256 = "0qil5rb61bkn80fij31nv29q2wa7bxiwwxgy5zlkm2hsyrz3y4kc";
+        url = "http://fpdownload.adobe.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
+        sha256 = "1483bi34ymchv1cqg57whxhlrhhvwhcw33zjgwzmy7bacxbkj9ia";
       }
     else throw "Flash Player is not supported on this platform";
 
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix
index 3b473019600f..b8aa17803e9f 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   passthru.mozillaPlugin = "/lib/mozilla/plugins";
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A browser plugin to manage Swedish BankID:s";
     longDescription = ''
       FriBID is an open source software for the Swedish e-id system
@@ -30,8 +30,8 @@ stdenv.mkDerivation rec {
       support.
     '';
     homepage = http://fribid.se;
-    license = [ "GPLv2" "MPLv1" ];
-    maintainers = [ stdenv.lib.maintainers.edwtjo ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = with licenses; [ gpl2 mpl10 ];
+    maintainers = [ maintainers.edwtjo ];
+    platforms = with platforms; linux;
   };
 }
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix
index 05e3a8bf613a..ba40925e1d1e 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/gecko-mediaplayer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, dbus, dbus_glib, browser, x11
+{ stdenv, fetchurl, pkgconfig, glib, dbus, dbus_glib, browser, xlibsWrapper
 , GConf, gnome_mplayer, mplayer, gmtk
 }:
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "913fd39e70c564cb210c2544a88869f9d1a448184421f000b14b2bc5ba718b49";
   };
 
-  buildInputs = [ pkgconfig glib dbus dbus_glib browser x11 GConf browser gmtk ];
+  buildInputs = [ pkgconfig glib dbus dbus_glib browser xlibsWrapper GConf browser gmtk ];
 
   # !!! fix this
   preBuild =
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix
index bdccb932e1c3..6fd953636a83 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, rpm, cpio, mesa, xorg, cairo
 , libpng, gtk, glib, gdk_pixbuf, fontconfig, freetype, curl
-, dbus_glib, alsaLib, pulseaudio, udev, pango
+, dbus_glib, alsaLib, libpulseaudio, udev, pango
 }:
 
 with stdenv.lib;
@@ -34,7 +34,7 @@ let
       xorg.libXrandr
       stdenv.cc.cc
       alsaLib
-      pulseaudio
+      libpulseaudio
       dbus_glib
       udev
       curl
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
index 37d5cbe039f1..17012850a319 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
@@ -1,36 +1,30 @@
-a :  
-let 
-  fetchurl = a.fetchurl;
+{ stdenv, fetchurl, firefox, libX11, xproto }:
+
+stdenv.mkDerivation rec {
+  name = "mozplugger-${version}";
+  version = "2.1.6";
 
-  version = a.lib.attrByPath ["version"] "1.12.0" a; 
-  buildInputs = with a; [
-    firefox libX11 xproto
-  ];
-in
-rec {
   src = fetchurl {
     url = "http://mozplugger.mozdev.org/files/mozplugger-${version}.tar.gz";
-    sha256 = "1vpggfmbv4h3srk80rgidd020i03hrkpb7cfxkwagkcd0zcal4hk";
+    sha256 = "1vszkq4kdbaxsrqr2xn9rq6ipza9fngdri79gvjqk3bvsdmg0k19";
   };
 
-  inherit buildInputs;
-  configureFlags = [];
-  makeFlags = ["linux" "prefix=" "root=$out"];
+  buildInputs = [ firefox libX11 xproto ];
 
-  preBuild = a.fullDepEntry(''
-    sed -e s@/usr/@"$out/"@g -i mozplugger.c
-  '') ["doUnpack" "minInit"];
+  installPhase = ''
+    mkdir -p "$out/etc" "$out/bin" "$out/lib/mozilla/plugins" "$out/share/man/man7"
+    cp mozpluggerrc "$out/etc"
+    cp mozplugger-{helper,controller,linker,update} "$out/bin"
+    cp mozplugger.so "$out/lib/mozilla/plugins"
+    cp mozplugger.7 "$out/share/man/man7"
 
-  postInstall = a.fullDepEntry(''
-    mkdir -p $out/share/${name}/plugin
-    ln -s $out/lib/mozilla/plugins/mozplugger.so $out/share/${name}/plugin
-  '') ["doMakeInstall" "minInit" "defEnsureDir"];
+    mkdir -p "$out/share/${name}/plugin"
+    ln -s "$out/lib/mozilla/plugins/mozplugger.so" "$out/share/${name}/plugin"
+  '';
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["preBuild" "doMakeInstall" "postInstall"];
-      
-  name = "mozplugger-" + version;
   meta = {
     description = "Mozilla plugin for launching external program for handling in-page objects";
+    homepage = http://mozplugger.mozdev.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix
index 105e5904715c..07e152e91dbc 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix
@@ -28,9 +28,9 @@ stdenv.mkDerivation rec {
     mozillaPlugin = "/lib/mozilla/plugins";
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A browser plugin that uses mplayer to play digital media from websites";
     homepage = http://mplayerplug-in.sourceforge.net/;
-    license = [ "GPLv2+" "LGPLv2+" "MPLv1+" ];
+    license = with licenses; [ gpl2Plus lgpl2Plus "MPLv1+" ];
   };
 }
diff --git a/pkgs/applications/networking/browsers/netsurf/libCSS.nix b/pkgs/applications/networking/browsers/netsurf/libCSS.nix
index ede053aeca3f..99192fda113a 100644
--- a/pkgs/applications/networking/browsers/netsurf/libCSS.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libCSS.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [pkgconfig libParserUtils libwapcaplet];
 
   meta = { 
-    description = "libCSS is a CSS parser and selection engine, written in C"; # used by netsurf
+    description = "A CSS parser and selection engine, written in C"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libcss/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
index 32bede76e432..3c2b7693be7f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [pkgconfig];
 
   meta = { 
-    description = "LibParserUtils is a library for building efficient parsers, written in C";
+    description = "A library for building efficient parsers, written in C";
     homepage = http://www.netsurf-browser.org/projects/libparserutils/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
index d370002543ce..083850bb5450 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = { 
-    description = "Libnsbmp is a decoding library for BMP and ICO image file formats"; # used by netsurf
+    description = "A decoding library for BMP and ICO image file formats"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libnsbmp/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
index a4502d2354de..5e2acb4f313f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = {
-    description = "Libnsbmp is a decoding library for gif image file formats"; # used by netsurf
+    description = "A decoding library for gif image file formats"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libnsgif/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
index 5aa15d7b80d0..a4cd09d1d860 100644
--- a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = { 
-    description = "LibWapcaplet is a string internment library, written in C";
+    description = "A string internment library, written in C";
     homepage = http://www.netsurf-browser.org/projects/libwapcaplet/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/netsurf.nix b/pkgs/applications/networking/browsers/netsurf/netsurf.nix
index 2d2253f43ef1..f7e90b61a941 100644
--- a/pkgs/applications/networking/browsers/netsurf/netsurf.nix
+++ b/pkgs/applications/networking/browsers/netsurf/netsurf.nix
@@ -23,12 +23,15 @@ stdenv.mkDerivation {
   buildPhase = "make PREFIX=$out";
   installPhase = "make PREFIX=$out install";
 
-  meta = { 
+  meta = with args.lib; {
     description = "free, open source web browser";
     homepage = http://www.netsurf-browser.org;
-    license = ["GPLv2" /* visual worrk : */ "MIT" ];
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
+    license = with licenses; [
+      gpl2
+      mit /* visual work */
+    ];
+    maintainers = with maintainers; [ marcweber ];
+    platforms = platforms.linux;
   };
 
 }
diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix
index ced16da5f7ee..b29f2d1974c0 100644
--- a/pkgs/applications/networking/browsers/opera/default.nix
+++ b/pkgs/applications/networking/browsers/opera/default.nix
@@ -6,7 +6,7 @@
 , kdeSupport ? false, qt4, kdelibs
 }:
 
-assert stdenv.isLinux && stdenv.cc.cc.isGNU or false && stdenv.cc.libc != null;
+assert stdenv.isLinux && stdenv.cc.isGNU && stdenv.cc.libc != null;
 
 let
   mirror = http://get.geo.opera.com/pub/opera;
diff --git a/pkgs/applications/networking/browsers/qutebrowser/default.nix b/pkgs/applications/networking/browsers/qutebrowser/default.nix
new file mode 100644
index 000000000000..7f2190ab82c6
--- /dev/null
+++ b/pkgs/applications/networking/browsers/qutebrowser/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchgit, python, buildPythonPackage, qt5, pyqt5, jinja2, pygments, pyyaml, pypeg2,
+  gst_plugins_base, gst_plugins_good, gst_ffmpeg }:
+
+let version = "0.4.0"; in
+
+buildPythonPackage {
+  name = "qutebrowser-${version}";
+  namePrefix = "";
+
+  src = fetchgit {
+    url = "https://github.com/The-Compiler/qutebrowser.git";
+    rev = "e11fcda240eaad1b83b26c7d6424c427d2ad3b96";
+    sha256 = "0hpd6fibzcl0s6jrsj60rs12dyliwr05r8h9wvngh19a3pmg8q74";
+  };
+
+  # Needs tox
+  doCheck = false;
+
+  propagatedBuildInputs = [
+    python pyyaml pyqt5 jinja2 pygments pypeg2
+  ];
+
+  makeWrapperArgs = ''
+    --prefix GST_PLUGIN_PATH : "${stdenv.lib.makeSearchPath "lib/gstreamer-0.10"
+       [ gst_plugins_base gst_plugins_good gst_ffmpeg ]}"
+    --prefix QT_PLUGIN_PATH : "${qt5.multimedia}/lib/qt5/plugins"
+  '';
+
+  meta = {
+    homepage = https://github.com/The-Compiler/qutebrowser;
+    description = "Keyboard-focused browser with a minimal GUI";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ stdenv.lib.maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/applications/networking/browsers/rekonq/default.nix b/pkgs/applications/networking/browsers/rekonq/default.nix
index ce36e26d6fcc..df8ad1eb3508 100644
--- a/pkgs/applications/networking/browsers/rekonq/default.nix
+++ b/pkgs/applications/networking/browsers/rekonq/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, kde4, gettext, pkgconfig, shared_desktop_ontologies, qca2, qoauth }:
+{ stdenv, fetchurl, automoc4, cmake, gettext, perl, pkgconfig
+, kde4, shared_desktop_ontologies, qca2, qoauth }:
 
 assert builtins.compareVersions "4.8.3" kde4.release != 1; # https://bugs.kde.org/show_bug.cgi?id=306077
 
@@ -12,7 +13,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ kde4.kdelibs qca2 qoauth ];
 
-  nativeBuildInputs = [ gettext pkgconfig shared_desktop_ontologies ];
+  nativeBuildInputs = [
+    automoc4 cmake gettext perl pkgconfig shared_desktop_ontologies
+  ];
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
diff --git a/pkgs/applications/networking/browsers/vimb/default.nix b/pkgs/applications/networking/browsers/vimb/default.nix
index b30b2e260e32..84a2870b6d0a 100644
--- a/pkgs/applications/networking/browsers/vimb/default.nix
+++ b/pkgs/applications/networking/browsers/vimb/default.nix
@@ -11,11 +11,6 @@ stdenv.mkDerivation rec {
     sha256 = "0h9m5qfs09lb0dz8a79yccmm3a5rv6z8gi5pkyfh8fqkgkh2940p";
   };
 
-  # Nixos default ca bundle
-  patchPhase = ''
-    sed -i s,/etc/ssl/certs/ca-certificates.crt,/etc/ssl/certs/ca-bundle.crt, src/config.def.h
-  '';
-
   buildInputs = [ makeWrapper gtk libsoup pkgconfig webkit gsettings_desktop_schemas ];
 
   makeFlags = [ "PREFIX=$(out)" ];
diff --git a/pkgs/applications/networking/browsers/vimprobable2/default.nix b/pkgs/applications/networking/browsers/vimprobable2/default.nix
index 8e1e00795d24..6f8eede9b3f8 100644
--- a/pkgs/applications/networking/browsers/vimprobable2/default.nix
+++ b/pkgs/applications/networking/browsers/vimprobable2/default.nix
@@ -9,11 +9,6 @@ stdenv.mkDerivation rec {
     sha256 = "13jdximksh9r3cgd2f8vms0pbsn3x0gxvyqdqiw16xp5fmdx5kzr";
   };
 
-  # Nixos default ca bundle
-  patchPhase = ''
-    sed -i s,/etc/ssl/certs/ca-certificates.crt,/etc/ssl/certs/ca-bundle.crt, config.h
-  '';
-
   buildInputs = [ makeWrapper gtk libsoup libX11 perl pkgconfig webkit gsettings_desktop_schemas ];
 
   installPhase = ''
diff --git a/pkgs/applications/networking/browsers/w3m/cygwin.patch b/pkgs/applications/networking/browsers/w3m/cygwin.patch
new file mode 100644
index 000000000000..767cc289b5f6
--- /dev/null
+++ b/pkgs/applications/networking/browsers/w3m/cygwin.patch
@@ -0,0 +1,1710 @@
+diff -ur w3m-0.5.3/config.guess new/w3m-0.5.3/config.guess
+--- w3m-0.5.3/config.guess	2004-08-04 13:32:27.000000000 -0400
++++ w3m-0.5.3/config.guess	2013-04-28 18:43:59.480227700 -0400
+@@ -1,13 +1,14 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
++#   2011, 2012, 2013 Free Software Foundation, Inc.
+ 
+-timestamp='2004-03-12'
++timestamp='2012-12-29'
+ 
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
++# the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful, but
+@@ -16,24 +17,22 @@
+ # General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++# along with this program; if not, see <http://www.gnu.org/licenses/>.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# Originally written by Per Bothner <per@bothner.com>.
+-# Please send patches to <config-patches@gnu.org>.  Submit a context
+-# diff and a properly formatted ChangeLog entry.
++# the same distribution terms that you use for the rest of that
++# program.  This Exception is an additional permission under section 7
++# of the GNU General Public License, version 3 ("GPLv3").
++#
++# Originally written by Per Bothner. 
+ #
+-# This script attempts to guess a canonical system name similar to
+-# config.sub.  If it succeeds, it prints the system name on stdout, and
+-# exits with 0.  Otherwise, it exits with 1.
++# You can get the latest version of this script from:
++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ #
+-# The plan is that this can be called by configure scripts if you
+-# don't specify an explicit build system type.
++# Please send patches with a ChangeLog entry to config-patches@gnu.org.
++
+ 
+ me=`echo "$0" | sed -e 's,.*/,,'`
+ 
+@@ -53,8 +52,9 @@
+ GNU config.guess ($timestamp)
+ 
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+-Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
++2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
++2012, 2013 Free Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -66,11 +66,11 @@
+ while test $# -gt 0 ; do
+   case $1 in
+     --time-stamp | --time* | -t )
+-       echo "$timestamp" ; exit 0 ;;
++       echo "$timestamp" ; exit ;;
+     --version | -v )
+-       echo "$version" ; exit 0 ;;
++       echo "$version" ; exit ;;
+     --help | --h* | -h )
+-       echo "$usage"; exit 0 ;;
++       echo "$usage"; exit ;;
+     -- )     # Stop option processing
+        shift; break ;;
+     - )	# Use stdin as input.
+@@ -104,7 +104,7 @@
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+  { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -123,7 +123,7 @@
+ 	;;
+  ,,*)   CC_FOR_BUILD=$CC ;;
+  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+-esac ;'
++esac ; set_cc_for_build= ;'
+ 
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 1994-08-24)
+@@ -141,7 +141,7 @@
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+     *:NetBSD:*:*)
+ 	# NetBSD (nbsd) targets should (where applicable) match one or
+-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
++	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+ 	# switched to ELF, *-*-netbsd* would select the old
+ 	# object file format.  This provides both forward
+@@ -158,6 +158,7 @@
+ 	    arm*) machine=arm-unknown ;;
+ 	    sh3el) machine=shl-unknown ;;
+ 	    sh3eb) machine=sh-unknown ;;
++	    sh5el) machine=sh5le-unknown ;;
+ 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ 	esac
+ 	# The Operating System including object format, if it has switched
+@@ -166,7 +167,7 @@
+ 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ 		eval $set_cc_for_build
+ 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+-			| grep __ELF__ >/dev/null
++			| grep -q __ELF__
+ 		then
+ 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ 		    # Return netbsd for either.  FIX?
+@@ -176,7 +177,7 @@
+ 		fi
+ 		;;
+ 	    *)
+-	        os=netbsd
++		os=netbsd
+ 		;;
+ 	esac
+ 	# The OS release
+@@ -196,71 +197,34 @@
+ 	# contains redundant information, the shorter form:
+ 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ 	echo "${machine}-${os}${release}"
+-	exit 0 ;;
+-    amd64:OpenBSD:*:*)
+-	echo x86_64-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    amiga:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    arc:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    cats:OpenBSD:*:*)
+-	echo arm-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    hp300:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mac68k:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    macppc:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvme68k:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvme88k:OpenBSD:*:*)
+-	echo m88k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvmeppc:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    pegasos:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    pmax:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    sgi:OpenBSD:*:*)
+-	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    sun3:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    wgrisc:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
++    *:Bitrig:*:*)
++	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
++	exit ;;
+     *:OpenBSD:*:*)
+-	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
++	exit ;;
+     *:ekkoBSD:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
++    *:SolidBSD:*:*)
++	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
++	exit ;;
+     macppc:MirBSD:*:*)
+-	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
++	exit ;;
+     *:MirBSD:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     alpha:OSF1:*:*)
+ 	case $UNAME_RELEASE in
+ 	*4.0)
+ 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ 		;;
+ 	*5.*)
+-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ 		;;
+ 	esac
+ 	# According to Compaq, /usr/sbin/psrinfo has been available on
+@@ -306,40 +270,46 @@
+ 	# A Xn.n version is an unreleased experimental baselevel.
+ 	# 1.2 uses "1.2" for uname -r.
+ 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-	exit 0 ;;
+-    Alpha*:OpenVMS:*:*)
+-	echo alpha-hp-vms
+-	exit 0 ;;
++	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
++	exitcode=$?
++	trap '' 0
++	exit $exitcode ;;
+     Alpha\ *:Windows_NT*:*)
+ 	# How do we know it's Interix rather than the generic POSIX subsystem?
+ 	# Should we change UNAME_MACHINE based on the output of uname instead
+ 	# of the specific Alpha model?
+ 	echo alpha-pc-interix
+-	exit 0 ;;
++	exit ;;
+     21064:Windows_NT:50:3)
+ 	echo alpha-dec-winnt3.5
+-	exit 0 ;;
++	exit ;;
+     Amiga*:UNIX_System_V:4.0:*)
+ 	echo m68k-unknown-sysv4
+-	exit 0;;
++	exit ;;
+     *:[Aa]miga[Oo][Ss]:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-amigaos
+-	exit 0 ;;
++	exit ;;
+     *:[Mm]orph[Oo][Ss]:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-morphos
+-	exit 0 ;;
++	exit ;;
+     *:OS/390:*:*)
+ 	echo i370-ibm-openedition
+-	exit 0 ;;
++	exit ;;
++    *:z/VM:*:*)
++	echo s390-ibm-zvmoe
++	exit ;;
+     *:OS400:*:*)
+-        echo powerpc-ibm-os400
+-	exit 0 ;;
++	echo powerpc-ibm-os400
++	exit ;;
+     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ 	echo arm-acorn-riscix${UNAME_RELEASE}
+-	exit 0;;
++	exit ;;
++    arm*:riscos:*:*|arm*:RISCOS:*:*)
++	echo arm-unknown-riscos
++	exit ;;
+     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ 	echo hppa1.1-hitachi-hiuxmpp
+-	exit 0;;
++	exit ;;
+     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+@@ -347,32 +317,51 @@
+ 	else
+ 		echo pyramid-pyramid-bsd
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     NILE*:*:*:dcosx)
+ 	echo pyramid-pyramid-svr4
+-	exit 0 ;;
++	exit ;;
+     DRS?6000:unix:4.0:6*)
+ 	echo sparc-icl-nx6
+-	exit 0 ;;
+-    DRS?6000:UNIX_SV:4.2*:7*)
++	exit ;;
++    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ 	case `/usr/bin/uname -p` in
+-	    sparc) echo sparc-icl-nx7 && exit 0 ;;
++	    sparc) echo sparc-icl-nx7; exit ;;
+ 	esac ;;
++    s390x:SunOS:*:*)
++	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
+     sun4H:SunOS:5.*:*)
+ 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
+-    i86pc:SunOS:5.*:*)
+-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
++    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
++	echo i386-pc-auroraux${UNAME_RELEASE}
++	exit ;;
++    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
++	eval $set_cc_for_build
++	SUN_ARCH="i386"
++	# If there is a compiler, see if it is configured for 64-bit objects.
++	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
++	# This test works for both compilers.
++	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
++		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		grep IS_64BIT_ARCH >/dev/null
++	    then
++		SUN_ARCH="x86_64"
++	    fi
++	fi
++	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
+     sun4*:SunOS:6*:*)
+ 	# According to config.sub, this is the proper way to canonicalize
+ 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+ 	# it's likely to be more like Solaris than SunOS4.
+ 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     sun4*:SunOS:*:*)
+ 	case "`/usr/bin/arch -k`" in
+ 	    Series*|S4*)
+@@ -381,10 +370,10 @@
+ 	esac
+ 	# Japanese Language versions have a version number like `4.1.3-JL'.
+ 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+-	exit 0 ;;
++	exit ;;
+     sun3*:SunOS:*:*)
+ 	echo m68k-sun-sunos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     sun*:*:4.2BSD:*)
+ 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ 	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+@@ -396,10 +385,10 @@
+ 		echo sparc-sun-sunos${UNAME_RELEASE}
+ 		;;
+ 	esac
+-	exit 0 ;;
++	exit ;;
+     aushp:SunOS:*:*)
+ 	echo sparc-auspex-sunos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     # The situation for MiNT is a little confusing.  The machine name
+     # can be virtually everything (everything which is not
+     # "atarist" or "atariste" at least should have a processor
+@@ -409,41 +398,41 @@
+     # MiNT.  But MiNT is downward compatible to TOS, so this should
+     # be no problem.
+     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+-        echo m68k-atari-mint${UNAME_RELEASE}
+-	exit 0 ;;
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
+     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ 	echo m68k-atari-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	exit ;;
+     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+-        echo m68k-atari-mint${UNAME_RELEASE}
+-	exit 0 ;;
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
+     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+-        echo m68k-milan-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-milan-mint${UNAME_RELEASE}
++	exit ;;
+     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+-        echo m68k-hades-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-hades-mint${UNAME_RELEASE}
++	exit ;;
+     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+-        echo m68k-unknown-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-unknown-mint${UNAME_RELEASE}
++	exit ;;
+     m68k:machten:*:*)
+ 	echo m68k-apple-machten${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     powerpc:machten:*:*)
+ 	echo powerpc-apple-machten${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     RISC*:Mach:*:*)
+ 	echo mips-dec-mach_bsd4.3
+-	exit 0 ;;
++	exit ;;
+     RISC*:ULTRIX:*:*)
+ 	echo mips-dec-ultrix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     VAX*:ULTRIX*:*:*)
+ 	echo vax-dec-ultrix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     2020:CLIX:*:* | 2430:CLIX:*:*)
+ 	echo clipper-intergraph-clix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     mips:*:*:UMIPS | mips:*:*:RISCos)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+@@ -467,35 +456,36 @@
+ 	  exit (-1);
+ 	}
+ EOF
+-	$CC_FOR_BUILD -o $dummy $dummy.c \
+-	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+-	  && exit 0
++	$CC_FOR_BUILD -o $dummy $dummy.c &&
++	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
++	  SYSTEM_NAME=`$dummy $dummyarg` &&
++	    { echo "$SYSTEM_NAME"; exit; }
+ 	echo mips-mips-riscos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     Motorola:PowerMAX_OS:*:*)
+ 	echo powerpc-motorola-powermax
+-	exit 0 ;;
++	exit ;;
+     Motorola:*:4.3:PL8-*)
+ 	echo powerpc-harris-powermax
+-	exit 0 ;;
++	exit ;;
+     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ 	echo powerpc-harris-powermax
+-	exit 0 ;;
++	exit ;;
+     Night_Hawk:Power_UNIX:*:*)
+ 	echo powerpc-harris-powerunix
+-	exit 0 ;;
++	exit ;;
+     m88k:CX/UX:7*:*)
+ 	echo m88k-harris-cxux7
+-	exit 0 ;;
++	exit ;;
+     m88k:*:4*:R4*)
+ 	echo m88k-motorola-sysv4
+-	exit 0 ;;
++	exit ;;
+     m88k:*:3*:R3*)
+ 	echo m88k-motorola-sysv3
+-	exit 0 ;;
++	exit ;;
+     AViiON:dgux:*:*)
+-        # DG/UX returns AViiON for all architectures
+-        UNAME_PROCESSOR=`/usr/bin/uname -p`
++	# DG/UX returns AViiON for all architectures
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
+ 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ 	then
+ 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+@@ -508,29 +498,29 @@
+ 	else
+ 	    echo i586-dg-dgux${UNAME_RELEASE}
+ 	fi
+- 	exit 0 ;;
++	exit ;;
+     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+ 	echo m88k-dolphin-sysv3
+-	exit 0 ;;
++	exit ;;
+     M88*:*:R3*:*)
+ 	# Delta 88k system running SVR3
+ 	echo m88k-motorola-sysv3
+-	exit 0 ;;
++	exit ;;
+     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ 	echo m88k-tektronix-sysv3
+-	exit 0 ;;
++	exit ;;
+     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ 	echo m68k-tektronix-bsd
+-	exit 0 ;;
++	exit ;;
+     *:IRIX*:*:*)
+ 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+-	exit 0 ;;
++	exit ;;
+     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+-	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+-	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
++	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
++	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+     i*86:AIX:*:*)
+ 	echo i386-ibm-aix
+-	exit 0 ;;
++	exit ;;
+     ia64:AIX:*:*)
+ 	if [ -x /usr/bin/oslevel ] ; then
+ 		IBM_REV=`/usr/bin/oslevel`
+@@ -538,7 +528,7 @@
+ 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ 	fi
+ 	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+-	exit 0 ;;
++	exit ;;
+     *:AIX:2:3)
+ 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ 		eval $set_cc_for_build
+@@ -553,15 +543,19 @@
+ 			exit(0);
+ 			}
+ EOF
+-		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+-		echo rs6000-ibm-aix3.2.5
++		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
++		then
++			echo "$SYSTEM_NAME"
++		else
++			echo rs6000-ibm-aix3.2.5
++		fi
+ 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ 		echo rs6000-ibm-aix3.2.4
+ 	else
+ 		echo rs6000-ibm-aix3.2
+ 	fi
+-	exit 0 ;;
+-    *:AIX:*:[45])
++	exit ;;
++    *:AIX:*:[4567])
+ 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ 		IBM_ARCH=rs6000
+@@ -574,28 +568,28 @@
+ 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ 	fi
+ 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+-	exit 0 ;;
++	exit ;;
+     *:AIX:*:*)
+ 	echo rs6000-ibm-aix
+-	exit 0 ;;
++	exit ;;
+     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ 	echo romp-ibm-bsd4.4
+-	exit 0 ;;
++	exit ;;
+     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+ 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+-	exit 0 ;;                           # report: romp-ibm BSD 4.3
++	exit ;;                             # report: romp-ibm BSD 4.3
+     *:BOSX:*:*)
+ 	echo rs6000-bull-bosx
+-	exit 0 ;;
++	exit ;;
+     DPX/2?00:B.O.S.:*:*)
+ 	echo m68k-bull-sysv3
+-	exit 0 ;;
++	exit ;;
+     9000/[34]??:4.3bsd:1.*:*)
+ 	echo m68k-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ 	echo m68k-hp-bsd4.4
+-	exit 0 ;;
++	exit ;;
+     9000/[34678]??:HP-UX:*:*)
+ 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ 	case "${UNAME_MACHINE}" in
+@@ -604,52 +598,52 @@
+ 	    9000/[678][0-9][0-9])
+ 		if [ -x /usr/bin/getconf ]; then
+ 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+-                    case "${sc_cpu_version}" in
+-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+-                      532)                      # CPU_PA_RISC2_0
+-                        case "${sc_kernel_bits}" in
+-                          32) HP_ARCH="hppa2.0n" ;;
+-                          64) HP_ARCH="hppa2.0w" ;;
++		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
++		    case "${sc_cpu_version}" in
++		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
++		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
++		      532)                      # CPU_PA_RISC2_0
++			case "${sc_kernel_bits}" in
++			  32) HP_ARCH="hppa2.0n" ;;
++			  64) HP_ARCH="hppa2.0w" ;;
+ 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+-                        esac ;;
+-                    esac
++			esac ;;
++		    esac
+ 		fi
+ 		if [ "${HP_ARCH}" = "" ]; then
+ 		    eval $set_cc_for_build
+-		    sed 's/^              //' << EOF >$dummy.c
++		    sed 's/^		//' << EOF >$dummy.c
+ 
+-              #define _HPUX_SOURCE
+-              #include <stdlib.h>
+-              #include <unistd.h>
+-
+-              int main ()
+-              {
+-              #if defined(_SC_KERNEL_BITS)
+-                  long bits = sysconf(_SC_KERNEL_BITS);
+-              #endif
+-                  long cpu  = sysconf (_SC_CPU_VERSION);
+-
+-                  switch (cpu)
+-              	{
+-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+-              	case CPU_PA_RISC2_0:
+-              #if defined(_SC_KERNEL_BITS)
+-              	    switch (bits)
+-              		{
+-              		case 64: puts ("hppa2.0w"); break;
+-              		case 32: puts ("hppa2.0n"); break;
+-              		default: puts ("hppa2.0"); break;
+-              		} break;
+-              #else  /* !defined(_SC_KERNEL_BITS) */
+-              	    puts ("hppa2.0"); break;
+-              #endif
+-              	default: puts ("hppa1.0"); break;
+-              	}
+-                  exit (0);
+-              }
++		#define _HPUX_SOURCE
++		#include <stdlib.h>
++		#include <unistd.h>
++
++		int main ()
++		{
++		#if defined(_SC_KERNEL_BITS)
++		    long bits = sysconf(_SC_KERNEL_BITS);
++		#endif
++		    long cpu  = sysconf (_SC_CPU_VERSION);
++
++		    switch (cpu)
++			{
++			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
++			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
++			case CPU_PA_RISC2_0:
++		#if defined(_SC_KERNEL_BITS)
++			    switch (bits)
++				{
++				case 64: puts ("hppa2.0w"); break;
++				case 32: puts ("hppa2.0n"); break;
++				default: puts ("hppa2.0"); break;
++				} break;
++		#else  /* !defined(_SC_KERNEL_BITS) */
++			    puts ("hppa2.0"); break;
++		#endif
++			default: puts ("hppa1.0"); break;
++			}
++		    exit (0);
++		}
+ EOF
+ 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ 		    test -z "$HP_ARCH" && HP_ARCH=hppa
+@@ -657,9 +651,19 @@
+ 	esac
+ 	if [ ${HP_ARCH} = "hppa2.0w" ]
+ 	then
+-	    # avoid double evaluation of $set_cc_for_build
+-	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
++	    eval $set_cc_for_build
++
++	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
++	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
++	    # generating 64-bit code.  GNU and HP use different nomenclature:
++	    #
++	    # $ CC_FOR_BUILD=cc ./config.guess
++	    # => hppa2.0w-hp-hpux11.23
++	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
++	    # => hppa64-hp-hpux11.23
++
++	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
++		grep -q __LP64__
+ 	    then
+ 		HP_ARCH="hppa2.0w"
+ 	    else
+@@ -667,11 +671,11 @@
+ 	    fi
+ 	fi
+ 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+-	exit 0 ;;
++	exit ;;
+     ia64:HP-UX:*:*)
+ 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ 	echo ia64-hp-hpux${HPUX_REV}
+-	exit 0 ;;
++	exit ;;
+     3050*:HI-UX:*:*)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+@@ -699,224 +703,269 @@
+ 	  exit (0);
+ 	}
+ EOF
+-	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
++	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
++		{ echo "$SYSTEM_NAME"; exit; }
+ 	echo unknown-hitachi-hiuxwe2
+-	exit 0 ;;
++	exit ;;
+     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 	echo hppa1.1-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     9000/8??:4.3bsd:*:*)
+ 	echo hppa1.0-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ 	echo hppa1.0-hp-mpeix
+-	exit 0 ;;
++	exit ;;
+     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ 	echo hppa1.1-hp-osf
+-	exit 0 ;;
++	exit ;;
+     hp8??:OSF1:*:*)
+ 	echo hppa1.0-hp-osf
+-	exit 0 ;;
++	exit ;;
+     i*86:OSF1:*:*)
+ 	if [ -x /usr/sbin/sysversion ] ; then
+ 	    echo ${UNAME_MACHINE}-unknown-osf1mk
+ 	else
+ 	    echo ${UNAME_MACHINE}-unknown-osf1
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     parisc*:Lites*:*:*)
+ 	echo hppa1.1-hp-lites
+-	exit 0 ;;
++	exit ;;
+     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ 	echo c1-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ 	if getsysinfo -f scalar_acc
+ 	then echo c32-convex-bsd
+ 	else echo c2-convex-bsd
+ 	fi
+-        exit 0 ;;
++	exit ;;
+     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ 	echo c34-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ 	echo c38-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ 	echo c4-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     CRAY*Y-MP:*:*:*)
+ 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*[A-Z]90:*:*:*)
+ 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ 	      -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*TS:*:*:*)
+ 	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*T3E:*:*:*)
+ 	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*SV1:*:*:*)
+ 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     *:UNICOS/mp:*:*)
+-	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
+     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+-        exit 0 ;;
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
++	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
+     5000:UNIX_System_V:4.*:*)
+-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+-	exit 0 ;;
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
++	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
+     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     sparc*:BSD/OS:*:*)
+ 	echo sparc-unknown-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:BSD/OS:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:FreeBSD:*:*)
+-	# Determine whether the default compiler uses glibc.
+-	eval $set_cc_for_build
+-	sed 's/^	//' << EOF >$dummy.c
+-	#include <features.h>
+-	#if __GLIBC__ >= 2
+-	LIBC=gnu
+-	#else
+-	LIBC=
+-	#endif
+-EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+-	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using
+-	# FreeBSD's kernel, but not the complete OS.
+-	case ${LIBC} in gnu) kernel_only='k' ;; esac
+-	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+-	exit 0 ;;
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
++	case ${UNAME_PROCESSOR} in
++	    amd64)
++		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	    *)
++		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	esac
++	exit ;;
+     i*:CYGWIN*:*)
+ 	echo ${UNAME_MACHINE}-pc-cygwin
+-	exit 0 ;;
+-    i*:MINGW*:*)
++	exit ;;
++    *:MINGW64*:*)
++	echo ${UNAME_MACHINE}-pc-mingw64
++	exit ;;
++    *:MINGW*:*)
+ 	echo ${UNAME_MACHINE}-pc-mingw32
+-	exit 0 ;;
++	exit ;;
++    i*:MSYS*:*)
++	echo ${UNAME_MACHINE}-pc-msys
++	exit ;;
++    i*:windows32*:*)
++	# uname -m includes "-pc" on this system.
++	echo ${UNAME_MACHINE}-mingw32
++	exit ;;
+     i*:PW*:*)
+ 	echo ${UNAME_MACHINE}-pc-pw32
+-	exit 0 ;;
+-    x86:Interix*:[34]*)
+-	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+-	exit 0 ;;
++	exit ;;
++    *:Interix*:*)
++	case ${UNAME_MACHINE} in
++	    x86)
++		echo i586-pc-interix${UNAME_RELEASE}
++		exit ;;
++	    authenticamd | genuineintel | EM64T)
++		echo x86_64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	    IA64)
++		echo ia64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	esac ;;
+     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ 	echo i${UNAME_MACHINE}-pc-mks
+-	exit 0 ;;
++	exit ;;
++    8664:Windows_NT:*)
++	echo x86_64-pc-mks
++	exit ;;
+     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ 	# How do we know it's Interix rather than the generic POSIX subsystem?
+ 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ 	# UNAME_MACHINE based on the output of uname instead of i386?
+ 	echo i586-pc-interix
+-	exit 0 ;;
++	exit ;;
+     i*:UWIN*:*)
+ 	echo ${UNAME_MACHINE}-pc-uwin
+-	exit 0 ;;
++	exit ;;
++    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
++	echo x86_64-unknown-cygwin
++	exit ;;
+     p*:CYGWIN*:*)
+ 	echo powerpcle-unknown-cygwin
+-	exit 0 ;;
++	exit ;;
+     prep*:SunOS:5.*:*)
+ 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     *:GNU:*:*)
+ 	# the GNU system
+ 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+-	exit 0 ;;
++	exit ;;
+     *:GNU/*:*:*)
+ 	# other systems with GNU libc and userland
+ 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+-	exit 0 ;;
++	exit ;;
+     i*86:Minix:*:*)
+ 	echo ${UNAME_MACHINE}-pc-minix
+-	exit 0 ;;
++	exit ;;
++    aarch64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    aarch64_be:Linux:*:*)
++	UNAME_MACHINE=aarch64_be
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    alpha:Linux:*:*)
++	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
++	  EV5)   UNAME_MACHINE=alphaev5 ;;
++	  EV56)  UNAME_MACHINE=alphaev56 ;;
++	  PCA56) UNAME_MACHINE=alphapca56 ;;
++	  PCA57) UNAME_MACHINE=alphapca56 ;;
++	  EV6)   UNAME_MACHINE=alphaev6 ;;
++	  EV67)  UNAME_MACHINE=alphaev67 ;;
++	  EV68*) UNAME_MACHINE=alphaev68 ;;
++	esac
++	objdump --private-headers /bin/sh | grep -q ld.so.1
++	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
++	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++	exit ;;
+     arm*:Linux:*:*)
++	eval $set_cc_for_build
++	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
++	    | grep -q __ARM_EABI__
++	then
++	    echo ${UNAME_MACHINE}-unknown-linux-gnu
++	else
++	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
++		| grep -q __ARM_PCS_VFP
++	    then
++		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
++	    else
++		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
++	    fi
++	fi
++	exit ;;
++    avr32*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
+     cris:Linux:*:*)
+-	echo cris-axis-linux-gnu
+-	exit 0 ;;
+-    ia64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    m32r*:Linux:*:*)
++	echo ${UNAME_MACHINE}-axis-linux-gnu
++	exit ;;
++    crisv32:Linux:*:*)
++	echo ${UNAME_MACHINE}-axis-linux-gnu
++	exit ;;
++    frv:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    m68*:Linux:*:*)
++	exit ;;
++    hexagon:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    mips:Linux:*:*)
++	exit ;;
++    i*86:Linux:*:*)
++	LIBC=gnu
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+-	#undef CPU
+-	#undef mips
+-	#undef mipsel
+-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+-	CPU=mipsel
+-	#else
+-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+-	CPU=mips
+-	#else
+-	CPU=
+-	#endif
++	#ifdef __dietlibc__
++	LIBC=dietlibc
+ 	#endif
+ EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+-	;;
+-    mips64:Linux:*:*)
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
++	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
++	exit ;;
++    ia64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    m32r*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    m68*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    mips:Linux:*:* | mips64:Linux:*:*)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+ 	#undef CPU
+-	#undef mips64
+-	#undef mips64el
++	#undef ${UNAME_MACHINE}
++	#undef ${UNAME_MACHINE}el
+ 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+-	CPU=mips64el
++	CPU=${UNAME_MACHINE}el
+ 	#else
+ 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+-	CPU=mips64
++	CPU=${UNAME_MACHINE}
+ 	#else
+ 	CPU=
+ 	#endif
+ 	#endif
+ EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
++	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ 	;;
+-    ppc:Linux:*:*)
+-	echo powerpc-unknown-linux-gnu
+-	exit 0 ;;
+-    ppc64:Linux:*:*)
+-	echo powerpc64-unknown-linux-gnu
+-	exit 0 ;;
+-    alpha:Linux:*:*)
+-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+-	  EV5)   UNAME_MACHINE=alphaev5 ;;
+-	  EV56)  UNAME_MACHINE=alphaev56 ;;
+-	  PCA56) UNAME_MACHINE=alphapca56 ;;
+-	  PCA57) UNAME_MACHINE=alphapca56 ;;
+-	  EV6)   UNAME_MACHINE=alphaev6 ;;
+-	  EV67)  UNAME_MACHINE=alphaev67 ;;
+-	  EV68*) UNAME_MACHINE=alphaev68 ;;
+-        esac
+-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+-	exit 0 ;;
++    or32:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    padre:Linux:*:*)
++	echo sparc-unknown-linux-gnu
++	exit ;;
++    parisc64:Linux:*:* | hppa64:Linux:*:*)
++	echo hppa64-unknown-linux-gnu
++	exit ;;
+     parisc:Linux:*:* | hppa:Linux:*:*)
+ 	# Look for CPU level
+ 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+@@ -924,115 +973,71 @@
+ 	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ 	  *)    echo hppa-unknown-linux-gnu ;;
+ 	esac
+-	exit 0 ;;
+-    parisc64:Linux:*:* | hppa64:Linux:*:*)
+-	echo hppa64-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
++    ppc64:Linux:*:*)
++	echo powerpc64-unknown-linux-gnu
++	exit ;;
++    ppc:Linux:*:*)
++	echo powerpc-unknown-linux-gnu
++	exit ;;
+     s390:Linux:*:* | s390x:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-ibm-linux
+-	exit 0 ;;
++	exit ;;
+     sh64*:Linux:*:*)
+-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
+     sh*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
+     sparc:Linux:*:* | sparc64:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
++    tile*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    vax:Linux:*:*)
++	echo ${UNAME_MACHINE}-dec-linux-gnu
++	exit ;;
+     x86_64:Linux:*:*)
+-	echo x86_64-unknown-linux-gnu
+-	exit 0 ;;
+-    i*86:Linux:*:*)
+-	# The BFD linker knows what the default object file format is, so
+-	# first see if it will tell us. cd to the root directory to prevent
+-	# problems with other programs or directories called `ld' in the path.
+-	# Set LC_ALL=C to ensure ld outputs messages in English.
+-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+-			 | sed -ne '/supported targets:/!d
+-				    s/[ 	][ 	]*/ /g
+-				    s/.*supported targets: *//
+-				    s/ .*//
+-				    p'`
+-        case "$ld_supported_targets" in
+-	  elf32-i386)
+-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+-		;;
+-	  a.out-i386-linux)
+-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+-		exit 0 ;;
+-	  coff-i386)
+-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+-		exit 0 ;;
+-	  "")
+-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+-		# one that does not give us useful --help.
+-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+-		exit 0 ;;
+-	esac
+-	# Determine whether the default compiler is a.out or elf
+-	eval $set_cc_for_build
+-	sed 's/^	//' << EOF >$dummy.c
+-	#include <features.h>
+-	#ifdef __ELF__
+-	# ifdef __GLIBC__
+-	#  if __GLIBC__ >= 2
+-	LIBC=gnu
+-	#  else
+-	LIBC=gnulibc1
+-	#  endif
+-	# else
+-	LIBC=gnulibc1
+-	# endif
+-	#else
+-	#ifdef __INTEL_COMPILER
+-	LIBC=gnu
+-	#else
+-	LIBC=gnuaout
+-	#endif
+-	#endif
+-	#ifdef __dietlibc__
+-	LIBC=dietlibc
+-	#endif
+-EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+-	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+-	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+-	;;
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    xtensa*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
+     i*86:DYNIX/ptx:4*:*)
+ 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ 	# earlier versions are messed up and put the nodename in both
+ 	# sysname and nodename.
+ 	echo i386-sequent-sysv4
+-	exit 0 ;;
++	exit ;;
+     i*86:UNIX_SV:4.2MP:2.*)
+-        # Unixware is an offshoot of SVR4, but it has its own version
+-        # number series starting with 2...
+-        # I am not positive that other SVR4 systems won't match this,
++	# Unixware is an offshoot of SVR4, but it has its own version
++	# number series starting with 2...
++	# I am not positive that other SVR4 systems won't match this,
+ 	# I just have to hope.  -- rms.
+-        # Use sysv4.2uw... so that sysv4* matches it.
++	# Use sysv4.2uw... so that sysv4* matches it.
+ 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+-	exit 0 ;;
++	exit ;;
+     i*86:OS/2:*:*)
+ 	# If we were able to find `uname', then EMX Unix compatibility
+ 	# is probably installed.
+ 	echo ${UNAME_MACHINE}-pc-os2-emx
+-	exit 0 ;;
++	exit ;;
+     i*86:XTS-300:*:STOP)
+ 	echo ${UNAME_MACHINE}-unknown-stop
+-	exit 0 ;;
++	exit ;;
+     i*86:atheos:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-atheos
+-	exit 0 ;;
+-	i*86:syllable:*:*)
++	exit ;;
++    i*86:syllable:*:*)
+ 	echo ${UNAME_MACHINE}-pc-syllable
+-	exit 0 ;;
+-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
++	exit ;;
++    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ 	echo i386-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     i*86:*DOS:*:*)
+ 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+-	exit 0 ;;
++	exit ;;
+     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -1040,15 +1045,16 @@
+ 	else
+ 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ 	fi
+-	exit 0 ;;
+-    i*86:*:5:[78]*)
++	exit ;;
++    i*86:*:5:[678]*)
++	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+ 	case `/bin/uname -X | grep "^Machine"` in
+ 	    *486*)	     UNAME_MACHINE=i486 ;;
+ 	    *Pentium)	     UNAME_MACHINE=i586 ;;
+ 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ 	esac
+ 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+-	exit 0 ;;
++	exit ;;
+     i*86:*:3.2:*)
+ 	if test -f /usr/options/cb.name; then
+ 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+@@ -1066,73 +1072,86 @@
+ 	else
+ 		echo ${UNAME_MACHINE}-pc-sysv32
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     pc:*:*:*)
+ 	# Left here for compatibility:
+-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+-        # the processor, so we play safe by assuming i386.
+-	echo i386-pc-msdosdjgpp
+-        exit 0 ;;
++	# uname -m prints for DJGPP always 'pc', but it prints nothing about
++	# the processor, so we play safe by assuming i586.
++	# Note: whatever this is, it MUST be the same as what config.sub
++	# prints for the "djgpp" host, or else GDB configury will decide that
++	# this is a cross-build.
++	echo i586-pc-msdosdjgpp
++	exit ;;
+     Intel:Mach:3*:*)
+ 	echo i386-pc-mach3
+-	exit 0 ;;
++	exit ;;
+     paragon:*:*:*)
+ 	echo i860-intel-osf1
+-	exit 0 ;;
++	exit ;;
+     i860:*:4.*:*) # i860-SVR4
+ 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ 	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ 	else # Add other i860-SVR4 vendors below as they are discovered.
+ 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     mini*:CTIX:SYS*5:*)
+ 	# "miniframe"
+ 	echo m68010-convergent-sysv
+-	exit 0 ;;
++	exit ;;
+     mc68k:UNIX:SYSTEM5:3.51m)
+ 	echo m68k-convergent-sysv
+-	exit 0 ;;
++	exit ;;
+     M680?0:D-NIX:5.3:*)
+ 	echo m68k-diab-dnix
+-	exit 0 ;;
+-    M68*:*:R3V[567]*:*)
+-	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
++	exit ;;
++    M68*:*:R3V[5678]*:*)
++	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ 	OS_REL=''
+ 	test -r /etc/.relid \
+ 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+-	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
++	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+-	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
++	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+-          && echo i486-ncr-sysv4 && exit 0 ;;
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	  && { echo i486-ncr-sysv4; exit; } ;;
++    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
++	OS_REL='.3'
++	test -r /etc/.relid \
++	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ 	echo m68k-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     mc68030:UNIX_System_V:4.*:*)
+ 	echo m68k-atari-sysv4
+-	exit 0 ;;
++	exit ;;
+     TSUNAMI:LynxOS:2.*:*)
+ 	echo sparc-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     rs6000:LynxOS:2.*:*)
+ 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
+-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
++	exit ;;
++    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     SM[BE]S:UNIX_SV:*:*)
+ 	echo mips-dde-sysv${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     RM*:ReliantUNIX-*:*:*)
+ 	echo mips-sni-sysv4
+-	exit 0 ;;
++	exit ;;
+     RM*:SINIX-*:*:*)
+ 	echo mips-sni-sysv4
+-	exit 0 ;;
++	exit ;;
+     *:SINIX-*:*:*)
+ 	if uname -p 2>/dev/null >/dev/null ; then
+ 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+@@ -1140,68 +1159,97 @@
+ 	else
+ 		echo ns32k-sni-sysv
+ 	fi
+-	exit 0 ;;
+-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+-        echo i586-unisys-sysv4
+-        exit 0 ;;
++	exit ;;
++    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
++			# says <Richard.M.Bartel@ccMail.Census.GOV>
++	echo i586-unisys-sysv4
++	exit ;;
+     *:UNIX_System_V:4*:FTX*)
+ 	# From Gerald Hewes <hewes@openmarket.com>.
+ 	# How about differentiating between stratus architectures? -djm
+ 	echo hppa1.1-stratus-sysv4
+-	exit 0 ;;
++	exit ;;
+     *:*:*:FTX*)
+ 	# From seanf@swdc.stratus.com.
+ 	echo i860-stratus-sysv4
+-	exit 0 ;;
++	exit ;;
++    i*86:VOS:*:*)
++	# From Paul.Green@stratus.com.
++	echo ${UNAME_MACHINE}-stratus-vos
++	exit ;;
+     *:VOS:*:*)
+ 	# From Paul.Green@stratus.com.
+ 	echo hppa1.1-stratus-vos
+-	exit 0 ;;
++	exit ;;
+     mc68*:A/UX:*:*)
+ 	echo m68k-apple-aux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     news*:NEWS-OS:6*:*)
+ 	echo mips-sony-newsos6
+-	exit 0 ;;
++	exit ;;
+     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ 	if [ -d /usr/nec ]; then
+-	        echo mips-nec-sysv${UNAME_RELEASE}
++		echo mips-nec-sysv${UNAME_RELEASE}
+ 	else
+-	        echo mips-unknown-sysv${UNAME_RELEASE}
++		echo mips-unknown-sysv${UNAME_RELEASE}
+ 	fi
+-        exit 0 ;;
++	exit ;;
+     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+ 	echo powerpc-be-beos
+-	exit 0 ;;
++	exit ;;
+     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+ 	echo powerpc-apple-beos
+-	exit 0 ;;
++	exit ;;
+     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+ 	echo i586-pc-beos
+-	exit 0 ;;
++	exit ;;
++    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
++	echo i586-pc-haiku
++	exit ;;
++    x86_64:Haiku:*:*)
++	echo x86_64-unknown-haiku
++	exit ;;
+     SX-4:SUPER-UX:*:*)
+ 	echo sx4-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     SX-5:SUPER-UX:*:*)
+ 	echo sx5-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     SX-6:SUPER-UX:*:*)
+ 	echo sx6-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
++    SX-7:SUPER-UX:*:*)
++	echo sx7-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8:SUPER-UX:*:*)
++	echo sx8-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8R:SUPER-UX:*:*)
++	echo sx8r-nec-superux${UNAME_RELEASE}
++	exit ;;
+     Power*:Rhapsody:*:*)
+ 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Rhapsody:*:*)
+ 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Darwin:*:*)
+-	case `uname -p` in
+-	    *86) UNAME_PROCESSOR=i686 ;;
+-	    powerpc) UNAME_PROCESSOR=powerpc ;;
++	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
++	case $UNAME_PROCESSOR in
++	    i386)
++		eval $set_cc_for_build
++		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
++		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		      grep IS_64BIT_ARCH >/dev/null
++		  then
++		      UNAME_PROCESSOR="x86_64"
++		  fi
++		fi ;;
++	    unknown) UNAME_PROCESSOR=powerpc ;;
+ 	esac
+ 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ 	UNAME_PROCESSOR=`uname -p`
+ 	if test "$UNAME_PROCESSOR" = "x86"; then
+@@ -1209,22 +1257,28 @@
+ 		UNAME_MACHINE=pc
+ 	fi
+ 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:QNX:*:4*)
+ 	echo i386-pc-qnx
+-	exit 0 ;;
++	exit ;;
++    NEO-?:NONSTOP_KERNEL:*:*)
++	echo neo-tandem-nsk${UNAME_RELEASE}
++	exit ;;
++    NSE-*:NONSTOP_KERNEL:*:*)
++	echo nse-tandem-nsk${UNAME_RELEASE}
++	exit ;;
+     NSR-?:NONSTOP_KERNEL:*:*)
+ 	echo nsr-tandem-nsk${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:NonStop-UX:*:*)
+ 	echo mips-compaq-nonstopux
+-	exit 0 ;;
++	exit ;;
+     BS2000:POSIX*:*:*)
+ 	echo bs2000-siemens-sysv
+-	exit 0 ;;
++	exit ;;
+     DS/*:UNIX_System_V:*:*)
+ 	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Plan9:*:*)
+ 	# "uname -m" is not consistent, so use $cputype instead. 386
+ 	# is converted to i386 for consistency with other x86
+@@ -1235,36 +1289,55 @@
+ 	    UNAME_MACHINE="$cputype"
+ 	fi
+ 	echo ${UNAME_MACHINE}-unknown-plan9
+-	exit 0 ;;
++	exit ;;
+     *:TOPS-10:*:*)
+ 	echo pdp10-unknown-tops10
+-	exit 0 ;;
++	exit ;;
+     *:TENEX:*:*)
+ 	echo pdp10-unknown-tenex
+-	exit 0 ;;
++	exit ;;
+     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ 	echo pdp10-dec-tops20
+-	exit 0 ;;
++	exit ;;
+     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ 	echo pdp10-xkl-tops20
+-	exit 0 ;;
++	exit ;;
+     *:TOPS-20:*:*)
+ 	echo pdp10-unknown-tops20
+-	exit 0 ;;
++	exit ;;
+     *:ITS:*:*)
+ 	echo pdp10-unknown-its
+-	exit 0 ;;
++	exit ;;
+     SEI:*:*:SEIUX)
+-        echo mips-sei-seiux${UNAME_RELEASE}
+-	exit 0 ;;
++	echo mips-sei-seiux${UNAME_RELEASE}
++	exit ;;
+     *:DragonFly:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+-	exit 0 ;;
++	exit ;;
++    *:*VMS:*:*)
++	UNAME_MACHINE=`(uname -p) 2>/dev/null`
++	case "${UNAME_MACHINE}" in
++	    A*) echo alpha-dec-vms ; exit ;;
++	    I*) echo ia64-dec-vms ; exit ;;
++	    V*) echo vax-dec-vms ; exit ;;
++	esac ;;
++    *:XENIX:*:SysV)
++	echo i386-pc-xenix
++	exit ;;
++    i*86:skyos:*:*)
++	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
++	exit ;;
++    i*86:rdos:*:*)
++	echo ${UNAME_MACHINE}-pc-rdos
++	exit ;;
++    i*86:AROS:*:*)
++	echo ${UNAME_MACHINE}-pc-aros
++	exit ;;
++    x86_64:VMkernel:*:*)
++	echo ${UNAME_MACHINE}-unknown-esx
++	exit ;;
+ esac
+ 
+-#echo '(No uname command or uname output not recognized.)' 1>&2
+-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+-
+ eval $set_cc_for_build
+ cat >$dummy.c <<EOF
+ #ifdef _SEQUENT_
+@@ -1282,16 +1355,16 @@
+ #include <sys/param.h>
+   printf ("m68k-sony-newsos%s\n",
+ #ifdef NEWSOS4
+-          "4"
++	"4"
+ #else
+-	  ""
++	""
+ #endif
+-         ); exit (0);
++	); exit (0);
+ #endif
+ #endif
+ 
+ #if defined (__arm) && defined (__acorn) && defined (__unix)
+-  printf ("arm-acorn-riscix"); exit (0);
++  printf ("arm-acorn-riscix\n"); exit (0);
+ #endif
+ 
+ #if defined (hp300) && !defined (hpux)
+@@ -1380,11 +1453,12 @@
+ }
+ EOF
+ 
+-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
++	{ echo "$SYSTEM_NAME"; exit; }
+ 
+ # Apollos put the system type in the environment.
+ 
+-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+ 
+ # Convex versions that predate uname can use getsysinfo(1)
+ 
+@@ -1393,22 +1467,22 @@
+     case `getsysinfo -f cpu_type` in
+     c1*)
+ 	echo c1-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c2*)
+ 	if getsysinfo -f scalar_acc
+ 	then echo c32-convex-bsd
+ 	else echo c2-convex-bsd
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     c34*)
+ 	echo c34-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c38*)
+ 	echo c38-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c4*)
+ 	echo c4-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     esac
+ fi
+ 
+@@ -1419,7 +1493,9 @@
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+ 
+-    ftp://ftp.gnu.org/pub/gnu/config/
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++and
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+ 
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
+diff -ur w3m-0.5.3/main.c new/w3m-0.5.3/main.c
+--- w3m-0.5.3/main.c	2011-01-04 04:42:19.000000000 -0500
++++ w3m-0.5.3/main.c	2013-04-28 18:42:08.408034100 -0400
+@@ -789,7 +789,8 @@
+     }
+ 
+ #ifdef USE_BINMODE_STREAM
+-    setmode(fileno(stdout), O_BINARY);
++  /* Seems to only be needed for old versions of Cygwin */
++  /***setmode(fileno(stdout), O_BINARY);***/
+ #endif
+     if (!w3m_dump && !w3m_backend) {
+ 	fmInit();
diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix
index bf14e7e53414..d8c421af46a8 100644
--- a/pkgs/applications/networking/browsers/w3m/default.nix
+++ b/pkgs/applications/networking/browsers/w3m/default.nix
@@ -3,13 +3,13 @@
 , graphicsSupport ? false
 , mouseSupport ? false
 , ncurses, openssl ? null, boehmgc, gettext, zlib
-, imlib2 ? null, x11 ? null, fbcon ? null
-, gpm ? null
+, imlib2 ? null, xlibsWrapper ? null, fbcon ? null
+, gpm-ncurses ? null
 }:
 
 assert sslSupport -> openssl != null;
-assert graphicsSupport -> imlib2 != null && (x11 != null || fbcon != null);
-assert mouseSupport -> gpm != null;
+assert graphicsSupport -> imlib2 != null && (xlibsWrapper != null || fbcon != null);
+assert mouseSupport -> gpm-ncurses != null;
 
 stdenv.mkDerivation rec {
   name = "w3m-0.5.3";
@@ -22,12 +22,13 @@ stdenv.mkDerivation rec {
   patches = [ ./glibc214.patch ]
     # Patch for the newer unstable boehm-gc 7.2alpha. Not all platforms use that
     # alpha. At the time of writing this, boehm-gc-7.1 is the last stable.
-    ++ stdenv.lib.optional (boehmgc.name != "boehm-gc-7.1") [ ./newgc.patch ];
+    ++ stdenv.lib.optional (boehmgc.name != "boehm-gc-7.1") [ ./newgc.patch ]
+    ++ stdenv.lib.optional stdenv.isCygwin ./cygwin.patch;
 
   buildInputs = [ncurses boehmgc gettext zlib]
     ++ stdenv.lib.optional sslSupport openssl
-    ++ stdenv.lib.optional mouseSupport gpm
-    ++ stdenv.lib.optionals graphicsSupport [imlib2 x11 fbcon];
+    ++ stdenv.lib.optional mouseSupport gpm-ncurses
+    ++ stdenv.lib.optionals graphicsSupport [imlib2 xlibsWrapper fbcon];
 
   configureFlags = "--with-ssl=${openssl} --with-gc=${boehmgc}"
     + stdenv.lib.optionalString graphicsSupport " --enable-image=x11,fb";