nixpkgs/pkgs/development/tools/build-managers/ninja/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

81 lines
1.9 KiB
Nix
Raw Normal View History

{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, asciidoc
, docbook_xml_dtd_45
, docbook_xsl
2022-09-10 19:08:52 +00:00
, installShellFiles
, libxslt
, python3
, re2c
, buildDocs ? true
}:
2022-09-10 19:12:45 +00:00
stdenv.mkDerivation rec {
pname = "ninja";
2022-08-31 19:26:59 +00:00
version = "1.11.1";
2017-11-18 16:55:01 +00:00
src = fetchFromGitHub {
owner = "ninja-build";
repo = "ninja";
2022-09-10 19:12:45 +00:00
rev = "v${version}";
hash = "sha256-LvV/Fi2ARXBkfyA1paCRmLUwCh/rTyz+tGMg2/qEepI=";
};
nativeBuildInputs = [
python3
re2c
2022-09-10 19:08:52 +00:00
installShellFiles
]
++ lib.optionals buildDocs [
asciidoc
docbook_xml_dtd_45
docbook_xsl
libxslt.bin
];
buildPhase = ''
2022-09-04 20:23:15 +00:00
runHook preBuild
2017-11-18 16:55:01 +00:00
python configure.py --bootstrap
'' + lib.optionalString buildDocs ''
2018-09-15 22:36:21 +00:00
# "./ninja -vn manual" output copied here to support cross compilation.
2018-06-03 22:42:52 +00:00
asciidoc -b docbook -d book -o build/manual.xml doc/manual.asciidoc
xsltproc --nonet doc/docbook.xsl build/manual.xml > doc/manual.html
2022-09-04 20:23:15 +00:00
'' + ''
runHook postBuild
'';
installPhase = ''
2022-09-04 20:23:15 +00:00
runHook preInstall
2017-11-18 16:55:01 +00:00
install -Dm555 -t $out/bin ninja
2022-09-10 19:08:52 +00:00
installShellCompletion --name ninja \
--bash misc/bash-completion \
--zsh misc/zsh-completion
'' + lib.optionalString buildDocs ''
install -Dm444 -t $out/share/doc/ninja doc/manual.asciidoc doc/manual.html
2022-09-04 20:23:15 +00:00
'' + ''
runHook postInstall
'';
setupHook = ./setup-hook.sh;
meta = with lib; {
2013-05-11 09:49:32 +00:00
description = "Small build system with a focus on speed";
longDescription = ''
Ninja is a small build system with a focus on speed. It differs from
other build systems in two major respects: it is designed to have its
input files generated by a higher-level build system, and it is designed
to run builds as fast as possible.
'';
homepage = "https://ninja-build.org/";
license = licenses.asl20;
platforms = platforms.unix;
2017-11-18 16:55:01 +00:00
maintainers = with maintainers; [ thoughtpolice bjornfor orivej ];
2013-05-11 09:49:32 +00:00
};
2022-09-10 19:12:45 +00:00
}