Weird goings on with make::empty()

Poul-Henning Kamp phk at phk.freebsd.dk
Wed Sep 4 11:59:15 UTC 2019


On:

	Repository Root: svn+ssh://repo.freebsd.org/base
	Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
	Revision: 351809

I built a kernel, but drm-current-kmod did not get compiled
from the new world order in /usr/local/sys/modules

Debugging I ended up doing this to src/sys/conf/kern.post.mk:

	Index: sys/conf/kern.post.mk
	===================================================================
	--- sys/conf/kern.post.mk	(revision 351809)
	+++ sys/conf/kern.post.mk	(working copy)
	@@ -77,12 +77,14 @@
		    ${target:S/^reinstall$/install/:S/^clobber$/cleandir/}
	 .endif
	 .for module in ${LOCAL_MODULES}
	-.if !empty(module)
	+	true "XXX A $(module) 2 ${LOCALBASE} 3 ${LOCAL_MODULES} 4 ${MODULES_WITH_WORLD}"
	+#.if !empty(module)
	+	true "XXX B $(module) 2 ${LOCALBASE} 3 ${LOCAL_MODULES} 4 ${MODULES_WITH_WORLD}"
		@${ECHODIR} "===> ${module} (${target:S/^reinstall$/install/:S/^clobber$/cleandir/})"
		@cd ${LOCAL_MODULES_DIR}/${module}; ${MKMODULESENV} ${MAKE} \
		    DIRPRFX="${module}/" \
		    ${target:S/^reinstall$/install/:S/^clobber$/cleandir/}
	-.endif
	+#.endif
	 .endfor
	 .endif
	 .endfor

This gives me the expected output from buildkernel:

	true "XXX A drm-current-kmod 2 /usr/local 3 drm-current-kmod 4 "
	true "XXX B drm-current-kmod 2 /usr/local 3 drm-current-kmod 4 "

If I leave in the ".if !empty(module)" line in, I only get:

	true "XXX A drm-current-kmod 2 /usr/local 3 drm-current-kmod 4 "

suggestions welcome...


-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.


More information about the freebsd-current mailing list