Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #8193
| From | Nobody <nobody@nowhere.com> |
|---|---|
| Subject | Re: Incremental build systems, infamake |
| Date | 2011-07-25 12:52 +0100 |
| Message-Id | <pan.2011.07.25.11.52.46.689000@nowhere.com> |
| Newsgroups | comp.lang.c++, comp.software.config-mgmt |
| References | <704e6777-f646-4040-a70a-f7f0c158b92f@a15g2000yqk.googlegroups.com> |
| Organization | Zen Internet |
Cross-posted to 2 groups.
On Mon, 25 Jul 2011 00:25:34 -0700, Joshua Maurice wrote: > An incrementally correct build system - is a build system which can > only produce incrementally correct builds. That is, there is no source > code changes which a developer may do, inadvertently or purposefully, > which can result in the build system doing an incrementally incorrect > build. > > The key part to realize about this requirement is that the build > system scripts, such as makefiles, are themselves source code under > this model. "Source code" is the wrong term; the correct term is "prerequisite". Nothing prevents you from specifying makefiles as prerequisites. Ensuring correctness of incremental builds boils down to ensuring that the list of prerequisites for each target is "adequate". How far you take the concept of adequacy determines how easy or hard it is for an incremental build to be incorrect (i.e. differ from a full build). If you want to be pedantic, then the tools (compiler, linker, make, etc) need to be prerequisites of the files which they generate, as do the libraries which those tools use, and anything which influences their behaviour. And I mean *anything*; e.g. for every prerequisite, you would need to treat all of its parent directories as prerequisites (to deal with renaming, changes to mounted filesystems, etc). If you want to be really pedantic, you would have to treat the data returned from system calls as prerequisites. For an extreme example, any C source file which uses the __TIME__ macro will need to be rebuilt whenever the value returned from time() changes (i.e. always).
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 00:25 -0700
Re: Incremental build systems, infamake Ian Collins <ian-news@hotmail.com> - 2011-07-25 21:00 +1200
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 02:11 -0700
Re: Incremental build systems, infamake Ian Collins <ian-news@hotmail.com> - 2011-07-25 21:33 +1200
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 02:38 -0700
Re: Incremental build systems, infamake Ian Collins <ian-news@hotmail.com> - 2011-07-25 21:55 +1200
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 03:04 -0700
Re: Incremental build systems, infamake Ian Collins <ian-news@hotmail.com> - 2011-07-25 22:22 +1200
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 03:25 -0700
Re: Incremental build systems, infamake Ian Collins <ian-news@hotmail.com> - 2011-07-25 23:41 +1200
Re: Incremental build systems, infamake Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-07-26 16:11 +0000
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-26 15:19 -0700
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-26 15:28 -0700
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-26 15:49 -0700
Re: Incremental build systems, infamake Nobody <nobody@nowhere.com> - 2011-07-25 12:52 +0100
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-25 13:34 -0700
Re: Incremental build systems, infamake Nobody <nobody@nowhere.com> - 2011-07-27 19:49 +0100
Re: Incremental build systems, infamake Joshua Maurice <joshuamaurice@gmail.com> - 2011-07-29 03:58 -0700
Re: Incremental build systems, infamake Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-07-26 15:04 +0000
csiph-web