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
    ...
```
pull/10432/head
Xavier Claessens 3 years ago committed by Eli Schwartz
parent a6df51aa8c
commit 9b9154017e
  1. 3
      mesonbuild/interpreter/interpreterobjects.py

@ -88,7 +88,8 @@ class FeatureOptionHolder(ObjectHolder[coredata.UserFeatureOption]):
super().__init__(option, interpreter) super().__init__(option, interpreter)
if option and option.is_auto(): if option and option.is_auto():
# TODO: we need to cast here because options is not a TypedDict # TODO: we need to cast 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.held_object.name = option.name
self.methods.update({'enabled': self.enabled_method, self.methods.update({'enabled': self.enabled_method,
'disabled': self.disabled_method, 'disabled': self.disabled_method,

Loading…
Cancel
Save