From 88a939c2d116236fbfb48d9a27741584b6a6e055 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 19 Mar 2014 12:21:10 +0100 Subject: chromium: Decouple browser from default.nix. This currently only passes through the arguments and is nothing more than the foundation of the new structure. In essence, I want to have a really small default.nix which is then going down into the respective subparts that are isolated from each other. Signed-off-by: aszlig --- .../networking/browsers/chromium/browser.nix | 361 +++++++++++++++++++++ .../networking/browsers/chromium/default.nix | 358 +------------------- 2 files changed, 374 insertions(+), 345 deletions(-) create mode 100644 pkgs/applications/networking/browsers/chromium/browser.nix (limited to 'pkgs/applications') diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix new file mode 100644 index 000000000000..e98c47d8cdd8 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -0,0 +1,361 @@ +{ stdenv, fetchurl, makeWrapper, ninja, which + +# default dependencies +, bzip2, flac, speex, icu, libopus +, libevent, expat, libjpeg, snappy +, libpng, libxml2, libxslt, v8 +, xdg_utils, yasm, minizip, libwebp +, libusb1, libexif, pciutils + +, python, pythonPackages, perl, pkgconfig +, nspr, udev, krb5 +, utillinux, alsaLib +, gcc, bison, gperf +, glib, gtk, dbus_glib +, libXScrnSaver, libXcursor, libXtst, mesa +, protobuf, speechd, libXdamage + +# optional dependencies +, libgcrypt ? null # gnomeSupport || cupsSupport + +# package customization +, channel ? "stable" +, enableSELinux ? false, libselinux ? null +, enableNaCl ? false +, useOpenSSL ? false, nss ? null, openssl ? null +, gnomeSupport ? false, gnome ? null +, gnomeKeyringSupport ? false, libgnome_keyring3 ? null +, proprietaryCodecs ? true +, enablePepperFlash ? false +, enablePepperPDF ? false +, cupsSupport ? false +, pulseSupport ? false, pulseaudio ? null +}: + +with stdenv.lib; + +let + src = with getAttr channel (import ./sources.nix); stdenv.mkDerivation { + name = "chromium-source-${version}"; + + src = fetchurl { + inherit url sha256; + }; + + buildInputs = [ python ]; # cannot patch shebangs otherwise + + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + + opensslPatches = optional useOpenSSL openssl.patches; + + prePatch = "patchShebangs ."; + + patches = singleton ./sandbox_userns_31.patch; + + postPatch = '' + sed -i -r \ + -e 's/-f(stack-protector)(-all)?/-fno-\1/' \ + -e 's|/bin/echo|echo|' \ + -e "/python_arch/s/: *'[^']*'/: '""'/" \ + build/common.gypi chrome/chrome_tests.gypi + sed -i '/not RunGN/,+1d' build/gyp_chromium + sed -i -e 's|/usr/bin/gcc|gcc|' \ + third_party/WebKit/Source/build/scripts/scripts.gypi \ + third_party/WebKit/Source/build/scripts/preprocessor.pm + '' + optionalString useOpenSSL '' + cat $opensslPatches | patch -p1 -d third_party/openssl/openssl + '' + optionalString (!versionOlder version "34.0.0.0") '' + sed -i '/import.*depot/d' build/gyp_chromium + ''; + + outputs = [ "out" "sandbox" "bundled" "main" ]; + installPhase = '' + ensureDir "$out" "$sandbox" "$bundled" "$main" + + header "copying browser main sources to $main" + find . -mindepth 1 -maxdepth 1 \ + \! -path ./sandbox \ + \! -path ./third_party \ + \! -path ./build \ + \! -path ./tools \ + \! -name '.*' \ + -print | xargs cp -rt "$main" + stopNest + + header "copying sandbox components to $sandbox" + cp -rt "$sandbox" sandbox/* + stopNest + + header "copying third party sources to $bundled" + cp -rt "$bundled" third_party/* + stopNest + + header "copying build requisites to $out" + cp -rt "$out" build tools + stopNest + + rm -rf "$out/tools/gyp" # XXX: Don't even copy it in the first place. + ''; + + passthru = { + inherit version; + }; + }; + + 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; + use_system_flac = true; + use_system_libevent = true; + use_system_libexpat = true; + use_system_libexif = true; + use_system_libjpeg = true; + use_system_libpng = true; + use_system_libwebp = true; + use_system_libxml = true; + use_system_opus = true; + use_system_snappy = true; + use_system_speex = true; + use_system_ssl = useOpenSSL; + use_system_stlport = true; + use_system_xdg_utils = true; + use_system_yasm = true; + use_system_zlib = true; + use_system_protobuf = true; + + use_system_harfbuzz = false; + use_system_icu = false; # Doesn't support ICU 52 yet. + use_system_libusb = false; # http://crbug.com/266149 + use_system_skia = false; + use_system_sqlite = false; # http://crbug.com/22208 + use_system_v8 = !versionOlder src.version "34.0.0.0"; + }; + + defaultDependencies = [ + bzip2 flac speex icu libopus + libevent expat libjpeg snappy + libpng libxml2 libxslt v8 + xdg_utils yasm minizip libwebp + libusb1 libexif + ]; + + sandbox = import ./sandbox.nix { + inherit stdenv; + src = src.sandbox; + binary = "${packageName}_sandbox"; + }; + + binaryPlugins = stdenv.mkDerivation { + name = "chromium-binary-plugins"; + + # XXX: Only temporary and has to be version-specific + src = fetchurl { + url = "https://dl.google.com/linux/chrome/deb/pool/main/g/" + + "google-chrome-unstable/google-chrome-unstable_" + + "35.0.1897.2-1_amd64.deb"; + sha1 = "b68683fc5321d10536e4135c266b14894b7668ed"; + }; + + phases = [ "unpackPhase" "patchPhase" "checkPhase" "installPhase" ]; + outputs = [ "pdf" "flash" ]; + + unpackCmd = '' + ensureDir plugins + ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \ + ./opt/google/chrome-unstable/PepperFlash \ + ./opt/google/chrome-unstable/libpdf.so + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + patchPhase = let + rpaths = [ stdenv.gcc.gcc ]; + mkrpath = p: "${makeSearchPath "lib64" p}:${makeSearchPath "lib" p}"; + in '' + for sofile in PepperFlash/libpepflashplayer.so libpdf.so; do + chmod +x "$sofile" + patchelf --set-rpath "${mkrpath rpaths}" "$sofile" + done + ''; + + installPhase = let + pdfName = "Chrome PDF Viewer"; + pdfDescription = "Portable Document Format"; + pdfMimeTypes = concatStringsSep ";" [ + "application/pdf" + "application/x-google-chrome-print-preview-pdf" + ]; + pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}"; + in '' + install -vD libpdf.so "$pdf/lib/libpdf.so" + ensureDir "$pdf/nix-support" + echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \ + > "$pdf/nix-support/chromium-flags" + + flashVersion="$( + sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json + )" + + install -vD libpepflashplayer.so "$flash/lib/libpepflashplayer.so" + ensureDir "$flash/nix-support" + echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \ + "--ppapi-flash-version=$flashVersion" \ + > "$flash/nix-support/chromium-flags" + ''; + }; + + # build paths and release info + packageName = "chromium"; + buildType = "Release"; + buildPath = "out/${buildType}"; + libExecPath = "$out/libexec/${packageName}"; + sandboxPath = "${sandbox}/bin/${packageName}_sandbox"; + +in stdenv.mkDerivation rec { + name = "${packageName}-${src.version}"; + inherit packageName src; + + buildInputs = defaultDependencies ++ [ + which makeWrapper + python perl pkgconfig + nspr udev + (if useOpenSSL then openssl else nss) + utillinux alsaLib + gcc bison gperf + gcc bison gperf krb5 + glib gtk dbus_glib + libXScrnSaver libXcursor libXtst mesa + pciutils protobuf speechd libXdamage + pythonPackages.gyp + ] ++ optional gnomeKeyringSupport libgnome_keyring3 + ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] + ++ optional enableSELinux libselinux + ++ optional cupsSupport libgcrypt + ++ optional pulseSupport pulseaudio; + + prePatch = '' + # XXX: Figure out a way how to split these properly. + #cpflags="-dsr --no-preserve=mode" + cpflags="-dr" + cp $cpflags "${src.main}"/* . + cp $cpflags "${src.bundled}" third_party + cp $cpflags "${src.sandbox}" sandbox + chmod -R u+w . # XXX! + ''; + + postPatch = '' + sed -i -e '/base::FilePath exe_dir/,/^ *} *$/c \ + sandbox_binary = \ + base::FilePath("'"${sandboxPath}"'"); + ' content/browser/browser_main_loop.cc + ''; + + gypFlags = mkGypFlags (gypFlagsUseSystemLibs // { + linux_use_gold_binary = false; + linux_use_gold_flags = false; + proprietary_codecs = false; + use_gnome_keyring = gnomeKeyringSupport; + use_gconf = gnomeSupport; + use_gio = gnomeSupport; + use_pulseaudio = pulseSupport; + disable_nacl = !enableNaCl; + use_openssl = useOpenSSL; + selinux = enableSELinux; + use_cups = cupsSupport; + linux_sandbox_path="${sandboxPath}"; + linux_sandbox_chrome_path="${libExecPath}/${packageName}"; + werror = ""; + + # Google API keys, see http://www.chromium.org/developers/how-tos/api-keys. + # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, + # please get your own set of keys. + google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI"; + google_default_client_id = "404761575300.apps.googleusercontent.com"; + google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D"; + + } // optionalAttrs proprietaryCodecs { + # enable support for the H.264 codec + proprietary_codecs = true; + ffmpeg_branding = "Chrome"; + } // optionalAttrs (stdenv.system == "x86_64-linux") { + target_arch = "x64"; + python_arch = "x86-64"; + } // optionalAttrs (stdenv.system == "i686-linux") { + target_arch = "ia32"; + python_arch = "ia32"; + }); + + configurePhase = '' + python build/linux/unbundle/replace_gyp_files.py ${gypFlags} + python build/gyp_chromium -f ninja --depth "$(pwd)" ${gypFlags} + ''; + + buildPhase = let + CC = "${gcc}/bin/gcc"; + CXX = "${gcc}/bin/g++"; + in '' + CC="${CC}" CC_host="${CC}" \ + CXX="${CXX}" CXX_host="${CXX}" \ + LINK_host="${CXX}" \ + "${ninja}/bin/ninja" -C "${buildPath}" \ + -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \ + chrome ${optionalString (!enableSELinux) "chrome_sandbox"} + ''; + + installPhase = let + enabledPlugins = optional enablePepperFlash binaryPlugins.flash + ++ optional enablePepperPDF binaryPlugins.pdf; + getFlags = plugin: "$(< ${plugin}/nix-support/chromium-flags)"; + pluginArgs = concatStringsSep " " (map getFlags enabledPlugins); + in '' + ensureDir "${libExecPath}" + cp -v "${buildPath}/"*.pak "${libExecPath}/" + ${optionalString (!versionOlder src.version "34.0.0.0") '' + cp -v "${buildPath}/icudtl.dat" "${libExecPath}/" + ''} + cp -vR "${buildPath}/locales" "${buildPath}/resources" "${libExecPath}/" + cp -v ${buildPath}/libffmpegsumo.so "${libExecPath}/" + + cp -v "${buildPath}/chrome" "${libExecPath}/${packageName}" + + mkdir -vp "$out/bin" + makeWrapper "${libExecPath}/${packageName}" "$out/bin/${packageName}" \ + --add-flags "${pluginArgs}" + + mkdir -vp "$out/share/man/man1" + cp -v "${buildPath}/chrome.1" "$out/share/man/man1/${packageName}.1" + + for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do + num_and_suffix="''${icon_file##*logo_}" + icon_size="''${num_and_suffix%.*}" + expr "$icon_size" : "^[0-9][0-9]*$" || continue + logo_output_prefix="$out/share/icons/hicolor" + logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" + mkdir -vp "$logo_output_path" + cp -v "$icon_file" "$logo_output_path/${packageName}.png" + done + ''; + + passthru = { + inherit sandbox; + }; + + meta = { + description = "An open source web browser from Google"; + homepage = http://www.chromium.org/; + maintainers = with maintainers; [ goibhniu chaoflow aszlig wizeman ]; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index b70825670156..bb6f530309ff 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -1,360 +1,28 @@ -{ stdenv, fetchurl, makeWrapper, ninja, which - -# default dependencies -, bzip2, flac, speex, icu, libopus -, libevent, expat, libjpeg, snappy -, libpng, libxml2, libxslt, v8 -, xdg_utils, yasm, minizip, libwebp -, libusb1, libexif, pciutils - -, python, pythonPackages, perl, pkgconfig -, nspr, udev, krb5 -, utillinux, alsaLib -, gcc, bison, gperf -, glib, gtk, dbus_glib -, libXScrnSaver, libXcursor, libXtst, mesa -, protobuf, speechd, libXdamage - -# optional dependencies -, libgcrypt ? null # gnomeSupport || cupsSupport +{ newScope # package customization , channel ? "stable" -, enableSELinux ? false, libselinux ? null +, enableSELinux ? false , enableNaCl ? false -, useOpenSSL ? false, nss ? null, openssl ? null -, gnomeSupport ? false, gconf ? null -, gnomeKeyringSupport ? false, libgnome_keyring3 ? null +, useOpenSSL ? false +, gnomeSupport ? false +, gnomeKeyringSupport ? false , proprietaryCodecs ? true , enablePepperFlash ? false , enablePepperPDF ? false , cupsSupport ? false -, pulseSupport ? false, pulseaudio ? null +, pulseSupport ? false }: -with stdenv.lib; - let - src = with getAttr channel (import ./sources.nix); stdenv.mkDerivation { - name = "chromium-source-${version}"; - - src = fetchurl { - inherit url sha256; - }; - - buildInputs = [ python ]; # cannot patch shebangs otherwise - - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - - opensslPatches = optional useOpenSSL openssl.patches; - - prePatch = "patchShebangs ."; - - patches = singleton ./sandbox_userns_31.patch; - - postPatch = '' - sed -i -r \ - -e 's/-f(stack-protector)(-all)?/-fno-\1/' \ - -e 's|/bin/echo|echo|' \ - -e "/python_arch/s/: *'[^']*'/: '""'/" \ - build/common.gypi chrome/chrome_tests.gypi - sed -i '/not RunGN/,+1d' build/gyp_chromium - sed -i -e 's|/usr/bin/gcc|gcc|' \ - third_party/WebKit/Source/build/scripts/scripts.gypi \ - third_party/WebKit/Source/build/scripts/preprocessor.pm - '' + optionalString useOpenSSL '' - cat $opensslPatches | patch -p1 -d third_party/openssl/openssl - '' + optionalString (!versionOlder version "34.0.0.0") '' - sed -i '/import.*depot/d' build/gyp_chromium - ''; - - outputs = [ "out" "sandbox" "bundled" "main" ]; - installPhase = '' - ensureDir "$out" "$sandbox" "$bundled" "$main" - - header "copying browser main sources to $main" - find . -mindepth 1 -maxdepth 1 \ - \! -path ./sandbox \ - \! -path ./third_party \ - \! -path ./build \ - \! -path ./tools \ - \! -name '.*' \ - -print | xargs cp -rt "$main" - stopNest - - header "copying sandbox components to $sandbox" - cp -rt "$sandbox" sandbox/* - stopNest - - header "copying third party sources to $bundled" - cp -rt "$bundled" third_party/* - stopNest - - header "copying build requisites to $out" - cp -rt "$out" build tools - stopNest - - rm -rf "$out/tools/gyp" # XXX: Don't even copy it in the first place. - ''; - - passthru = { - inherit version; - }; - }; - - 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; - use_system_flac = true; - use_system_libevent = true; - use_system_libexpat = true; - use_system_libexif = true; - use_system_libjpeg = true; - use_system_libpng = true; - use_system_libwebp = true; - use_system_libxml = true; - use_system_opus = true; - use_system_snappy = true; - use_system_speex = true; - use_system_ssl = useOpenSSL; - use_system_stlport = true; - use_system_xdg_utils = true; - use_system_yasm = true; - use_system_zlib = true; - use_system_protobuf = true; - - use_system_harfbuzz = false; - use_system_icu = false; # Doesn't support ICU 52 yet. - use_system_libusb = false; # http://crbug.com/266149 - use_system_skia = false; - use_system_sqlite = false; # http://crbug.com/22208 - use_system_v8 = !versionOlder src.version "34.0.0.0"; - }; - - defaultDependencies = [ - bzip2 flac speex icu libopus - libevent expat libjpeg snappy - libpng libxml2 libxslt v8 - xdg_utils yasm minizip libwebp - libusb1 libexif - ]; - - sandbox = import ./sandbox.nix { - inherit stdenv; - src = src.sandbox; - binary = "${packageName}_sandbox"; - }; - - binaryPlugins = stdenv.mkDerivation { - name = "chromium-binary-plugins"; + callPackage = newScope chromium; - # XXX: Only temporary and has to be version-specific - src = fetchurl { - url = "https://dl.google.com/linux/chrome/deb/pool/main/g/" - + "google-chrome-unstable/google-chrome-unstable_" - + "35.0.1897.2-1_amd64.deb"; - sha1 = "b68683fc5321d10536e4135c266b14894b7668ed"; + chromium = { + browser = callPackage ./browser.nix { + inherit channel enableSELinux enableNaCl useOpenSSL gnomeSupport + gnomeKeyringSupport proprietaryCodecs enablePepperFlash + enablePepperPDF cupsSupport pulseSupport; }; - - phases = [ "unpackPhase" "patchPhase" "checkPhase" "installPhase" ]; - outputs = [ "pdf" "flash" ]; - - unpackCmd = '' - ensureDir plugins - ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \ - ./opt/google/chrome-unstable/PepperFlash \ - ./opt/google/chrome-unstable/libpdf.so - ''; - - doCheck = true; - checkPhase = '' - ! find -iname '*.so' -exec ldd {} + | grep 'not found' - ''; - - patchPhase = let - rpaths = [ stdenv.gcc.gcc ]; - mkrpath = p: "${makeSearchPath "lib64" p}:${makeSearchPath "lib" p}"; - in '' - for sofile in PepperFlash/libpepflashplayer.so libpdf.so; do - chmod +x "$sofile" - patchelf --set-rpath "${mkrpath rpaths}" "$sofile" - done - ''; - - installPhase = let - pdfName = "Chrome PDF Viewer"; - pdfDescription = "Portable Document Format"; - pdfMimeTypes = concatStringsSep ";" [ - "application/pdf" - "application/x-google-chrome-print-preview-pdf" - ]; - pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}"; - in '' - install -vD libpdf.so "$pdf/lib/libpdf.so" - ensureDir "$pdf/nix-support" - echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \ - > "$pdf/nix-support/chromium-flags" - - flashVersion="$( - sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json - )" - - install -vD libpepflashplayer.so "$flash/lib/libpepflashplayer.so" - ensureDir "$flash/nix-support" - echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \ - "--ppapi-flash-version=$flashVersion" \ - > "$flash/nix-support/chromium-flags" - ''; }; - # build paths and release info - packageName = "chromium"; - buildType = "Release"; - buildPath = "out/${buildType}"; - libExecPath = "$out/libexec/${packageName}"; - sandboxPath = "${sandbox}/bin/${packageName}_sandbox"; - -in stdenv.mkDerivation rec { - name = "${packageName}-${src.version}"; - inherit packageName src; - - buildInputs = defaultDependencies ++ [ - which makeWrapper - python perl pkgconfig - nspr udev - (if useOpenSSL then openssl else nss) - utillinux alsaLib - gcc bison gperf krb5 - glib gtk dbus_glib - libXScrnSaver libXcursor libXtst mesa - pciutils protobuf speechd libXdamage - pythonPackages.gyp - ] ++ optional gnomeKeyringSupport libgnome_keyring3 - ++ optionals gnomeSupport [ gconf libgcrypt ] - ++ optional enableSELinux libselinux - ++ optional cupsSupport libgcrypt - ++ optional pulseSupport pulseaudio; - - prePatch = '' - # XXX: Figure out a way how to split these properly. - #cpflags="-dsr --no-preserve=mode" - cpflags="-dr" - cp $cpflags "${src.main}"/* . - cp $cpflags "${src.bundled}" third_party - cp $cpflags "${src.sandbox}" sandbox - chmod -R u+w . # XXX! - ''; - - postPatch = '' - sed -i -e '/base::FilePath exe_dir/,/^ *} *$/c \ - sandbox_binary = \ - base::FilePath("'"${sandboxPath}"'"); - ' content/browser/browser_main_loop.cc - ''; - - gypFlags = mkGypFlags (gypFlagsUseSystemLibs // { - linux_use_gold_binary = false; - linux_use_gold_flags = false; - proprietary_codecs = false; - use_gnome_keyring = gnomeKeyringSupport; - use_gconf = gnomeSupport; - use_gio = gnomeSupport; - use_pulseaudio = pulseSupport; - disable_nacl = !enableNaCl; - use_openssl = useOpenSSL; - selinux = enableSELinux; - use_cups = cupsSupport; - linux_sandbox_path="${sandboxPath}"; - linux_sandbox_chrome_path="${libExecPath}/${packageName}"; - werror = ""; - - # Google API keys, see http://www.chromium.org/developers/how-tos/api-keys. - # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, - # please get your own set of keys. - google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI"; - google_default_client_id = "404761575300.apps.googleusercontent.com"; - google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D"; - - } // optionalAttrs proprietaryCodecs { - # enable support for the H.264 codec - proprietary_codecs = true; - ffmpeg_branding = "Chrome"; - } // optionalAttrs (stdenv.system == "x86_64-linux") { - target_arch = "x64"; - python_arch = "x86-64"; - } // optionalAttrs (stdenv.system == "i686-linux") { - target_arch = "ia32"; - python_arch = "ia32"; - }); - - configurePhase = '' - python build/linux/unbundle/replace_gyp_files.py ${gypFlags} - python build/gyp_chromium -f ninja --depth "$(pwd)" ${gypFlags} - ''; - - buildPhase = let - CC = "${gcc}/bin/gcc"; - CXX = "${gcc}/bin/g++"; - in '' - CC="${CC}" CC_host="${CC}" \ - CXX="${CXX}" CXX_host="${CXX}" \ - LINK_host="${CXX}" \ - "${ninja}/bin/ninja" -C "${buildPath}" \ - -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \ - chrome ${optionalString (!enableSELinux) "chrome_sandbox"} - ''; - - installPhase = let - enabledPlugins = optional enablePepperFlash binaryPlugins.flash - ++ optional enablePepperPDF binaryPlugins.pdf; - getFlags = plugin: "$(< ${plugin}/nix-support/chromium-flags)"; - pluginArgs = concatStringsSep " " (map getFlags enabledPlugins); - in '' - ensureDir "${libExecPath}" - cp -v "${buildPath}/"*.pak "${libExecPath}/" - ${optionalString (!versionOlder src.version "34.0.0.0") '' - cp -v "${buildPath}/icudtl.dat" "${libExecPath}/" - ''} - cp -vR "${buildPath}/locales" "${buildPath}/resources" "${libExecPath}/" - cp -v ${buildPath}/libffmpegsumo.so "${libExecPath}/" - - cp -v "${buildPath}/chrome" "${libExecPath}/${packageName}" - - mkdir -vp "$out/bin" - makeWrapper "${libExecPath}/${packageName}" "$out/bin/${packageName}" \ - --add-flags "${pluginArgs}" - - mkdir -vp "$out/share/man/man1" - cp -v "${buildPath}/chrome.1" "$out/share/man/man1/${packageName}.1" - - for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do - num_and_suffix="''${icon_file##*logo_}" - icon_size="''${num_and_suffix%.*}" - expr "$icon_size" : "^[0-9][0-9]*$" || continue - logo_output_prefix="$out/share/icons/hicolor" - logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" - mkdir -vp "$logo_output_path" - cp -v "$icon_file" "$logo_output_path/${packageName}.png" - done - ''; - - passthru = { - inherit sandbox; - }; - - meta = { - description = "An open source web browser from Google"; - homepage = http://www.chromium.org/; - maintainers = with maintainers; [ goibhniu chaoflow aszlig wizeman ]; - license = licenses.bsd3; - platforms = platforms.linux; - }; -} +in chromium.browser -- cgit 1.4.1