diff options
-rw-r--r-- | docs/markdown/Builtin-options.md | 2 | ||||
-rw-r--r-- | docs/markdown/Subprojects.md | 7 | ||||
-rw-r--r-- | docs/markdown/snippets/subsubproject.md | 4 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 13 | ||||
-rw-r--r-- | mesonbuild/wrap/__init__.py | 2 |
5 files changed, 20 insertions, 8 deletions
diff --git a/docs/markdown/Builtin-options.md b/docs/markdown/Builtin-options.md index 05ff4ff..b7dd3de 100644 --- a/docs/markdown/Builtin-options.md +++ b/docs/markdown/Builtin-options.md @@ -79,7 +79,7 @@ for details. | unity_size {>=2} | 4 | Unity file block size | no | no | | warning_level {0, 1, 2, 3} | 1 | Set the warning level. From 0 = none to 3 = highest | no | yes | | werror | false | Treat warnings as errors | no | yes | -| wrap_mode {default, nofallback,<br>nodownload, forcefallback} | default | Wrap mode to use | no | no | +| wrap_mode {default, nofallback,<br>nodownload, forcefallback, nopromote} | default | Wrap mode to use | no | no | | force_fallback_for | [] | Force fallback for those dependencies | no | no | <a name="build-type-options"></a> diff --git a/docs/markdown/Subprojects.md b/docs/markdown/Subprojects.md index 7e17afa..e8adc96 100644 --- a/docs/markdown/Subprojects.md +++ b/docs/markdown/Subprojects.md @@ -258,6 +258,13 @@ the following command-line options: `glib-2.0` must also be forced to fallback, in this case with `--force-fallback-for=glib,gsteamer`. +* **--wrap-mode=nopromote** + + *Since 0.56.0* Meson will automatically use wrap files found in subprojects + and copy them into the main project. That new behavior can be disabled by + passing `--wrap-mode=nopromote`. In that case only wraps found in the main + project will be used. + ## `meson subprojects` command *Since 0.49.0* diff --git a/docs/markdown/snippets/subsubproject.md b/docs/markdown/snippets/subsubproject.md index fdba3e0..77f4a0d 100644 --- a/docs/markdown/snippets/subsubproject.md +++ b/docs/markdown/snippets/subsubproject.md @@ -1,4 +1,4 @@ -## Sub-subprojects +## Wraps from subprojects are automatically promoted It is not required to promote wrap files for subprojects into the main project any more. When configuring a subproject, meson will look for any wrap file or @@ -9,3 +9,5 @@ the new wrap file or directory is ignored. That means that the main project can always override any subproject's wrap files by providing their own, it also means the ordering in which subprojects are configured matters, if 2 subprojects provide foo.wrap only the one from the first subproject to be configured will be used. + +This new behavior can be disabled by passing `--wrap-mode=nopromote`. diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 56bc72d..ad6f04e 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -3166,12 +3166,13 @@ external dependencies (including libraries) must go to "dependencies".''') # Load wrap files from this (sub)project. wrap_mode = self.coredata.get_builtin_option('wrap_mode') - subdir = os.path.join(self.subdir, spdirname) - r = wrap.Resolver(self.environment.get_source_dir(), subdir, wrap_mode) - if self.is_subproject(): - self.environment.wrap_resolver.merge_wraps(r) - else: - self.environment.wrap_resolver = r + if not self.is_subproject() or wrap_mode != WrapMode.nopromote: + subdir = os.path.join(self.subdir, spdirname) + r = wrap.Resolver(self.environment.get_source_dir(), subdir, wrap_mode) + if self.is_subproject(): + self.environment.wrap_resolver.merge_wraps(r) + else: + self.environment.wrap_resolver = r self.build.projects[self.subproject] = proj_name mlog.log('Project name:', mlog.bold(proj_name)) diff --git a/mesonbuild/wrap/__init__.py b/mesonbuild/wrap/__init__.py index 1771146..653f42a 100644 --- a/mesonbuild/wrap/__init__.py +++ b/mesonbuild/wrap/__init__.py @@ -40,6 +40,7 @@ string_to_value = {'default': 1, 'nofallback': 2, 'nodownload': 3, 'forcefallback': 4, + 'nopromote': 5, } class WrapMode(Enum): @@ -47,6 +48,7 @@ class WrapMode(Enum): nofallback = 2 nodownload = 3 forcefallback = 4 + nopromote = 5 def __str__(self) -> str: return self.name |