meson/ninja: add setup hooks (#28444)

* Add setupHook for meson/ninja build

* libhttpseverywhere: Use meson/ninja setupHooks

* jamomacore: Remove superfluous ninja buildInput

* Remove obsolete ninja buildPhases

These are all handled by ninja's setup hook.

* lean2, xcbuild: fix build with ninja setup hook

Ninja is a runtime dependency here. However, cmake can generate Ninja
build files as well to satisfy the setup hook.

* qtwebengine: fix build with ninja setup hook
wip/yesman
Lukas Werling 7 years ago committed by Robin Gloster
parent cf7be87348
commit f0a1ab78b4
  1. 4
      pkgs/applications/audio/i-score/default.nix
  2. 1
      pkgs/applications/graphics/ao/default.nix
  3. 2
      pkgs/applications/science/logic/lean2/default.nix
  4. 4
      pkgs/development/libraries/audio/jamomacore/default.nix
  5. 12
      pkgs/development/libraries/libhttpseverywhere/default.nix
  6. 4
      pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix
  7. 2
      pkgs/development/tools/build-managers/meson/default.nix
  8. 22
      pkgs/development/tools/build-managers/meson/setup-hook.sh
  9. 2
      pkgs/development/tools/build-managers/ninja/default.nix
  10. 43
      pkgs/development/tools/build-managers/ninja/setup-hook.sh
  11. 2
      pkgs/development/tools/xcbuild/default.nix
  12. 4
      pkgs/tools/system/illum/default.nix

@ -67,10 +67,6 @@ stdenv.mkDerivation rec {
export CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH:$(echo "${jamomacore}/jamoma/share/cmake/Jamoma")"
'';
preBuild = ''
ninja
'';
installPhase = ''
cmake --build . --target install
'';

@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
};
cmakeFlags = "-G Ninja";
buildPhase = "ninja";
installPhase = ''
ninja install
cd ..

@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
cd src
'';
cmakeFlags = [ "-GNinja" ];
postInstall = ''
wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
'';

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, pkgconfig, alsaLib, portaudio, portmidi, libsndfile, cmake, libxml2, ninja }:
{ stdenv, fetchFromGitHub, pkgconfig, alsaLib, portaudio, portmidi, libsndfile, cmake, libxml2 }:
stdenv.mkDerivation rec {
version = "1.0-beta.1";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1hb9b6qc18rsvzvixgllknn756m6zwcn22c79rdibbyz1bhrcnln";
};
buildInputs = [ pkgconfig alsaLib portaudio portmidi libsndfile cmake libxml2 ninja ];
buildInputs = [ pkgconfig alsaLib portaudio portmidi libsndfile cmake libxml2 ];
meta = {
description = "A C++ platform for building dynamic and reflexive systems with an emphasis on audio and media";

@ -15,18 +15,6 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ gnome3.vala valadoc gobjectIntrospection meson ninja pkgconfig ];
buildInputs = [ glib gnome3.libgee libxml2 json_glib libsoup libarchive ];
configurePhase = ''
mkdir build
cd build
meson --prefix "$out" ..
'';
buildPhase = ''
ninja
'';
installPhase = "ninja install";
doCheck = true;
checkPhase = "./httpseverywhere_test";

@ -100,6 +100,10 @@ qtSubmodule {
xlibs.libXcomposite
];
patches = optional stdenv.needsPax ./qtwebengine-paxmark-mksnapshot.patch;
dontUseNinjaBuild = true;
dontUseNinjaInstall = true;
postInstall = ''
cat > $out/libexec/qt.conf <<EOF
[Paths]

@ -18,6 +18,8 @@ python3Packages.buildPythonApplication rec {
popd
'';
setupHook = ./setup-hook.sh;
meta = with lib; {
homepage = http://mesonbuild.com;
description = "SCons-like build system that use python as a front-end language and Ninja as a building backend";

@ -0,0 +1,22 @@
mesonConfigurePhase() {
runHook preConfigure
if [ -z "$dontAddPrefix" ]; then
mesonFlags="--prefix=$prefix $mesonFlags"
fi
# Build release by default.
mesonFlags="--buildtype=${mesonBuildType:-release} $mesonFlags"
echo "meson flags: $mesonFlags ${mesonFlagsArray[@]}"
meson build $mesonFlags "${mesonFlagsArray[@]}"
cd build
runHook postConfigure
}
if [ -z "$dontUseMesonConfigure" -a -z "$configurePhase" ]; then
setOutputFlags=
configurePhase=mesonConfigurePhase
fi

@ -26,6 +26,8 @@ stdenv.mkDerivation rec {
cp doc/manual.html $out/share/doc/ninja/
'';
setupHook = ./setup-hook.sh;
meta = with stdenv.lib; {
description = "Small build system with a focus on speed";
longDescription = ''

@ -0,0 +1,43 @@
ninjaBuildPhase() {
runHook preBuild
if [[ -z "$ninjaFlags" && ! ( -e build.ninja ) ]]; then
echo "no build.ninja, doing nothing"
else
# shellcheck disable=SC2086
local flagsArray=( \
${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \
$ninjaFlags "${ninjaFlagsArray[@]}" \
$buildFlags "${buildFlagsArray[@]}")
echoCmd 'build flags' "${flagsArray[@]}"
ninja "${flagsArray[@]}"
unset flagsArray
fi
runHook postBuild
}
if [ -z "$dontUseNinjaBuild" -a -z "$buildPhase" ]; then
buildPhase=ninjaBuildPhase
fi
ninjaInstallPhase() {
runHook preInstall
installTargets="${installTargets:-install}"
# shellcheck disable=SC2086
local flagsArray=( $installTargets \
$ninjaFlags "${ninjaFlagsArray[@]}")
echoCmd 'install flags' "${flagsArray[@]}"
ninja "${flagsArray[@]}"
unset flagsArray
runHook postInstall
}
if [ -z "$dontUseNinjaInstall" -a -z "$installPhase" ]; then
installPhase=ninjaInstallPhase
fi

@ -50,6 +50,8 @@ in stdenv.mkDerivation rec {
NIX_CFLAGS_COMPILE = "-Wno-error=strict-aliasing";
cmakeFlags = [ "-GNinja" ];
buildInputs = [ cmake zlib libxml2 libpng ninja ]
++ stdenv.lib.optionals stdenv.isDarwin [ CoreServices CoreGraphics ImageIO ];

@ -17,10 +17,6 @@ stdenv.mkDerivation rec {
bash ./configure
'';
buildPhase = ''
ninja
'';
installPhase = ''
mkdir -p $out/bin
mv illum-d $out/bin

Loading…
Cancel
Save