scripts/minikconf.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
When minikconf writes config-devices.mak, it includes all variables including
those from MINIKCONF_ARGS. This causes values from config-host.mak to "stick" to
the ones used in generating config-devices.mak, because config-devices.mak is
included after config-host.mak. Avoid this by omitting assignments coming
from the command line in the output of minikconf.
Reported-by: Christophe de Dinechin <cdupontd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/minikconf.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/minikconf.py b/scripts/minikconf.py
index 0ffc6c38da..3109a81db7 100644
--- a/scripts/minikconf.py
+++ b/scripts/minikconf.py
@@ -688,11 +688,13 @@ if __name__ == '__main__':
data = KconfigData(mode)
parser = KconfigParser(data)
+ external_vars = set()
for arg in argv[3:]:
m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg)
if m is not None:
name, value = m.groups()
parser.do_assignment(name, value == 'y')
+ external_vars.add(name[7:])
else:
fp = open(arg, 'r')
parser.parse_file(fp)
@@ -700,7 +702,8 @@ if __name__ == '__main__':
config = data.compute_config()
for key in sorted(config.keys()):
- print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n')))
+ if key not in external_vars:
+ print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n')))
deps = open(argv[2], 'w')
for fname in data.previously_included:
--
2.21.0
> On 25 Jun 2019, at 10:13, Paolo Bonzini <pbonzini@redhat.com> wrote: > > When minikconf writes config-devices.mak, it includes all variables including > those from MINIKCONF_ARGS. This causes values from config-host.mak to "stick" to > the ones used in generating config-devices.mak, because config-devices.mak is > included after config-host.mak. Avoid this by omitting assignments coming > from the command line in the output of minikconf. > > Reported-by: Christophe de Dinechin <cdupontd@redhat.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > scripts/minikconf.py | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/scripts/minikconf.py b/scripts/minikconf.py > index 0ffc6c38da..3109a81db7 100644 > --- a/scripts/minikconf.py > +++ b/scripts/minikconf.py > @@ -688,11 +688,13 @@ if __name__ == '__main__': > > data = KconfigData(mode) > parser = KconfigParser(data) > + external_vars = set() > for arg in argv[3:]: > m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg) > if m is not None: > name, value = m.groups() > parser.do_assignment(name, value == 'y') > + external_vars.add(name[7:]) > else: > fp = open(arg, 'r') > parser.parse_file(fp) > @@ -700,7 +702,8 @@ if __name__ == '__main__': > > config = data.compute_config() > for key in sorted(config.keys()): > - print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n'))) > + if key not in external_vars: > + print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n'))) The approach is interesting, and shorter than the fix I had in mind, which was to add a target to generate all the config*.mak, then call that from the configure script, forcing external variables on the command-line to override config*.mak values > > deps = open(argv[2], 'w') > for fname in data.previously_included: > -- > 2.21.0 This seems to address the leftover CONFIG_SPICE=y, but I ran into what looks like new compilation errors with this. For example, with a configure that strips quite a lot away: monitor/hmp-cmds.c: In function ‘hmp_change’: monitor/hmp-cmds.c:1946:17: error: unused variable ‘hmp_mon’ [-Werror=unused-variable] 1946 | MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common); | ^~~~~~~ This is apparently a side effect of that variable being used only under CONFIG_VNC. Patch upcoming. There may be other similar side effects. Tested-by: Christophe de Dinechin <dinechin@redhat.com> Reviewed-by: Christophe de DInechin <dinechin@redhat.com>
On 6/25/19 10:13 AM, Paolo Bonzini wrote: > When minikconf writes config-devices.mak, it includes all variables including > those from MINIKCONF_ARGS. This causes values from config-host.mak to "stick" to > the ones used in generating config-devices.mak, because config-devices.mak is > included after config-host.mak. Avoid this by omitting assignments coming > from the command line in the output of minikconf. > > Reported-by: Christophe de Dinechin <cdupontd@redhat.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > scripts/minikconf.py | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/scripts/minikconf.py b/scripts/minikconf.py > index 0ffc6c38da..3109a81db7 100644 > --- a/scripts/minikconf.py > +++ b/scripts/minikconf.py > @@ -688,11 +688,13 @@ if __name__ == '__main__': > > data = KconfigData(mode) > parser = KconfigParser(data) > + external_vars = set() > for arg in argv[3:]: > m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg) > if m is not None: > name, value = m.groups() > parser.do_assignment(name, value == 'y') > + external_vars.add(name[7:]) > else: > fp = open(arg, 'r') > parser.parse_file(fp) > @@ -700,7 +702,8 @@ if __name__ == '__main__': > > config = data.compute_config() > for key in sorted(config.keys()): > - print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n'))) > + if key not in external_vars: > + print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n'))) > > deps = open(argv[2], 'w') > for fname in data.previously_included: >
On 6/25/19 12:52 PM, Philippe Mathieu-Daudé wrote: > On 6/25/19 10:13 AM, Paolo Bonzini wrote: >> When minikconf writes config-devices.mak, it includes all variables including >> those from MINIKCONF_ARGS. This causes values from config-host.mak to "stick" to >> the ones used in generating config-devices.mak, because config-devices.mak is >> included after config-host.mak. Avoid this by omitting assignments coming >> from the command line in the output of minikconf. >> >> Reported-by: Christophe de Dinechin <cdupontd@redhat.com> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
© 2016 - 2024 Red Hat, Inc.