Weird goings on with make::empty()
Enji Cooper
yaneurabeya at gmail.com
Wed Sep 4 14:27:14 UTC 2019
> On Sep 4, 2019, at 04:59, Poul-Henning Kamp <phk at phk.freebsd.dk> wrote:
>
> 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...
(CCing Kyle)
This behavior change is probably caused by r351799.
I personally think the code before Kyle’s change and after it was buggy. It’s not word splitting LOCAL_MODULES before iterating over it.
Cheers,
-Enji
More information about the freebsd-current
mailing list