about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorLukas Werling <lukas.werling@gmail.com>2017-08-27 19:42:21 +0200
committerRobin Gloster <mail@glob.in>2017-08-27 19:42:21 +0200
commitf0a1ab78b492015f8a60bb49065579195fe1dc86 (patch)
treeb6ab83e33ebded59238ab828f7f24d535e4df789 /pkgs
parentcf7be87348667e92cc9d02da53628401c2f40cba (diff)
downloadnixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar.gz
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar.bz2
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar.lz
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar.xz
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.tar.zst
nixlib-f0a1ab78b492015f8a60bb49065579195fe1dc86.zip
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
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/i-score/default.nix4
-rw-r--r--pkgs/applications/graphics/ao/default.nix1
-rw-r--r--pkgs/applications/science/logic/lean2/default.nix2
-rw-r--r--pkgs/development/libraries/audio/jamomacore/default.nix4
-rw-r--r--pkgs/development/libraries/libhttpseverywhere/default.nix12
-rw-r--r--pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/meson/default.nix2
-rw-r--r--pkgs/development/tools/build-managers/meson/setup-hook.sh22
-rw-r--r--pkgs/development/tools/build-managers/ninja/default.nix2
-rw-r--r--pkgs/development/tools/build-managers/ninja/setup-hook.sh43
-rw-r--r--pkgs/development/tools/xcbuild/default.nix2
-rw-r--r--pkgs/tools/system/illum/default.nix4
12 files changed, 79 insertions, 23 deletions
diff --git a/pkgs/applications/audio/i-score/default.nix b/pkgs/applications/audio/i-score/default.nix
index 1a47b74e21c7..eb2b2ca0702a 100644
--- a/pkgs/applications/audio/i-score/default.nix
+++ b/pkgs/applications/audio/i-score/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
   '';
diff --git a/pkgs/applications/graphics/ao/default.nix b/pkgs/applications/graphics/ao/default.nix
index 2bba73fae1a7..7396fdc045f1 100644
--- a/pkgs/applications/graphics/ao/default.nix
+++ b/pkgs/applications/graphics/ao/default.nix
@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
   };
 
   cmakeFlags = "-G Ninja";
-  buildPhase = "ninja";
   installPhase = ''
     ninja install
     cd ..
diff --git a/pkgs/applications/science/logic/lean2/default.nix b/pkgs/applications/science/logic/lean2/default.nix
index f45f65e90826..2b861b6d06d9 100644
--- a/pkgs/applications/science/logic/lean2/default.nix
+++ b/pkgs/applications/science/logic/lean2/default.nix
@@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
     cd src
   '';
 
+  cmakeFlags = [ "-GNinja" ];
+
   postInstall = ''
     wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
   '';
diff --git a/pkgs/development/libraries/audio/jamomacore/default.nix b/pkgs/development/libraries/audio/jamomacore/default.nix
index a3d04fee7f64..5dac4d8e5925 100644
--- a/pkgs/development/libraries/audio/jamomacore/default.nix
+++ b/pkgs/development/libraries/audio/jamomacore/default.nix
@@ -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";
diff --git a/pkgs/development/libraries/libhttpseverywhere/default.nix b/pkgs/development/libraries/libhttpseverywhere/default.nix
index 239536140ec0..88a3ebbc4fbe 100644
--- a/pkgs/development/libraries/libhttpseverywhere/default.nix
+++ b/pkgs/development/libraries/libhttpseverywhere/default.nix
@@ -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";
diff --git a/pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix b/pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix
index 1684e6aac707..c0b9aa83e194 100644
--- a/pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix
+++ b/pkgs/development/libraries/qt-5/5.9/qtwebengine/default.nix
@@ -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]
diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix
index 1855985f09f2..1f38ad584532 100644
--- a/pkgs/development/tools/build-managers/meson/default.nix
+++ b/pkgs/development/tools/build-managers/meson/default.nix
@@ -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";
diff --git a/pkgs/development/tools/build-managers/meson/setup-hook.sh b/pkgs/development/tools/build-managers/meson/setup-hook.sh
new file mode 100644
index 000000000000..dacad017ede0
--- /dev/null
+++ b/pkgs/development/tools/build-managers/meson/setup-hook.sh
@@ -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
diff --git a/pkgs/development/tools/build-managers/ninja/default.nix b/pkgs/development/tools/build-managers/ninja/default.nix
index 39d0d4e0e39c..fff6af396b9f 100644
--- a/pkgs/development/tools/build-managers/ninja/default.nix
+++ b/pkgs/development/tools/build-managers/ninja/default.nix
@@ -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 = ''
diff --git a/pkgs/development/tools/build-managers/ninja/setup-hook.sh b/pkgs/development/tools/build-managers/ninja/setup-hook.sh
new file mode 100644
index 000000000000..9ea6549a8243
--- /dev/null
+++ b/pkgs/development/tools/build-managers/ninja/setup-hook.sh
@@ -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
diff --git a/pkgs/development/tools/xcbuild/default.nix b/pkgs/development/tools/xcbuild/default.nix
index 649c7d14927e..d38c85a5d838 100644
--- a/pkgs/development/tools/xcbuild/default.nix
+++ b/pkgs/development/tools/xcbuild/default.nix
@@ -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 ];
 
diff --git a/pkgs/tools/system/illum/default.nix b/pkgs/tools/system/illum/default.nix
index 4cdfeec12b79..d8faeea19d84 100644
--- a/pkgs/tools/system/illum/default.nix
+++ b/pkgs/tools/system/illum/default.nix
@@ -17,10 +17,6 @@ stdenv.mkDerivation rec {
     bash ./configure
   '';
 
-  buildPhase = ''
-    ninja
-  '';
-
   installPhase = ''
     mkdir -p $out/bin
     mv illum-d $out/bin