1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-03-06 23:31:34 +00:00
Commit graph

21 commits

Author SHA1 Message Date
Alyssa Ross 10f35ff05d meson.setupHook: prefer meson commands over ninja
Meson now comes with its own set of commands for building, testing,
installing etc., that by default wrap around Ninja.  The reason to
prefer using the Meson commands is that they take additional
options (e.g. setting custom timeouts for tests — my motivation for
this change).

Here, I've modified the Meson setup hook so that Meson's test and
install commands will be used instead of Ninja's when Meson's
configurePhase is used.  This restriction is to avoid starting to run
Meson directly when dealing with custom build systems that wrap around
Meson, like QEMU's.  We don't use meson's compile command, as it just
runs ninja, and that's handled fine by the existing Ninja setup hook.

Naturally the Meson commands don't support entirely the same set of
options that the Ninja ones did, but I checked through Nixpkgs to find
any packages using Meson that used any options that wouldn't be picked
up by this new system.  I only found one, and it was just setting
checkTarget = "test", which is the default value for Ninja and has no
Meson equivalent (because we directly tell Meson to run the tests
rather than going through a generic job system like Ninja).

Link: https://github.com/NixOS/nixpkgs/issues/113829
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
2023-10-09 10:21:36 +00:00
Sergei Trofimovich 69cf5181c3 stdenv/generic/setup.sh: enable parallel installs by default
The primary motivating example is openssl:

Before the change full package build took 1m54s minutes.
After the change full package build takes 59s.

About a 2x speedup.

The difference is visible because openssl builds hundreds of manpages
spawning a perl process per manual in `install` phase. Such a workload
is very easy to parallelize.

Another example would be `autotools`+`libtool` based build system where
install step requires relinking. The more binaries there are to relink
the more gain it will be to do it in parallel.

The change enables parallel installs by default only for buiilds that
already have parallel builds enabled. There is a high chance those build
systems already handle parallelism well but some packages will fail.

Consistently propagated the enableParallelBuilding to:
- cmake (enabled by default, similar to builds)
- ninja (set parallelism explicitly, don't rely on default)
- bmake (enable when requested)
- scons (enable when requested)
- meson (set parallelism explicitly, don't rely on default)
- waf (set parallelism explicitly, don't rely on default)
- qmake-4/5/6 (enable by default, similar to builds)
- xorg (always enable, similar to builds)
2023-02-26 22:02:09 +00:00
Jan Tojnar d83a3d03a3 meson: Use explicit setup subcommand
Fix the following warning in Meson 0.64:

WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.

Introduced in 3c7ab542c0
2022-09-28 03:20:51 +02:00
Las Safin 41d9dfb619 meson: Remove 0.57, use 0.60 everywhere 2022-01-11 12:51:09 +00:00
AndersonTorres 1a53eeda71 meson: put 0.57 in a subdirectory
Meson is a delicate package. It needs some patches to properly work in Nixpkgs
and many packages have it as a dependency, from many small applications to
systemd (yay, mass rebuilds in sight!). Updating it is not a trivial and
harmless task.

Therefore, I took the paranoid way and encapsulate the current version in a
subdir, instead of the regular write-over procedure. This way, at the best we
can just remove the whole dir in the future, and at the worse we just maintain
duplicated code.
2021-12-14 16:37:25 -03:00
John Ericson 8245230753 meson: Make target-agnostic
The cross file is added in the `mkDerivation`. It isn't nice putting
build tool-specific stuff here, but our current architecture gives us
little alternative.
2020-04-28 10:55:33 -04:00
John Ericson 3c00ca03a2 meson: Don't set CC and CXX
I've since convinced upstream to not use such vars for the build
platform during cross. Finally!
2020-04-26 16:50:06 -04:00
John Ericson b7f4bda282 treewide: *Phase(s)? variables are optional
If these aren't defined, the stdenv defaults are used in the `*Phase`
case, or no extra phases are done, in the `*Phases` case.
2019-11-01 14:44:44 -04:00
John Ericson 1290e532ea treewide: Make more dont* variables OK to be undefined in setup hooks 2019-11-01 14:44:44 -04:00
Jan Tojnar 41c575b6fc
meson: use plain buildtype
This should allow us to inherit optimization/striping from stdenv
2019-06-25 18:24:51 +02:00
Jan Tojnar 0fd5abb213
meson: do not download wraps 2019-06-25 18:24:51 +02:00
Jan Tojnar e529ec3263
meson: enable auto_features by default
We disabled them by default when they were introduced in

https://github.com/NixOS/nixpkgs/pull/42994

but enabling them probably makes more sense:

https://github.com/NixOS/nixpkgs/pull/54398
https://github.com/NixOS/nixpkgs/pull/63491
2019-06-25 18:24:51 +02:00
Matthew Bauer f6f7283e69 meson: remove check phase
This is now handled in ninja.
2018-11-18 19:31:01 -06:00
Uli Baum 6f0c92fda9 meson: set auto_features=disabled 2018-07-09 23:06:25 +02:00
Jan Tojnar bfa24c12a5
meson: set multiple output dirs in setup hook
Closes: #32636
2018-03-22 07:33:49 +01:00
Shea Levy 044c65bd06
Merge branch 'systemd-cross' into staging 2018-02-26 07:42:21 -05:00
Shea Levy 284f75a258
meson: Support cross-compiling 2018-02-26 06:38:32 -05:00
Jan Tojnar 40eadf9eb0
meson: print failed test logs 2018-02-18 16:24:50 +01:00
Jan Tojnar edd5be9eff
meson: set checkPhase in setup hook 2018-01-06 06:47:57 +01:00
Orivej Desh 46f57dbc14 meson: enable parallel building of meson projects by default 2017-12-07 08:52:42 +00:00
Lukas Werling f0a1ab78b4 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
2017-08-27 19:42:21 +02:00