On 5/14/21 12:25 PM, Thomas Huth wrote: > On 14/05/2021 12.22, Philippe Mathieu-Daudé wrote: >> On 5/9/21 6:05 PM, Thomas Huth wrote: >>> On 07/05/2021 14.41, Paolo Bonzini wrote: >>>> On 07/05/21 11:45, Thomas Huth wrote: >>>>> >>>>> >>>>> diff --git a/Makefile b/Makefile >>>>> index bcbbec71a1..3088502329 100644 >>>>> --- a/Makefile >>>>> +++ b/Makefile >>>>> @@ -85,7 +85,8 @@ x := $(shell rm -rf meson-private meson-info >>>>> meson-logs) >>>>> endif >>>>> >>>>> # 1. ensure config-host.mak is up-to-date >>>>> -config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios >>>>> $(SRC_PATH)/VERSION >>>>> +config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios >>>>> $(SRC_PATH)/VERSION \ >>>>> + $(SRC_PATH)/default-configs/targets >>>>> @echo config-host.mak is out-of-date, running configure >>>>> @if test -f meson-private/coredata.dat; then \ >>>>> ./config.status --skip-meson; \ >>>>> >>>>> I.e. re-run configure if somethings in default-configs/targets >>>>> changed. >>>>> Does that look sane? >>>> >>>> I am not sure if using a directory is reliable (it's pre-existing for >>>> pc-bios). However you probably can use >>>> >>>> # currently in tests/Makefile.include, move it to toplevel Makefile >>>> TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, >>>> $(ninja-targets))) >>>> config-host.mak: $(SRC_PATH)/configure >>>> $(TARGETS:%=default-configs/targets/%) >>>> >>>> And then if a file goes missing it will trigger the rebuild of >>>> config-host.mak. >>> >>> Sounds like an idea, too ... but I'm unsure whether it's doable due to >>> the order of the statements there... TARGETS gets populated from >>> ninja-targets, but ninja-targets gets set *after* the config-host.mak >>> block ... would it be safe to move the config-host.mak block around? >> >> Not sure I understood Paolo's suggestion, I tried: >> >> -- >8 -- >> diff --git a/Makefile b/Makefile >> index bcbbec71a1c..3ef3622228b 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -152,6 +152,10 @@ ifneq ($(filter $(ninja-targets), >> $(ninja-cmd-goals)),) >> +$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \ >> $(NINJAFLAGS) $(sort $(filter $(ninja-targets), >> $(ninja-cmd-goals))) | cat) >> endif >> + >> +TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, >> $(ninja-targets))) >> +config-host.mak: $(SRC_PATH)/configure >> $(TARGETS:%=default-configs/targets/%) >> + >> endif >> >> # Force configure to re-run if the API symbols are updated >> --- >> >> But still get (after git pull this morning): >> >> $ ninja qemu-system-ppc >> [0/1] Regenerating build files. >> ... >> meson.build:1303:2: ERROR: Failed to load >> default-configs/targets/moxie-softmmu.mak: [Errno 2] No such file or >> directory: 'default-configs/targets/moxie-softmmu.mak' >> A full log can be found at meson-logs/meson-log.txt >> FAILED: build.ninja >> >> I'm keeping the directory unmodified in case you want me to try >> other fixes. > > If you run ninja directly, you certainly won't fix this issue by > patching the "Makefile" ;-)
OK... Not sure how to detect it from ninja then. For now I'm blowing this builddir and start with a fresh one. If we want to reproduce to fix we can checkout before/after your pull request tag. Eventually it will be automagically fixed when we'll remove the next target :) Regards, Phil.