forked from mesonbuild/meson
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ninja backend: don't rebuild all tests by default
When running `ninja all` we shouldn't build testsuite programs as these might not be wanted e.g. in order to just install the project. We do want them to be built when running `ninja test`. Since meson 0.63 we actually have a dedicated ninja alias for test dependencies -- move these from the "all" rule to the dedicated test/benchmark rules. Closes: mesonbuild#1704 Closes: mesonbuild#1949 Closes: mesonbuild#2518 Closes: mesonbuild#3662 Closes: mesonbuild#5728 Closes: mesonbuild#5867 Closes: mesonbuild#6511 Closes: mesonbuild#11317 Closes: mesonbuild#13378
- Loading branch information
1 parent
547dfac
commit 6299f18
Showing
3 changed files
with
39 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
## Test targets no longer built by default | ||
|
||
`meson test` and the `ninja all` rule have been reworked to no longer force | ||
unnecessary rebuilds. | ||
|
||
`meson test` was invoking `ninja all` due to a bug if the chosen set of tests | ||
had no build dependencies. The behavior is now the same as when tests do have | ||
build dependencies, i.e. to only build the actual set of targets that are used | ||
by the test. This change could cause failures when upgrading to Meson 1.7.0, if | ||
the dependencies are not specified correctly in meson.build. Using `ninja test` | ||
has always been guaranteed to "do the right thing" and rebuild `all` as well; | ||
this continues to work. | ||
|
||
`ninja all` does not rebuild all tests anymore; it should be noted that this | ||
change means test programs are no longer guaranteed to have been built, | ||
depending on whether those test programs were *also* defined to build by | ||
default / marked as installable. This avoids building test-only binaries as | ||
part of installing the project (`ninja && ninja install`), which is unnecessary | ||
and has no use case. | ||
|
||
Some users might have been relying on the "all" target building test | ||
dependencies in combination with `meson test --no-rebuild` in order to skip | ||
calling out to ninja when running tests. This might break with this change | ||
because, when given `--no-rebuild`, Meson provides no guarantee that test | ||
dependencies are present and up to date. The recommended workflow is to use | ||
either `ninja test` or `ninja && meson test` but, if you wish to build test | ||
programs and dependencies in a separate stage, you can use for example `ninja | ||
all meson-test-prereq meson-benchmark-prereq` before `meson test --no-rebuild`. | ||
These prereq targets have been available since meson 0.63.0. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters