tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: asynchronous make(1), anyone?
On Wed, Apr 11, 2012 at 07:32:11PM -0400, Matthew Mondor wrote:
> On Wed, 11 Apr 2012 17:01:34 -0500
> David Young <dyoung%pobox.com@localhost> wrote:
>
> > You can save a programmer who is in an edit-compile-test loop some
> > effort at the keyboard if, as soon as they write a new version of some
> > source file, the computer automatically recompiles their program.
I'm not actually that is a significant saving.
Saving either :!! or <move mouse><up arrow><enter> doesn't actually
seem worth the effort.
> > One way to automate that is to run make(1) in a tight loop,
> >
> > while true; do
> > make <targets>
> > done
> >
> > but I think that to do that fast enough that the programmer does not
> > have to wait very often for the computer, you would have to be very
> > fast, and the computer will waste a lot of energy re-running make(1).
Not only that, but any build failure with result in a complete spewage
of output.
> > How hard would it be to make make(1) sleep until any one of its targets
> > was older than its sources, build out-of-date targets, and repeat? This
> > may be a good application for kqueue(2)'s EVFILT_VNODE filter?
>
> Hmm interesting idea.
>
> As for make watching files for change, I see a few possible
> challenges: kevent currently requires a file descriptor per file
> being watched (possibly an issue with large projects), the alternative
> being running through the files checking timestamps, like make does.
Not sure that'll work, an editor probably ought to do a 'safe write'
sequence involving temporary file and rename to avoid file lossage.
If they do, then checking the directory timestamp would be needed
instead.
I suspect most editors reopen the output file with O_TRUNC | O_CREAT
- that is certainly useful when editing on layered fs.
David
--
David Laight: david%l8s.co.uk@localhost
Home |
Main Index |
Thread Index |
Old Index