diff options
author | Lukas Werling <lukas.werling@gmail.com> | 2017-08-27 19:42:21 +0200 |
---|---|---|
committer | Robin Gloster <mail@glob.in> | 2017-08-27 19:42:21 +0200 |
commit | f0a1ab78b492015f8a60bb49065579195fe1dc86 (patch) | |
tree | b6ab83e33ebded59238ab828f7f24d535e4df789 /pkgs | |
parent | cf7be87348667e92cc9d02da53628401c2f40cba (diff) | |
download | nixlib-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')
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 |