diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2022-05-25 09:33:17 -0400 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2022-05-31 13:23:47 +0530 |
commit | 25a80ebef8cc6b3f1002b395375207ba13222460 (patch) | |
tree | 7ae602fcf309d931470cd4f65cceb29b4447221a | |
parent | 0635be0dee86b8314f8699376a5a6376eb30904d (diff) | |
download | meson-25a80ebef8cc6b3f1002b395375207ba13222460.tar.gz |
Make a copy of auto_features options when changing its name
This fixes bogus messages "skipped: feature foo disabled" when
auto_features=disabled. It was reporting the name of the latest
get_option() call instead of the name of the current feature option.
This is especially visible in GStreamer summary where it should show a
different option name for every subproject but instead shows "tools"
everywhere:
```
Subprojects
gst-devtools : NO Feature 'tools' disabled
gst-editing-services : NO Feature 'tools' disabled
...
```
-rw-r--r-- | mesonbuild/interpreter/interpreterobjects.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index 4554b7e4b..44009e193 100644 --- a/mesonbuild/interpreter/interpreterobjects.py +++ b/mesonbuild/interpreter/interpreterobjects.py @@ -85,7 +85,8 @@ class FeatureOptionHolder(ObjectHolder[coredata.UserFeatureOption]): super().__init__(option, interpreter) if option and option.is_auto(): # TODO: we need to case here because options is not a TypedDict - self.held_object = T.cast(coredata.UserFeatureOption, self.env.coredata.options[OptionKey('auto_features')]) + auto = T.cast(coredata.UserFeatureOption, self.env.coredata.options[OptionKey('auto_features')]) + self.held_object = copy.copy(auto) self.held_object.name = option.name self.methods.update({'enabled': self.enabled_method, 'disabled': self.disabled_method, |