Consider a following Makefile (grossly simplified): -- 8< -- .PHONY: dist deploy redist symstore-tarball .DEFAULT dist deploy redist symstore-tarball: @echo STARTED: $@ @sleep 10 @echo FINISHED: $@
.PHONY: default default: all .DEFAULT_GOAL := default -- 8< -- The stubbed-out recipe in reality invokes another Makefile inside of a container. This Makefile would be invoked as `make` or `make redist`, in which case the inner Makefile is invoked asĀ `podman run ... make all` or `podman run ... make redist`. Easy enough. Now, let's say I patch this Makefile to build the container image prior to executing that recipe: -- 8< -- .PHONY: build-base-image build-base-image: @echo STARTED: build-base-image @sleep 10 @echo FINISHED: build-base-image .PHONY: dist deploy redist symstore-tarball .DEFAULT dist deploy redist symstore-tarball: build-base-image @echo STARTED: $@ @sleep 10 @echo FINISHED: $@ .PHONY: default default: all .DEFAULT_GOAL := default -- 8< -- However, when I run `make` on this Makefile, the recipe for `build-base-image` is not run, despite that it is specified as a prerequisite for the `.DEFAULT` target: -- 8< -- $ make STARTED: all FINISHED: all -- 8< -- If I specify any explicitly named target (e. g. `make redist`), the recipe for `build-base-image` is correctly executed prior to the main recipe. Why is that so? (Please Cc: me in replies. I am not subscribed to the list. Thanks.) -- Ivan Shapovalov / intelfx /
signature.asc
Description: This is a digitally signed message part