Weird goings on with make::empty()
Kyle Evans
kevans at freebsd.org
Wed Sep 4 14:33:21 UTC 2019
On Wed, Sep 4, 2019 at 9:27 AM Enji Cooper <yaneurabeya at gmail.com> wrote:
>
>
> > 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.
>
I've backed out r351799 since it breaks usage of LOCAL_MODULES (though
I really don't understand how empty works, apparently, and that makes
me sad)... please advise on a correct path forward, because it's not
clear to me.
Thanks,
Kyle Evans
More information about the freebsd-current
mailing list