<commit_before>{ stdenv, getConfig, fetchurl, fetchsvn, makeWrapper, which

# default dependencies
, bzip2, ffmpeg, flac #, harfbuzz
, icu, libevent, expat, libjpeg
, libpng, libwebp, libxml2, libxslt #, skia
, speex, sqlite, openssl #, stlport
, v8, xdg_utils, yasm, zlib

, python, perl, pkgconfig
, nspr, nss, udev
, utillinux, alsaLib
, gcc, bison, gperf
, krb5
, glib, gtk, gconf, libgcrypt, libgnome_keyring, dbus_glib
, libXScrnSaver, libXcursor, mesa
}:

let
  mkConfigurable = stdenv.lib.mapAttrs (flag: default: getConfig ["chromium" flag] default);

  config = mkConfigurable {
    useSELinux = false;
    naclSupport = false;
    useOpenSSL = true;
    enableGnomeSupport = false;
    gnomeKeyringSupport = false;
    useProprietaryCodecs = false;
    enableCUPS = false;
  };

  sourceInfo = import ./source.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));

  gypFlagsUseSystemLibs = {
    use_system_bzip2 = true;
    use_system_ffmpeg = false; # FIXME: libavformat...
    use_system_flac = true;
    use_system_harfbuzz = false; # TODO
    use_system_icu = false; # FIXME: wrong version!
    use_system_libevent = true;
    use_system_libexpat = true;
    use_system_libjpeg = true;
    use_system_libpng = true;
    use_system_libwebp = false; # See chromium issue #133161
    use_system_libxml = true;
    use_system_skia = false; # TODO
    use_system_speex = true;
    use_system_sqlite = false; # FIXME
    use_system_ssl = true;
    use_system_stlport = true;
    use_system_v8 = false; # TODO...
    use_system_xdg_utils = true;
    use_system_yasm = true;
    use_system_zlib = true;
  };

  defaultDependencies = [
    bzip2 ffmpeg flac # harfbuzz
    icu libevent expat libjpeg
    libpng libwebp libxml2 libxslt # skia
    speex sqlite # stlport
    v8 xdg_utils yasm zlib
  ];

in stdenv.mkDerivation rec {
  name = "${packageName}-${version}";
  packageName = "chromium";

  version = sourceInfo.version;

  src = fetchurl {
    url = sourceInfo.url;
    sha256 = sourceInfo.sha256;
  };

  buildInputs = defaultDependencies ++ [
    which makeWrapper
    python perl pkgconfig
    nspr udev
    (if config.useOpenSSL then openssl else nss)
    utillinux alsaLib
    gcc bison gperf
    krb5
    glib gtk dbus_glib
    libXScrnSaver libXcursor mesa
  ] ++ stdenv.lib.optional config.gnomeKeyringSupport libgnome_keyring
    ++ stdenv.lib.optionals config.enableGnomeSupport [ gconf libgcrypt ]
    ++ stdenv.lib.optional config.enableCUPS libgcrypt;

  opensslPatches = stdenv.lib.optional config.useOpenSSL openssl.patches;

  prePatch = "patchShebangs .";

  patches = stdenv.lib.optional (!config.useSELinux) ./enable_seccomp.patch
         ++ stdenv.lib.optional config.enableCUPS ./cups_allow_deprecated.patch;

  postPatch = stdenv.lib.optionalString config.useOpenSSL ''
    cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
  '';

  gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
    linux_use_gold_binary = false;
    linux_use_gold_flags = false;
    proprietary_codecs = false;
    use_gnome_keyring = config.gnomeKeyringSupport;
    use_gconf = config.enableGnomeSupport;
    use_gio = config.enableGnomeSupport;
    disable_nacl = !config.naclSupport;
    use_openssl = config.useOpenSSL;
    selinux = config.useSELinux;
    use_cups = config.enableCUPS;
  } // stdenv.lib.optionalAttrs (stdenv.system == "x86_64-linux") {
    target_arch = "x64";
  } // stdenv.lib.optionalAttrs (stdenv.system == "i686-linux") {
    target_arch = "ia32";
  });

  buildType = "Release";

  configurePhase = ''
    python build/gyp_chromium --depth "$(pwd)" ${gypFlags}
  '';

  extraBuildFlags = let
    CC = "${gcc}/bin/gcc";
    CXX = "${gcc}/bin/g++";
  in "CC=\"${CC}\" CXX=\"${CXX}\" CC.host=\"${CC}\" CXX.host=\"${CXX}\" LINK.host=\"${CXX}\"";
<commit_msg>chromium: Enable proprietary codecs by default.<commit_after>{ stdenv, getConfig, fetchurl, fetchsvn, makeWrapper, which

# default dependencies
, bzip2, ffmpeg, flac #, harfbuzz
, icu, libevent, expat, libjpeg
, libpng, libwebp, libxml2, libxslt #, skia
, speex, sqlite, openssl #, stlport
, v8, xdg_utils, yasm, zlib

, python, perl, pkgconfig
, nspr, nss, udev
, utillinux, alsaLib
, gcc, bison, gperf
, krb5
, glib, gtk, gconf, libgcrypt, libgnome_keyring, dbus_glib
, libXScrnSaver, libXcursor, mesa
}:

let
  mkConfigurable = stdenv.lib.mapAttrs (flag: default: getConfig ["chromium" flag] default);

  config = mkConfigurable {
    useSELinux = false;
    naclSupport = false;
    useOpenSSL = true;
    enableGnomeSupport = false;
    gnomeKeyringSupport = false;
    useProprietaryCodecs = true;
    enableCUPS = false;
  };

  sourceInfo = import ./source.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));

  gypFlagsUseSystemLibs = {
    use_system_bzip2 = true;
    use_system_flac = true;
    use_system_harfbuzz = false; # TODO
    use_system_icu = false; # FIXME: wrong version!
    use_system_libevent = true;
    use_system_libexpat = true;
    use_system_libjpeg = true;
    use_system_libpng = true;
    use_system_libwebp = false; # See chromium issue #133161
    use_system_libxml = true;
    use_system_skia = false; # TODO
    use_system_speex = true;
    use_system_sqlite = false; # FIXME
    use_system_ssl = true;
    use_system_stlport = true;
    use_system_v8 = false; # TODO...
    use_system_xdg_utils = true;
    use_system_yasm = true;
    use_system_zlib = true;
  };

  defaultDependencies = [
    bzip2 flac # harfbuzz
    icu libevent expat libjpeg
    libpng libwebp libxml2 libxslt # skia
    speex sqlite # stlport
    v8 xdg_utils yasm zlib
  ];

in stdenv.mkDerivation rec {
  name = "${packageName}-${version}";
  packageName = "chromium";

  version = sourceInfo.version;

  src = fetchurl {
    url = sourceInfo.url;
    sha256 = sourceInfo.sha256;
  };

  buildInputs = defaultDependencies ++ [
    which makeWrapper
    python perl pkgconfig
    nspr udev
    (if config.useOpenSSL then openssl else nss)
    utillinux alsaLib
    gcc bison gperf
    krb5
    glib gtk dbus_glib
    libXScrnSaver libXcursor mesa
  ] ++ stdenv.lib.optional config.gnomeKeyringSupport libgnome_keyring
    ++ stdenv.lib.optionals config.enableGnomeSupport [ gconf libgcrypt ]
    ++ stdenv.lib.optional config.enableCUPS libgcrypt;

  opensslPatches = stdenv.lib.optional config.useOpenSSL openssl.patches;

  prePatch = "patchShebangs .";

  patches = stdenv.lib.optional (!config.useSELinux) ./enable_seccomp.patch
         ++ stdenv.lib.optional config.enableCUPS ./cups_allow_deprecated.patch;

  postPatch = stdenv.lib.optionalString config.useOpenSSL ''
    cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
  '';

  gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
    linux_use_gold_binary = false;
    linux_use_gold_flags = false;
    proprietary_codecs = false;
    use_gnome_keyring = config.gnomeKeyringSupport;
    use_gconf = config.enableGnomeSupport;
    use_gio = config.enableGnomeSupport;
    disable_nacl = !config.naclSupport;
    use_openssl = config.useOpenSSL;
    selinux = config.useSELinux;
    use_cups = config.enableCUPS;
  } // stdenv.lib.optionalAttrs config.useProprietaryCodecs {
    # enable support for the H.264 codec
    proprietary_codecs = true;
    ffmpeg_branding = "Chrome";
  } // stdenv.lib.optionalAttrs (stdenv.system == "x86_64-linux") {
    target_arch = "x64";
  } // stdenv.lib.optionalAttrs (stdenv.system == "i686-linux") {
    target_arch = "ia32";
  });

  buildType = "Release";

  configurePhase = ''
    python build/gyp_chromium --depth "$(pwd)" ${gypFlags}
  '';

  extraBuildFlags = let
    CC = "${gcc}/bin/gcc";
    CXX = "${gcc}/bin/g++";
  in "CC=\"${CC}\" CXX=\"${CXX}\" CC.host=\"${CC}\" CXX.host=\"${CXX}\" LINK.host=\"${CXX}\"";

{'fraction_non_alphanumeric': 0.11369446135118685, 'fraction_numerical': 0.009129640900791236, 'mean_word_length': 3.5068568294020843, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6958260', 'n_tokens_mistral': 3096, 'n_tokens_neox': 2956, 'n_words': 636}