diff options
Diffstat (limited to 'pkgs/applications/networking/browsers/chromium/default.nix')
-rw-r--r-- | pkgs/applications/networking/browsers/chromium/default.nix | 106 |
1 files changed, 61 insertions, 45 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 4c3a02dcecc2..33f9283b47ad 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -1,7 +1,4 @@ -{ stdenv, getConfig, fetchurl, makeWrapper, which - -# this is needed in order to build the versions older than 21.x -, subversion +{ stdenv, config, fetchurl, makeWrapper, which # default dependencies , bzip2, flac, speex @@ -25,30 +22,33 @@ , libselinux # config.selinux }: +with stdenv.lib; + let - mkConfigurable = stdenv.lib.mapAttrs (flag: default: getConfig ["chromium" flag] default); + mkConfigurable = mapAttrs (flag: default: attrByPath ["chromium" flag] default config); - config = mkConfigurable { + cfg = mkConfigurable { channel = "stable"; selinux = false; nacl = false; - openssl = true; + openssl = false; gnome = false; gnomeKeyring = false; proprietaryCodecs = true; cups = false; - pulseaudio = getConfig ["pulseaudio"] true; + pulseaudio = config.pulseaudio or true; }; - sourceInfo = builtins.getAttr config.channel (import ./sources.nix); + sourceInfo = builtins.getAttr cfg.channel (import ./sources.nix); - mkGypFlags = with stdenv.lib; let - sanitize = value: - if value == true then "1" - else if value == false then "0" - else "${value}"; - toFlag = key: value: "-D${key}=${sanitize value}"; - in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); + mkGypFlags = + let + sanitize = value: + if value == true then "1" + else if value == false then "0" + else "${value}"; + toFlag = key: value: "-D${key}=${sanitize value}"; + in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); gypFlagsUseSystemLibs = { use_system_bzip2 = true; @@ -59,7 +59,7 @@ let use_system_libpng = true; use_system_libxml = true; use_system_speex = true; - use_system_ssl = true; + use_system_ssl = cfg.openssl; use_system_stlport = true; use_system_xdg_utils = true; use_system_yasm = true; @@ -73,14 +73,28 @@ let use_system_v8 = false; }; - needsSubversion = stdenv.lib.versionOlder sourceInfo.version "21.0.0.0"; - defaultDependencies = [ bzip2 flac speex libevent expat libjpeg libpng libxml2 libxslt xdg_utils yasm zlib - ] ++ stdenv.lib.optional needsSubversion subversion; + ]; + + seccompPatch = let + pre22 = versionOlder sourceInfo.version "22.0.0.0"; + in if pre22 then ./enable_seccomp.patch else ./enable_seccomp22.patch; + + # XXX: this reverts r151720 to prevent http://crbug.com/143623 + maybeRevertZlibChanges = let + below22 = versionOlder sourceInfo.version "22.0.0.0"; + patch = fetchurl { + name = "revert-r151720"; + url = "http://git.chromium.org/gitweb/?p=chromium.git;a=commitdiff_plain;" + + "hp=4419ec6414b33b6b19bb2e380b4998ed5193ecab;" + + "h=0fabb4fda7059a8757422e8a44e70deeab28e698"; + sha256 = "0n0d6mkg89g8q63cifapzpg9dxfs2n6xvk4k13szhymvf67b77pf"; + }; + in optional (!below22) patch; in stdenv.mkDerivation rec { name = "${packageName}-${version}"; @@ -97,27 +111,28 @@ in stdenv.mkDerivation rec { which makeWrapper python perl pkgconfig nspr udev - (if config.openssl then openssl else nss) + (if cfg.openssl then openssl else nss) utillinux alsaLib gcc bison gperf krb5 glib gtk dbus_glib libXScrnSaver libXcursor mesa - ] ++ stdenv.lib.optional config.gnomeKeyring libgnome_keyring - ++ stdenv.lib.optionals config.gnome [ gconf libgcrypt ] - ++ stdenv.lib.optional config.selinux libselinux - ++ stdenv.lib.optional config.cups libgcrypt - ++ stdenv.lib.optional config.pulseaudio pulseaudio; + ] ++ optional cfg.gnomeKeyring libgnome_keyring + ++ optionals cfg.gnome [ gconf libgcrypt ] + ++ optional cfg.selinux libselinux + ++ optional cfg.cups libgcrypt + ++ optional cfg.pulseaudio pulseaudio; - opensslPatches = stdenv.lib.optional config.openssl openssl.patches; + opensslPatches = optional cfg.openssl openssl.patches; prePatch = "patchShebangs ."; - patches = stdenv.lib.optional (!config.selinux) ./enable_seccomp.patch - ++ stdenv.lib.optional config.cups ./cups_allow_deprecated.patch - ++ stdenv.lib.optional config.pulseaudio ./pulseaudio_array_bounds.patch; + patches = optional (!cfg.selinux) seccompPatch + ++ optional cfg.cups ./cups_allow_deprecated.patch + ++ optional cfg.pulseaudio ./pulseaudio_array_bounds.patch + ++ maybeRevertZlibChanges; - postPatch = stdenv.lib.optionalString config.openssl '' + postPatch = optionalString cfg.openssl '' cat $opensslPatches | patch -p1 -d third_party/openssl/openssl ''; @@ -125,21 +140,21 @@ in stdenv.mkDerivation rec { linux_use_gold_binary = false; linux_use_gold_flags = false; proprietary_codecs = false; - use_gnome_keyring = config.gnomeKeyring; - use_gconf = config.gnome; - use_gio = config.gnome; - use_pulseaudio = config.pulseaudio; - disable_nacl = !config.nacl; - use_openssl = config.openssl; - selinux = config.selinux; - use_cups = config.cups; - } // stdenv.lib.optionalAttrs config.proprietaryCodecs { + use_gnome_keyring = cfg.gnomeKeyring; + use_gconf = cfg.gnome; + use_gio = cfg.gnome; + use_pulseaudio = cfg.pulseaudio; + disable_nacl = !cfg.nacl; + use_openssl = cfg.openssl; + selinux = cfg.selinux; + use_cups = cfg.cups; + } // optionalAttrs cfg.proprietaryCodecs { # enable support for the H.264 codec proprietary_codecs = true; ffmpeg_branding = "Chrome"; - } // stdenv.lib.optionalAttrs (stdenv.system == "x86_64-linux") { + } // optionalAttrs (stdenv.system == "x86_64-linux") { target_arch = "x64"; - } // stdenv.lib.optionalAttrs (stdenv.system == "i686-linux") { + } // optionalAttrs (stdenv.system == "i686-linux") { target_arch = "ia32"; }); @@ -172,6 +187,7 @@ in stdenv.mkDerivation rec { mkdir -vp "$out/libexec/${packageName}" cp -v "out/${buildType}/"*.pak "$out/libexec/${packageName}/" cp -vR "out/${buildType}/locales" "out/${buildType}/resources" "$out/libexec/${packageName}/" + cp -v out/${buildType}/libffmpegsumo.so "$out/libexec/${packageName}/" cp -v "out/${buildType}/chrome" "$out/libexec/${packageName}/${packageName}" @@ -190,11 +206,11 @@ in stdenv.mkDerivation rec { done ''; - meta = with stdenv.lib; { + meta = { description = "Chromium, an open source web browser"; homepage = http://www.chromium.org/; - maintainers = with stdenv.lib.maintainers; [ goibhniu chaoflow ]; + maintainers = with maintainers; [ goibhniu chaoflow ]; license = licenses.bsd3; - platforms = with stdenv.lib.platforms; linux; + platforms = platforms.linux; }; } |