svn commit: r305634 - head/share/mk

Simon J. Gerraty sjg at juniper.net
Sat Sep 10 07:12:29 UTC 2016


Bryan Drewery <bdrewery at freebsd.org> wrote:

> > +# some targets involve old pre-built targets
> > +# ignore mtime of shell
> > +# and mtime of makefiles does not matter in meta mode
> > +.MAKE.META.IGNORE_PATHS += \
> > +        ${MAKEFILE} \
> > +        ${SHELL} \
> > +        ${SYS_MK_DIR}
> 
> I think it could be problematic to ignore *.mk changes.  The build

If you're not concerned with build optimization,
this can be disabled - but pretty much any sub-make for which there is a
.meta file will be out-of-date by any changed to *.mk

> commands may stay the same, but targets could grow new dependencies.  If
> those dependencies are already "met" then meta mode won't reconsider them.

I'm not sure how easy it is to accomplish that situation.
 
> Consider:
> Build 1:
> bar:
> 	touch dep
> 	touch bar
> 
> foo:
> 	touch foo
> 
> all: bar foo
> 
> In the first build, all generates dep, bar and foo.
> 
> Then the code is changed to:
> 
> bar:
> 	touch bar
> 
> dep:
> 	touch notmade
> 	touch dep
> 
> foo: dep
> 	touch foo
> 
> all: foo bar
> 
> Now in the second build, all finds bar command changes and rebuilds,
> finds foo command is the same and that dep is already satisfied from the
> last build.  So 'notmade' is never made.

Actually given you have missing-meta=yes
target dep would be remade, either because there is no .meta file, or
because its commands changed. 
Thus notmade should be.


More information about the svn-src-head mailing list