nixpkgs-suyu/pkgs/applications/networking/browsers/chromium/source/default.nix
aszlig 471cdd15e2
chromium: Update beta and dev channels.
Overview of the updated versions:

beta: 45.0.2454.15 -> 45.0.2454.26
dev:  45.0.2454.15 -> 46.0.2471.2

Changes for getting beta and dev channel to build:

 * The reference for chrome::FILE_FLASH_PLUGIN doesn't exist anymore in
   version 46, because it has been dropped upstream, see the following
   review URL:

   https://codereview.chromium.org/1255943002

   We set the PPAPI Flash path using a command line flag anyway, so it
   doesn't hurt us if we don't patch that path (which was an old
   artifact from the NSAPI->PPAPI conversion anyway).

Changes for the dev channel only:

 * It seems that in the SCM, chrome/test/data/webui/ contains a lot of
   files, however they are missing in the tarball.

   This has been reported upstream at: https://crbug.com/515917

   Our fix is to just not include webui/i18n_process_css_test.html at
   all, to avoid the configure (gyp) phase to fail, because we're not
   building tests anyway.

All channels built and tested by my Hydra instance at:

https://headcounter.org/hydra/eval/218978

Test reports:

x86:    https://headcounter.org/hydra/build/723341/download/1/log.html
x86_64: https://headcounter.org/hydra/build/723342/download/1/log.html

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2015-08-11 12:17:38 +02:00

83 lines
2 KiB
Nix

{ stdenv, fetchurl, fetchpatch, patchutils, python
, channel ? "stable"
, useOpenSSL # XXX
}:
with stdenv.lib;
with (import ./update.nix {
inherit (stdenv) system;
}).getChannel channel;
let
transform = flags: concatStringsSep ";" (map (subst: subst + flags) [
"s,^[^/]+(.*)$,$main\\1,"
"s,$main/(build|tools)(/.*)?$,$out/\\1\\2,"
"s,$main/third_party(/.*)?$,$bundled\\1,"
"s,^/,,"
]);
in stdenv.mkDerivation {
name = "chromium-source-${version}";
src = fetchurl main;
buildInputs = [ python ]; # cannot patch shebangs otherwise
phases = [ "unpackPhase" "patchPhase" ];
outputs = [ "out" "bundled" "main" ];
unpackPhase = ''
tar xf "$src" -C / \
--transform="${transform "xS"}" \
--anchored \
--no-wildcards-match-slash \
--exclude='*/tools/gyp' \
--exclude='*/.*'
'';
opensslPatches = optional useOpenSSL openssl.patches;
prePatch = ''
for i in $outputs; do
eval patchShebangs "\$$i"
done
'';
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} /}";
allmods = "${diffmod "---"};${diffmod "\\+\\+\\+"}";
sedexpr = "/^(---|\\+\\+\\+) *\\/dev\\/null/b;${allmods}";
in ''
runHook prePatch
for i in $patches; do
header "applying patch $i" 3
sed -r -e "${sedexpr}" "$i" | patch -d / -p0
stopNest
done
runHook postPatch
'';
postPatch = ''
sed -i -r \
-e 's/-f(stack-protector)(-all)?/-fno-\1/' \
-e 's|/bin/echo|echo|' \
-e "/python_arch/s/: *'[^']*'/: '""'/" \
"$out/build/common.gypi" "$main/chrome/chrome_tests.gypi"
'' + optionalString useOpenSSL ''
cat $opensslPatches | patch -p1 -d "$bundled/openssl/openssl"
'';
preferLocalBuild = true;
passthru = {
inherit version channel;
plugins = fetchurl binary;
};
}