[petsc-dev] reminder never use #include "mylocalinclude.h" in PETSc source

Matthew Knepley knepley at gmail.com
Tue May 4 14:18:05 CDT 2010


On Tue, May 4, 2010 at 12:50 PM, Jed Brown <jed at 59a2.org> wrote:

> On Tue, 4 May 2010 12:22:10 -0500, Matthew Knepley <knepley at gmail.com>
> wrote:
> > It looks like tup only has a Linux daemon, so it would run the same as
> make
> > everywhere else. That does not seem like a strong enough case to use it.
> Why
> > not just write the same thing in portable Python? We do need to run
> > everywhere.
>
> Of course tup couldn't be the only backend, but it would be a fast one
> where available (which includes Mac and Solaris).  Contrary to popular
> belief, make itself is not slow compared to almost any alternative
> (except tup), *recursive* make is slow.  A do-nothing build (basically
> just dependency analysis) of PETSc with non-recursive make takes well
> under a second.
>
> You can certainly do the dependency analysis in Python but I haven't yet
> seen a Python build system that's actually better than make *at doing
> what make was made for* (despite many attempts).  Note that correct
> dependency analysis requires parsing includes (e.g. gcc -M and various
> more and less ad-hoc scripts), make has limited ability to keep the
> dependency output from these files appropriately synced in the presence
> of makefile changes and source changes (it has to choose between
> pessimal and incorrect behavior).
>
> The point of systems like tup is that they maintain these dependencies
> in a form (SQLite) where optimal and fast analysis is feasible.  You
> could reproduce this analysis in Python, but I don't think it's trivial
> to do correctly or performantly.  Note that one of tup's features is to
> not stat() the whole source tree, this requires something like inotify
> which is the reason it doesn't automatically work everywhere.  It might
> be easy enough to have a fallback that just stats the whole thing, but
> this would have about the same performance as make.


1) Yep, I agree. However, it has been my experience that Linux projects do
    not give two shits about Windows users. We created builder.py
specifically
    for the Windows build. I do not trust any of these guys to care about
the
    things we have to care about.

2) http://www.alittletooquiet.net/software/inotifyx/

    http://trac.dbzteam.org/pyinotify

    I am leaning towards the first.

    Matt


> Jed
>



-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20100504/7e64f810/attachment.html>


More information about the petsc-dev mailing list