diff options
author | aszlig <aszlig@redmoonstudios.org> | 2016-10-09 19:52:07 +0200 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2016-11-08 20:11:48 +0100 |
commit | 09f87eeb7f48ea15d800d73e2a4229a1d47f26a2 (patch) | |
tree | 37fa2e5000f7784f4742741519215d77db361acd /pkgs/development | |
parent | 4d0bba19f4e1037bcfefa9e5f0b39da00f73281e (diff) | |
download | nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar.gz nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar.bz2 nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar.lz nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar.xz nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.tar.zst nixlib-09f87eeb7f48ea15d800d73e2a4229a1d47f26a2.zip |
gn: Init at 0.0.0.20161008
This is the standalone version of GN used currently solely for building Chromium. An upstream bug report is available at https://crbug.com/504074 to support a standalone build without needing various components from the Chromium source tree. Because there isn't a standalone vrsion available, I'm choosing 0.0.0.${date} as the version scheme here so that we don't conflict with versioned releases from upstream someday[TM]. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'pkgs/development')
-rw-r--r-- | pkgs/development/tools/build-managers/gn/default.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/gn/default.nix b/pkgs/development/tools/build-managers/gn/default.nix new file mode 100644 index 000000000000..a579b45cf626 --- /dev/null +++ b/pkgs/development/tools/build-managers/gn/default.nix @@ -0,0 +1,80 @@ +{ stdenv, fetchgit, fetchurl, python, ninja, libevent, xdg-user-dirs }: + +let + date = "20161008"; + + sourceTree = { + "src/base" = { + rev = "e71a514e60b085cc92bf6ef951ec329f52c79f9f"; + sha256 = "0zycbssmd2za0zij8czcs1fr66fi12f1g5ysc8fzkf8khbs5h6a9"; + }; + "src/build" = { + rev = "17093d45bf738e9ae4b6294492860ee65218a657"; + sha256 = "0i9py78c3f46sc789qvdhmgjgyrghysbqjgr67iypwphw52jv2dz"; + }; + "src/tools/gn" = { + rev = "9ff32cf3f1f4ad0212ac674b6303e7aa68f44f3f"; + sha256 = "14jr45k5fgcqk9d18fd77sijlqavvnv0knndh74zyb0b60464hz1"; + }; + "testing/gtest" = { + rev = "585ec31ea716f08233a815e680fc0d4699843938"; + sha256 = "0csn1cza66851nmxxiw42smsm3422mx67vcyykwn0a71lcjng6rc"; + }; + }; + + mkDepend = path: attrs: fetchgit { + url = "https://chromium.googlesource.com/chromium/${path}"; + inherit (attrs) rev sha256; + }; + +in stdenv.mkDerivation rec { + name = "gn-${version}"; + version = "0.0.0.${date}"; + + unpackPhase = '' + ${with stdenv.lib; concatStrings (mapAttrsToList (path: sha256: '' + dest=source/${escapeShellArg (removePrefix "src/" path)} + mkdir -p "$(dirname "$dest")" + cp --no-preserve=all -rT ${escapeShellArg (mkDepend path sha256)} "$dest" + '') sourceTree)} + ( mkdir -p source/third_party + cd source/third_party + unpackFile ${xdg-user-dirs.src} + mv * xdg_user + ) + ''; + + sourceRoot = "source"; + + postPatch = '' + # GN's bootstrap script relies on shebangs (which are relying on FHS paths), + # except when on Windows. So instead of patchShebang-ing it, let's just + # force the same behaviour as on Windows. + sed -i -e '/^def *check_call/,/^[^ ]/ { + s/is_win/True/ + }' tools/gn/bootstrap/bootstrap.py + + # Patch out Chromium-bundled libevent and xdg_user_dirs + sed -i -e '/static_libraries.*libevent/,/^ *\]\?[})]$/d' \ + tools/gn/bootstrap/bootstrap.py + ''; + + NIX_LDFLAGS = "-levent"; + + nativeBuildInputs = [ python ninja ]; + buildInputs = [ libevent ]; + + buildPhase = '' + python tools/gn/bootstrap/bootstrap.py -v -s --no-clean + ''; + + installPhase = '' + install -vD out_bootstrap/gn "$out/bin/gn" + ''; + + meta = { + description = "A meta-build system that generates NinjaBuild files"; + homepage = "https://chromium.googlesource.com/chromium/src/tools/gn/"; + license = stdenv.lib.licenses.bsd3; + }; +} |