Module Name:    src
Committed By:   rillig
Date:           Fri Jan 29 22:38:17 UTC 2021

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/usr.bin/make/unit-tests: Makefile
Added Files:
        src/usr.bin/make/unit-tests: jobs-empty-commands.exp
            jobs-empty-commands.mk

Log Message:
make(1): demonstrate unnecessary creation of empty files in jobs mode


To generate a diff of this commit:
cvs rdiff -u -r1.1012 -r1.1013 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.262 -r1.263 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/jobs-empty-commands.exp \
    src/usr.bin/make/unit-tests/jobs-empty-commands.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1012 src/distrib/sets/lists/tests/mi:1.1013
--- src/distrib/sets/lists/tests/mi:1.1012	Sun Jan 17 23:00:41 2021
+++ src/distrib/sets/lists/tests/mi	Fri Jan 29 22:38:17 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1012 2021/01/17 23:00:41 rillig Exp $
+# $NetBSD: mi,v 1.1013 2021/01/29 22:38:17 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -5146,6 +5146,8 @@
 ./usr/tests/usr.bin/make/unit-tests/job-flags.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/job-output-long-lines.exp			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/job-output-long-lines.mk			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/jobs-empty-commands.exp			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/jobs-empty-commands.mk			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/jobs-error-indirect.exp			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/jobs-error-indirect.mk			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/jobs-error-nested-make.exp			tests-usr.bin-tests	compattestfile,atf

Index: src/usr.bin/make/unit-tests/Makefile
diff -u src/usr.bin/make/unit-tests/Makefile:1.262 src/usr.bin/make/unit-tests/Makefile:1.263
--- src/usr.bin/make/unit-tests/Makefile:1.262	Sat Jan 23 07:34:00 2021
+++ src/usr.bin/make/unit-tests/Makefile	Fri Jan 29 22:38:17 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.262 2021/01/23 07:34:00 rillig Exp $
+# $NetBSD: Makefile,v 1.263 2021/01/29 22:38:17 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -201,6 +201,7 @@ TESTS+=		impsrc
 TESTS+=		include-main
 TESTS+=		job-flags
 TESTS+=		job-output-long-lines
+TESTS+=		jobs-empty-commands
 TESTS+=		jobs-error-indirect
 TESTS+=		jobs-error-nested
 TESTS+=		jobs-error-nested-make

Added files:

Index: src/usr.bin/make/unit-tests/jobs-empty-commands.exp
diff -u /dev/null src/usr.bin/make/unit-tests/jobs-empty-commands.exp:1.1
--- /dev/null	Fri Jan 29 22:38:17 2021
+++ src/usr.bin/make/unit-tests/jobs-empty-commands.exp	Fri Jan 29 22:38:17 2021
@@ -0,0 +1,2 @@
+action
+exit status 0
Index: src/usr.bin/make/unit-tests/jobs-empty-commands.mk
diff -u /dev/null src/usr.bin/make/unit-tests/jobs-empty-commands.mk:1.1
--- /dev/null	Fri Jan 29 22:38:17 2021
+++ src/usr.bin/make/unit-tests/jobs-empty-commands.mk	Fri Jan 29 22:38:17 2021
@@ -0,0 +1,17 @@
+# $NetBSD: jobs-empty-commands.mk,v 1.1 2021/01/29 22:38:17 rillig Exp $
+#
+# In jobs mode, the shell commands for creating a target are written to a
+# temporary file first, which is then run by the shell.  In chains of
+# dependencies, these files would end up empty.  This can be avoided easily.
+#
+# https://mail-index.netbsd.org/current-users/2021/01/26/msg040215.html
+
+.MAKEFLAGS: -j1
+#.MAKEFLAGS: -dn		# to see the created temporary files
+
+all: .PHONY step-1
+.for i i_plus_1 in ${:U:range=100:@i@$i $i@:[2..199]}
+step-$i: .PHONY step-${i_plus_1}
+.endfor
+step-100: .PHONY
+	@echo 'action'

Reply via email to