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..99215c0818d4 --- /dev/null +++ b/pkgs/development/tools/build-managers/gn/default.nix @@ -0,0 +1,73 @@ +{ stdenv, lib, fetchgit, fetchurl, libevent, ninja, python }: + +let + depsGit = { + "tools/gn" = fetchgit { + url = "https://chromium.googlesource.com/chromium/src/tools/gn"; + rev = "d0c518db129975ce88ff1de26c857873b0619c4b"; + sha256 = "0l15vzmjyx6bwlz1qhn3fy7yx3qzzxr3drnkj3l0p0fmyxza52vx"; + }; + "base" = fetchgit { + url = "https://chromium.googlesource.com/chromium/src/base"; + rev = "bc6e3ce8ca01b894751e1f7b22b561e3ae2e7f17"; + sha256 = "1yl49v6nxbrfms52xf7fiwh7d4301m2aj744pa3hzzh989c5j6g5"; + }; + "build" = fetchgit { + url = "https://chromium.googlesource.com/chromium/src/build"; + rev = "e934a19ae908081fba13769924e4ea45a7a451ce"; + sha256 = "0jhy418vaiin7djg9zvk83f8zhasigki4442x5j7gkmgmgmyc4am"; + }; + "config" = fetchgit { + url = "https://chromium.googlesource.com/chromium/src/build/config"; + rev = "df16c6a2c070704b0a25efe46ee9af16de1e65b3"; + sha256 = "1x18syzz1scwhd8lf448hy5lnfpq118l403x9qmwm0np318w09wg"; + }; + "testing/gtest" = fetchgit { + url = "https://chromium.googlesource.com/chromium/testing/gtest"; + rev = "585ec31ea716f08233a815e680fc0d4699843938"; + sha256 = "0csn1cza66851nmxxiw42smsm3422mx67vcyykwn0a71lcjng6rc"; + }; + }; + +in + stdenv.mkDerivation rec { + name = "gn"; + version = "0.0.0.20170629"; + sourceRoot = "."; + + unpackPhase = '' + ${lib.concatStringsSep "\n" ( + lib.mapAttrsToList (n: v: '' + mkdir -p $sourceRoot/${n} + cp -r ${v}/* $sourceRoot/${n} + '') depsGit)} + ''; + + postPatch = '' + # Patch out Chromium-bundled libevent + chmod u+w tools/gn/bootstrap tools/gn/bootstrap/bootstrap.py + sed -i -e '/static_libraries.*libevent/,/^ *\]\?[})]$/d' \ + tools/gn/bootstrap/bootstrap.py + ''; + + NIX_LDFLAGS = "-levent"; + + nativeBuildInputs = [ ninja python ]; + buildInputs = [ libevent ]; + + buildPhase = '' + python tools/gn/bootstrap/bootstrap.py -s + ''; + + installPhase = '' + install -vD out/Release/gn "$out/bin/gn" + ''; + + meta = with stdenv.lib; { + description = "A meta-build system that generates NinjaBuild files"; + homepage = https://chromium.googlesource.com/chromium/src/tools/gn; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = [ maintainers.stesie ]; + }; + } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2b05d1d345c9..31c5219b0f15 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7283,6 +7283,8 @@ with pkgs; ninja = callPackage ../development/tools/build-managers/ninja { }; + gn = callPackage ../development/tools/build-managers/gn { }; + nixbang = callPackage ../development/tools/misc/nixbang { pythonPackages = python3Packages; };