From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id QAA14573; Sat, 22 Nov 2003 16:46:13 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA16711 for ; Sat, 22 Nov 2003 16:46:12 +0100 (MET) Received: from mail1.tpgi.com.au (mail.tpgi.com.au [203.12.160.57]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id hAMFk9121857 for ; Sat, 22 Nov 2003 16:46:10 +0100 (MET) Received: from syd-ts18-2600-035.tpgi.com.au (syd-ts18-2600-035.tpgi.com.au [203.58.21.35]) by mail1.tpgi.com.au (8.11.6/8.11.6) with ESMTP id hAMFk1A06441; Sun, 23 Nov 2003 02:46:02 +1100 Subject: Re: [Caml-list] Building large and portable projects From: skaller Reply-To: skaller@ozemail.com.au To: Eric Dahlman Cc: Ocaml Mailing List In-Reply-To: <3FBE5110.7090809@atcorp.com> References: <20031120195614.GB441@gallu.homelinux.org> <000f01c3afd1$30033c90$0274a8c0@PWARP> <20031121052549.GA8599@davidb.org> <008301c3aff3$1030e760$0274a8c0@PWARP> <20031121064950.GA836@gallu.homelinux.org> <1069431167.5426.45.camel@pelican> <3FBE5110.7090809@atcorp.com> Content-Type: text/plain Message-Id: <1069512339.6703.23.camel@pelican> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-4) Date: 23 Nov 2003 01:45:39 +1100 Content-Transfer-Encoding: 7bit X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 ozemail:01 interscript:01 ocamldoc:01 fixpoints:01 interscript:01 converge:01 pedantry:99 fixpoints:01 python:01 invocation:01 caveat:01 command:98 command:98 handles:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Sat, 2003-11-22 at 04:53, Eric Dahlman wrote: > skaller wrote: > > > But it is much worse. A target can > > depend on itself. Interscript assumes that. > > An example is a Latex build, which depends > > on auxilliary files generated by the build > > [Ocamldoc output can take 4 passes to fixate > > for example]. > > > > This leads to the first novel idea. Fixpoints. > > Interscript is based on that idea. > > Just to be pedantic ;-) A Tex or Latex build is not guaranteed to > converge so you may not have a fixed point in the computation. They can > oscillate and it may be necessary to slightly alter the source document > to get things to settle down. If I may also be pedantic: this is not a matter of pedantry :-) The idea of fixpoints is still novel and useful here. As you comment, oscillations are possible. Divergence is also possible. Interscript has a command line like iscr --passes=4 other options ... which limits the number of passes. The default is one pass, but it has a persistence mechanism (Python marshal), so that executing the command 4 times is roughly equivalent to a single invocation with --passes=4, except that with the --passes=4 option 1 to 4 passes are executed. Interscript is also Make friendly -- if it writes the same as a files contents the timestamps are not changed. [Which is how it detects convergence :-] It *also* has dependency checking which can detect that a pass would be the same as the last pass and so it is possible that 0 passes are executed. The design is not particularly efficient, however it handles things like: you can read a file that doesn't exist, and later write it. No problem. The error on the first pass is ignored. The file is there on the second pass .. although it might not fix. BTW: there is a fun caveat. The one thing that you must be careful NOT to ever do in Interscript is put the code generation time directly into the generated code -- that guarrantees divergence :-) ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners