From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: GNAT Modification_Time limitation Date: Wed, 21 Nov 2018 19:48:39 +0000 Organization: A noiseless patient Spider Message-ID: References: <0577e947-d691-4b81-aca6-b2e86bbef634@googlegroups.com> <04221674-95d8-4d4a-8743-42877b13eead@googlegroups.com> <7938d434-d666-4b80-a5cb-6c2f8ee70153@googlegroups.com> <1cc54d43-c7fb-420d-b7e7-6e447dec3f2d@googlegroups.com> <63ec0eee-9ad8-49e9-9df5-667edc4c89af@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: reader01.eternal-september.org; posting-host="b55aaa7aef99db0c49f8733de0991c09"; logging-data="5223"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19wit3TC8isd9ui/7bT9noRQeTfAkEgL9M=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (darwin) Cancel-Lock: sha1:bLJy3zH2caR8CARIacEKnOK3RhE= sha1:GTMYQth/DPBKuATwnAqwjYLHbzo= Xref: reader01.eternal-september.org comp.lang.ada:54869 Date: 2018-11-21T19:48:39+00:00 List-Id: Lionel Draghi writes: > And to build the dependency graph, I need to identify which file is an > input file, and which one is an output (a target). > > To do so, I can either: > 1. make a complex analysis of a detailed strace log file on each file > operation; > 2. just ask strace the list of the involved files, and classify those > file thanks to modification time : if file modification time > > execution time, then it's an output. Can't you tell from strace which files were opened for read and which for write? I suppose there are some files that are opened read/write; either, perhaps most usually, in separate parts of the build, or by being updated in one. I have one project (tcladashell) which runs a tcl script to generate a C source, which is compiled, built, and run to generate an Ada package spec. Which is then used in the rest of the build.