Path: utzoo!yunexus!davecb From: davecb@yunexus.UUCP (David Collier-Brown) Newsgroups: comp.unix.wizards Subject: Re: Bugs in the AT&T Toolchest program 'nmake' Summary: Sidebar on state files Keywords: make, nmake, state files Message-ID: <1981@yunexus.UUCP> Date: 22 May 89 01:02:30 GMT Article-I.D.: yunexus.1981 References: <1640@internal.Apple.COM> <6561@ardent.UUCP> <11562@ulysses.homer.nj.att.com> <11564@ulysses.homer.nj.att.com> Reply-To: davecb@yunexus.UUCP (David Collier-Brown) Organization: York U. Computing Services (yay! monomania at last!) Lines: 33 In article mcgrath@paris.Berkeley.EDU (Roland McGrath) writes: [commenting on state files] | This is nmake's main *selling point*. Whether such incredible hairiness is | a `virtue' is highly debatable. In article <11564@ulysses.homer.nj.att.com> ekrell@hector.UUCP (Eduardo Krell) writes: | So where you're example of why this wouldn't be a "virtue"?. Depending | on just the time stamps to decide whether a file needs to be recompiled | or not is simply unreliable. If you still don't see why, I can provide | you with plenty of examples. Not wanting to interfere unduly in a slanging match between developers (;-)), I would like to point out that neither state files maintained by programs nor dates maintained by the os are sufficient: Dates can be set inappropriately by programs modifying non-significant parts of files (ie, comments in ordinary files, other structures in compound files which are in some way "made"). State files are peculiar to the program which creates and maintains them. If that program is make, or indeed, if it is any ordinary user program, the file can only be updated by that program, and thereby can end up inconsistent with external reality. I worked on a software development environment once which kept dependency information in the main database, (ie, as a form of state file), and we found that we **had** to allow the operating system to update that information in a large number of cases, thereby adding substantial complexity to the project. --dave (dates are part of an open system, and are "Gnu"ish, states are formally more complete, and are "lab"ish. anybody got a **good* solution?) c-b