Weird goings on with make::empty()

From: Poul-Henning Kamp <phk_at_phk.freebsd.dk>
Date: Wed, 04 Sep 2019 11:59:04 +0000
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)
	_at__at_ -77,12 +77,14 _at__at_
		    ${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}"
		_at_${ECHODIR} "===> ${module} (${target:S/^reinstall$/install/:S/^clobber$/cleandir/})"
		_at_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.
Received on Wed Sep 04 2019 - 09:59:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:21 UTC