[CRIU] [PATCH 2/6] Makefiles: don't use the FORCE, Luke!

Dmitry Safonov dsafonov at virtuozzo.com
Wed Feb 24 00:10:19 PST 2016


On 02/23/2016 05:44 AM, Kir Kolyshkin wrote:
> With GNU make, using .PHONY leads to the same result as using
> the "FORCE" hack, but unlike FORCE is not a hack. Since we do not
> plan to use any other make than GNU make, let's just mark phony
> targets as such.
>
> For more details about why PHONY is better than FORCE, see
> http://www.gnu.org/software/make/manual/make.html#index-FORCE
>
> Signed-off-by: Kir Kolyshkin <kir at openvz.org>
> ---
>   scripts/build/Makefile         |  5 ++---
>   scripts/nmk/scripts/include.mk |  4 ----
>   test/Makefile                  | 23 ++++++++++++-----------
>   3 files changed, 14 insertions(+), 18 deletions(-)
>
> diff --git a/scripts/build/Makefile b/scripts/build/Makefile
> index 4b90a91..71b7ada 100644
> --- a/scripts/build/Makefile
> +++ b/scripts/build/Makefile
> @@ -4,8 +4,6 @@ AARCH64_IMG ?= aarch64/ubuntu:trusty
>   ARMV7HF_IMG ?= armv7/armhf-ubuntu
>   PPC64LE_IMG ?= ppc64le/ubuntu
>   
> -.FORCE:
> -
>   Dockerfile.aarch64: Dockerfile.aarch64.hdr Dockerfile.tmpl
>   	cat Dockerfile.aarch64.hdr > Dockerfile.aarch64
>   	cat Dockerfile.tmpl >> Dockerfile.aarch64
> @@ -25,8 +23,9 @@ Dockerfile.x86_64: Dockerfile.x86_64.hdr Dockerfile.tmpl
>   qemu-user-static:
>   	./extract-deb-pkg qemu-user-static
>   
> -binfmt_misc: .FORCE
> +binfmt_misc:
>   	./binfmt_misc
> +.PHONY: binfmt_misc
A small nit:
maybe we could use the same approach as in root/Makefile:
PHONY += binfmt_misc
# ...
.PHONY: $(PHONY)
Just for similarity, as we touch here anyway, eh?
>   
>   armv7hf: qemu-user-static binfmt_misc Dockerfile.armv7hf
>   	docker build  -t criu-armv7hf -f Dockerfile.armv7hf ../..
> diff --git a/scripts/nmk/scripts/include.mk b/scripts/nmk/scripts/include.mk
> index c7dd7cc..6842a56 100644
> --- a/scripts/nmk/scripts/include.mk
> +++ b/scripts/nmk/scripts/include.mk
> @@ -51,10 +51,6 @@ build-as := -r -R -f $(__nmk_dir)main.mk makefile=$$(1) obj=$$(2)
>   export build-as
>   
>   #
> -# Dummy target for force building.
> -FORCE: ;
> -
> -#
>   # Footer.
>   $(__nmk_dir)scripts/include.mk:
>   	@true
> diff --git a/test/Makefile b/test/Makefile
> index 499ecf3..d28febb 100644
> --- a/test/Makefile
> +++ b/test/Makefile
> @@ -3,43 +3,44 @@ RM := rm -f --one-file-system
>   ZDTM_ARGS ?= -C
>   export ZDTM_ARGS
>   
> -.FORCE:
> -
>   all:
>   	$(MAKE) zdtm
>   	$(MAKE) zdtm-pre-dump
>   	$(MAKE) zdtm-snapshot
>   	$(MAKE) zdtm-iter
>   	$(MAKE) zdtm-freezer
> -
>   .PHONY: all
>   
>   TESTS = unix-callback mem-snap rpc libcriu mounts/ext security pipes crit socketpairs overlayfs
>   
> -other: .FORCE
> +other:
>   	for t in $(TESTS); do				\
>   		setsid $(MAKE) -C $$t run || exit 1;	\
> -	done						\
> +	done
> +.PHONY: other
>   
> -zdtm: .FORCE
> +zdtm:
>   	./zdtm.py run -a --parallel 2
> +.PHONY: zdtm
>   
>   zdtm-pre-dump:
>   	./zdtm.py run --pre 2:1 -t zdtm/transition/fork -f uns
> +.PHONY: zdtm-pre-dump
>   
>   zdtm-snapshot:
>   	./zdtm.py run --pre 2:1 --snap -t zdtm/transition/fork -f uns
> +.PHONY: zdtm-snapshot
>   
>   zdtm-iter:
>   	./zdtm.py run --iters 3:1 -t zdtm/transition/fork -f uns
> +.PHONY: zdtm-iter
>   
>   zdtm-freezer:
>   	./zdtm.py run --test zdtm/transition/thread-bomb --pre 3 --freezecg zdtm:t
>   	./zdtm.py run --test zdtm/transition/thread-bomb --pre 3 --freezecg zdtm:f
> +.PHONY: zdtm-freezer
>   
> -.PHONY: zdtm
> -
> -fault-injection: .FORCE
> +fault-injection:
>   	$(MAKE) -C fault-injection
>   .PHONY: fault-injection
>   
> @@ -47,6 +48,7 @@ override CFLAGS += -D_GNU_SOURCE
>   
>   clean_root:
>   	$(Q) ./zdtm.py clean nsroot
> +.PHONY: clean_root
>   
>   clean: clean_root
>   	$(RM) zdtm_ct zdtm-tst-list
> @@ -56,5 +58,4 @@ clean: clean_root
>   	$(Q) $(MAKE) -C libcriu clean
>   	$(Q) $(MAKE) -C rpc clean
>   	$(Q) $(MAKE) -C crit clean
> -
> -.PHONY: zdtm_ns
> +.PHONY: clean


-- 
Regards,
Dmitry Safonov



More information about the CRIU mailing list