Skip to content
  • Paolo Bonzini's avatar
    6c5f893d
    build: further refine build.ninja rules · 6c5f893d
    Paolo Bonzini authored
    
    
    In commit b0fcc6fc ("build: rebuild build.ninja using
    "meson setup --reconfigure"", 2023-05-19) I changed the build.ninja
    rule in the Makefile to use "meson setup" so that the Makefile would
    pick up a changed path to the meson binary.
    
    However, there was a reason why build.ninja was rebuilt using $(NINJA)
    itself.  Namely, ninja has its own cache of file modification times,
    and if it does not know about the modification that was done outside
    its control, it will *also* try to regenerate build.ninja.  This can be
    simply by running "make" on a fresh tree immediately after "configure";
    that will trigger an unnecessary meson run.
    
    So, apply a refinement to the rule in order to cover both cases:
    
    - track the meson binary that was used (and that is embedded in
      build.ninja's reconfigure rules); to do this, write build.ninja.stamp
      right after executing meson successfully
    
    - if it changed, force usage of "$(MESON) setup --reconfigure" to
      update the path in the reconfigure rule
    
    - if it didn't change, use "$(NINJA) build.ninja" just like before
      commit b0fcc6fc.
    
    Reported-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Tested-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    6c5f893d
    build: further refine build.ninja rules
    Paolo Bonzini authored
    
    
    In commit b0fcc6fc ("build: rebuild build.ninja using
    "meson setup --reconfigure"", 2023-05-19) I changed the build.ninja
    rule in the Makefile to use "meson setup" so that the Makefile would
    pick up a changed path to the meson binary.
    
    However, there was a reason why build.ninja was rebuilt using $(NINJA)
    itself.  Namely, ninja has its own cache of file modification times,
    and if it does not know about the modification that was done outside
    its control, it will *also* try to regenerate build.ninja.  This can be
    simply by running "make" on a fresh tree immediately after "configure";
    that will trigger an unnecessary meson run.
    
    So, apply a refinement to the rule in order to cover both cases:
    
    - track the meson binary that was used (and that is embedded in
      build.ninja's reconfigure rules); to do this, write build.ninja.stamp
      right after executing meson successfully
    
    - if it changed, force usage of "$(MESON) setup --reconfigure" to
      update the path in the reconfigure rule
    
    - if it didn't change, use "$(NINJA) build.ninja" just like before
      commit b0fcc6fc.
    
    Reported-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Tested-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading