2012-06-20 06:57:25 +02:00
|
|
|
{ stdenv, getConfig, fetchurl, fetchsvn, makeWrapper, which
|
2012-06-19 06:56:50 +02:00
|
|
|
|
|
|
|
# default dependencies
|
|
|
|
, bzip2, ffmpeg, flac #, harfbuzz
|
|
|
|
, icu, libevent, expat, libjpeg
|
|
|
|
, libpng, libwebp, libxml2, libxslt #, skia
|
|
|
|
, speex, sqlite, openssl #, stlport
|
|
|
|
, v8, xdg_utils, yasm, zlib
|
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
, python, perl, pkgconfig
|
2012-06-19 18:11:59 +02:00
|
|
|
, nspr, nss, udev
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
, utillinux, alsaLib
|
|
|
|
, gcc, bison, gperf
|
|
|
|
, krb5
|
|
|
|
, glib, gtk, gconf, libgcrypt, libgnome_keyring, dbus_glib
|
2012-06-20 06:57:25 +02:00
|
|
|
, libXScrnSaver, libXcursor, mesa
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
}:
|
2009-10-30 09:45:58 +01:00
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
let
|
2012-06-20 06:57:25 +02:00
|
|
|
mkConfigurable = stdenv.lib.mapAttrs (flag: default: getConfig ["chromium" flag] default);
|
|
|
|
|
|
|
|
config = mkConfigurable {
|
|
|
|
useSELinux = false;
|
|
|
|
naclSupport = false;
|
|
|
|
useOpenSSL = true;
|
|
|
|
enableGnomeSupport = false;
|
|
|
|
gnomeKeyringSupport = false;
|
|
|
|
useProprietaryCodecs = false;
|
|
|
|
};
|
|
|
|
|
2012-06-15 10:23:33 +02:00
|
|
|
sourceInfo = import ./source.nix;
|
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
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));
|
2011-09-11 22:48:02 +02:00
|
|
|
|
2012-06-19 06:56:50 +02:00
|
|
|
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
|
2012-06-19 18:11:59 +02:00
|
|
|
speex sqlite # stlport
|
2012-06-19 06:56:50 +02:00
|
|
|
v8 xdg_utils yasm zlib
|
|
|
|
];
|
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
in stdenv.mkDerivation rec {
|
2012-06-19 17:56:44 +02:00
|
|
|
name = "${packageName}-${version}";
|
|
|
|
packageName = "chromium";
|
2009-10-30 09:45:58 +01:00
|
|
|
|
2012-06-15 10:23:33 +02:00
|
|
|
version = sourceInfo.version;
|
2009-10-30 09:45:58 +01:00
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
src = fetchurl {
|
2012-06-15 10:23:33 +02:00
|
|
|
url = sourceInfo.url;
|
|
|
|
sha256 = sourceInfo.sha256;
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
};
|
|
|
|
|
2012-06-19 06:56:50 +02:00
|
|
|
buildInputs = defaultDependencies ++ [
|
2012-06-19 06:53:00 +02:00
|
|
|
which makeWrapper
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
python perl pkgconfig
|
2012-06-19 06:56:50 +02:00
|
|
|
nspr udev
|
2012-06-20 06:57:25 +02:00
|
|
|
(if config.useOpenSSL then openssl else nss)
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
utillinux alsaLib
|
|
|
|
gcc bison gperf
|
|
|
|
krb5
|
2012-06-19 20:21:31 +02:00
|
|
|
glib gtk dbus_glib
|
2012-06-20 06:57:25 +02:00
|
|
|
libXScrnSaver libXcursor mesa
|
|
|
|
] ++ stdenv.lib.optional config.gnomeKeyringSupport libgnome_keyring
|
|
|
|
++ stdenv.lib.optionals config.enableGnomeSupport [ gconf libgcrypt ];
|
2009-10-30 09:45:58 +01:00
|
|
|
|
2012-06-20 06:57:25 +02:00
|
|
|
opensslPatches = stdenv.lib.optional config.useOpenSSL openssl.patches;
|
2012-06-19 18:05:38 +02:00
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
prePatch = "patchShebangs .";
|
2009-10-30 09:45:58 +01:00
|
|
|
|
2012-06-20 06:57:25 +02:00
|
|
|
patches = stdenv.lib.optional (!config.useSELinux) ./enable_seccomp.patch;
|
2012-06-15 11:07:30 +02:00
|
|
|
|
2012-06-20 06:57:25 +02:00
|
|
|
postPatch = stdenv.lib.optionalString config.useOpenSSL ''
|
2012-06-19 18:05:38 +02:00
|
|
|
cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
|
|
|
|
'';
|
|
|
|
|
2012-06-19 06:56:50 +02:00
|
|
|
gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
linux_use_gold_binary = false;
|
|
|
|
linux_use_gold_flags = false;
|
|
|
|
proprietary_codecs = false;
|
2012-06-20 06:57:25 +02:00
|
|
|
use_gnome_keyring = config.gnomeKeyringSupport;
|
|
|
|
use_gconf = config.enableGnomeSupport;
|
|
|
|
use_gio = config.enableGnomeSupport;
|
|
|
|
disable_nacl = !config.naclSupport;
|
|
|
|
use_openssl = config.useOpenSSL;
|
|
|
|
selinux = config.useSELinux;
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
use_cups = false;
|
2012-06-15 11:06:07 +02:00
|
|
|
} // stdenv.lib.optionalAttrs (stdenv.system == "x86_64-linux") {
|
|
|
|
target_arch = "x64";
|
|
|
|
} // stdenv.lib.optionalAttrs (stdenv.system == "i686-linux") {
|
|
|
|
target_arch = "ia32";
|
|
|
|
});
|
|
|
|
|
|
|
|
buildType = "Release";
|
2011-08-12 18:45:17 +02:00
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
configurePhase = ''
|
2012-06-15 11:06:07 +02:00
|
|
|
python build/gyp_chromium --depth "$(pwd)" ${gypFlags}
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
'';
|
2011-08-12 18:45:17 +02:00
|
|
|
|
2012-06-15 11:06:07 +02:00
|
|
|
extraBuildFlags = let
|
|
|
|
CC = "${gcc}/bin/gcc";
|
|
|
|
CXX = "${gcc}/bin/g++";
|
|
|
|
in "CC=\"${CC}\" CXX=\"${CXX}\" CC.host=\"${CC}\" CXX.host=\"${CXX}\" LINK.host=\"${CXX}\"";
|
|
|
|
|
chromium: Minimal build (no install) from source.
This only gets chromium to build so far, installation is missing by upstream, so
we need to manually copy the corresponding files. And I guess with nix, we also
need to patch a few paths on installation.
Another issue is that at the moment, a lot of dependencies are used from the
source tree, rather than from the system.
Also, it would be nice to build using LLVM, as it really speeds up compilation a
*LOT* and also has the side effect of resulting in smaller binaries.
Working unit tests would be nice, too. Unfortunately they're quite heavyweight
and take hours to run, so I guess "someday" would be the most appropriate time
to integrate.
Further todo's:
- Allow to disable GConf, GIO and CUPS.
- Option to disable the sandbox (for whatever reason the user might have).
- Integrate gold binutils.
- Pulseaudio support.
- Clearly separate Linux specific stuff.
2012-06-12 10:19:22 +02:00
|
|
|
buildPhase = ''
|
2012-06-15 11:07:30 +02:00
|
|
|
make ${extraBuildFlags} BUILDTYPE=${buildType} library=shared_library chrome
|
2009-10-30 09:45:58 +01:00
|
|
|
'';
|
|
|
|
|
2012-06-15 10:19:26 +02:00
|
|
|
installPhase = ''
|
2012-06-19 17:56:44 +02:00
|
|
|
mkdir -vp "$out/libexec/${packageName}"
|
|
|
|
cp -v "out/${buildType}/"*.pak "$out/libexec/${packageName}/"
|
|
|
|
cp -vR "out/${buildType}/locales" "out/${buildType}/resources" "$out/libexec/${packageName}/"
|
2012-06-15 10:19:26 +02:00
|
|
|
|
2012-06-19 17:56:44 +02:00
|
|
|
cp -v "out/${buildType}/chrome" "$out/libexec/${packageName}/${packageName}"
|
2012-06-15 10:19:26 +02:00
|
|
|
|
|
|
|
mkdir -vp "$out/bin"
|
2012-06-19 17:56:44 +02:00
|
|
|
makeWrapper "$out/libexec/${packageName}/${packageName}" "$out/bin/${packageName}"
|
2012-06-15 10:19:26 +02:00
|
|
|
|
|
|
|
mkdir -vp "$out/share/man/man1"
|
2012-06-19 17:56:44 +02:00
|
|
|
cp -v "out/${buildType}/chrome.1" "$out/share/man/man1/${packageName}.1"
|
2012-06-15 10:19:26 +02:00
|
|
|
|
|
|
|
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%.*}"
|
|
|
|
logo_output_path="$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps"
|
|
|
|
mkdir -vp "$logo_output_path"
|
2012-06-19 17:56:44 +02:00
|
|
|
cp -v "$icon_file" "$logo_output_path/${packageName}.png"
|
2012-06-15 10:19:26 +02:00
|
|
|
done
|
|
|
|
'';
|
|
|
|
|
2011-02-12 19:47:28 +01:00
|
|
|
meta = with stdenv.lib; {
|
2010-09-11 16:20:46 +02:00
|
|
|
description = "Chromium, an open source web browser";
|
2011-02-12 19:47:28 +01:00
|
|
|
homepage = http://www.chromium.org/;
|
2012-01-21 19:28:39 +01:00
|
|
|
maintainers = with stdenv.lib.maintainers; [ goibhniu chaoflow ];
|
2011-02-12 19:47:28 +01:00
|
|
|
license = licenses.bsd3;
|
2009-10-30 13:28:44 +01:00
|
|
|
};
|
2009-10-30 09:45:58 +01:00
|
|
|
}
|