[PATCH] Makefile: Fix config-devices.mak not regenerated when Kconfig updated

Philippe Mathieu-Daudé posted 1 patch 4 years, 5 months ago
Test asan passed
Test checkpatch passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191104095530.22091-1-philmd@redhat.com
There is a newer version of this series
Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH] Makefile: Fix config-devices.mak not regenerated when Kconfig updated
Posted by Philippe Mathieu-Daudé 4 years, 5 months ago
When hw/$DIR/Kconfig is changed, the corresponding generated
hw/$DIR/config-devices.mak is not being updated.
Fix this by including all the hw/*/Kconfig files to the prerequisite
names of the rule generating the config-devices.mak files.

Fixes: e0e312f3525a (build: switch to Kconfig)
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
If OK, I plan to include this fix in the "hw/i386/pc: Split PIIX3
southbridge from i440FX northbridge" pull request.
---
 Makefile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 0e994a275d..c1461b21e8 100644
--- a/Makefile
+++ b/Makefile
@@ -384,7 +384,10 @@ MINIKCONF_ARGS = \
     CONFIG_LINUX=$(CONFIG_LINUX) \
     CONFIG_PVRDMA=$(CONFIG_PVRDMA)
 
-MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
+MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig \
+                   $(patsubst %,$(SRC_PATH)/hw/%,$(shell sed -ne \
+                                                    's/source \(.*\)/\1/p' \
+                                                    < $(SRC_PATH)/hw/Kconfig))
 MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py \
 
 $(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_INPUTS) $(BUILD_DIR)/config-host.mak
-- 
2.21.0


Re: [PATCH] Makefile: Fix config-devices.mak not regenerated when Kconfig updated
Posted by Daniel P. Berrangé 4 years, 5 months ago
On Mon, Nov 04, 2019 at 10:55:30AM +0100, Philippe Mathieu-Daudé wrote:
> When hw/$DIR/Kconfig is changed, the corresponding generated
> hw/$DIR/config-devices.mak is not being updated.
> Fix this by including all the hw/*/Kconfig files to the prerequisite
> names of the rule generating the config-devices.mak files.
> 
> Fixes: e0e312f3525a (build: switch to Kconfig)
> Reported-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> If OK, I plan to include this fix in the "hw/i386/pc: Split PIIX3
> southbridge from i440FX northbridge" pull request.
> ---
>  Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 0e994a275d..c1461b21e8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -384,7 +384,10 @@ MINIKCONF_ARGS = \
>      CONFIG_LINUX=$(CONFIG_LINUX) \
>      CONFIG_PVRDMA=$(CONFIG_PVRDMA)
>  
> -MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
> +MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig \
> +                   $(patsubst %,$(SRC_PATH)/hw/%,$(shell sed -ne \
> +                                                    's/source \(.*\)/\1/p' \
> +                                                    < $(SRC_PATH)/hw/Kconfig))

Why can't we use the simpler wildcard statement:

   $(wildcard $(SRC_PATH)/hw/*/Kconfig)

instead of reading the file names from the hw/Kconfig file ?

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] Makefile: Fix config-devices.mak not regenerated when Kconfig updated
Posted by Philippe Mathieu-Daudé 4 years, 5 months ago
On 11/5/19 3:55 PM, Daniel P. Berrangé wrote:
> On Mon, Nov 04, 2019 at 10:55:30AM +0100, Philippe Mathieu-Daudé wrote:
>> When hw/$DIR/Kconfig is changed, the corresponding generated
>> hw/$DIR/config-devices.mak is not being updated.
>> Fix this by including all the hw/*/Kconfig files to the prerequisite
>> names of the rule generating the config-devices.mak files.
>>
>> Fixes: e0e312f3525a (build: switch to Kconfig)
>> Reported-by: Peter Maydell <peter.maydell@linaro.org>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>> If OK, I plan to include this fix in the "hw/i386/pc: Split PIIX3
>> southbridge from i440FX northbridge" pull request.
>> ---
>>   Makefile | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 0e994a275d..c1461b21e8 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -384,7 +384,10 @@ MINIKCONF_ARGS = \
>>       CONFIG_LINUX=$(CONFIG_LINUX) \
>>       CONFIG_PVRDMA=$(CONFIG_PVRDMA)
>>   
>> -MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
>> +MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig \
>> +                   $(patsubst %,$(SRC_PATH)/hw/%,$(shell sed -ne \
>> +                                                    's/source \(.*\)/\1/p' \
>> +                                                    < $(SRC_PATH)/hw/Kconfig))
> 
> Why can't we use the simpler wildcard statement:
> 
>     $(wildcard $(SRC_PATH)/hw/*/Kconfig)
> 
> instead of reading the file names from the hw/Kconfig file ?

You might have uncommited Kconfig files, but this shouldn't be a 
problem, make is only interested in checking the modification time of 
these files.

Thanks for reviewing, I'll respin.

Re: [PATCH] Makefile: Fix config-devices.mak not regenerated when Kconfig updated
Posted by Philippe Mathieu-Daudé 4 years, 5 months ago
On Mon, Nov 4, 2019 at 10:55 AM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> When hw/$DIR/Kconfig is changed, the corresponding generated
> hw/$DIR/config-devices.mak is not being updated.
> Fix this by including all the hw/*/Kconfig files to the prerequisite
> names of the rule generating the config-devices.mak files.

You can see this tread where Peter reported the failure:
https://lists.gnu.org/archive/html/qemu-devel/2019-11/msg00125.html

How to reproduce:

  $  git checkout next_branch
  $  make i386-softmmu/all
  $  git checkout prev_branch
  $ make clean
  $ make i386-softmmu/all
    # error
  $  make print-MINIKCONF_INPUTS

> Fixes: e0e312f3525a (build: switch to Kconfig)
> Reported-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> If OK, I plan to include this fix in the "hw/i386/pc: Split PIIX3
> southbridge from i440FX northbridge" pull request.
> ---
>  Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 0e994a275d..c1461b21e8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -384,7 +384,10 @@ MINIKCONF_ARGS = \
>      CONFIG_LINUX=$(CONFIG_LINUX) \
>      CONFIG_PVRDMA=$(CONFIG_PVRDMA)
>
> -MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
> +MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig \
> +                   $(patsubst %,$(SRC_PATH)/hw/%,$(shell sed -ne \
> +                                                    's/source \(.*\)/\1/p' \
> +                                                    < $(SRC_PATH)/hw/Kconfig))
>  MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py \
>
>  $(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_INPUTS) $(BUILD_DIR)/config-host.mak
> --
> 2.21.0
>