<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">Dear all,<br>
      <br>
      I have seen that my mail was received and I also got some answers.
      Thank you for that! Appreciated.<br>
      <br>
      However, I do not know, how to answer, so I write another mail and
      hope that the subject will assign it to my thread.<br>
      <br>
      @Mats Wichmann:<br>
      Thank you for the hints to the two chapters.<br>
      I will look into it.<br>
      <br>
      @Keith Prussing:<br>
      Thank you for the hints to ToolsForFools.<br>
      I will look into it.<br>
      <br>
      @Bill Deegan:<br>
      <pre>> wow that's about the most complicated way to share your dependencies I've
> seen so far..

I am sorry. I thought the tree is clearer than a long verbal explanation.

> I see an arc from aOld\b.out.tmp -> aOld\b.out which goes around
> PreProcess.py (same for aNew\b.out.tmp).
> How does b.out "use" the .tmp file directly?
> Or is that a mistake/error in your representation?

Good point, but no, it is not a "mistake" (see below: 3 types of arrows).

PreProcess.py reads aNew\b.out and writes aNew\b.out.tmp.

If either PreProcess.py changes (e.g. because I fix a bug in the Python
script) or the input file aNew\b.out changes aNew\b.out.tmp must be
re-created. SCons should recognize this a re-create aNew\b.out.tmp

The arrows should be read as "depends on" in one or the other way.
This is maybe, what causes confusion. I see 3 types of dependencies:
1.) "reads" (from app to input file)
    aNew.exe reads a.ini
    aNew.exe reads b.dat
    PreProcess.py reads aNew\b.out
    and so on
2.) "is created by" (from output file to app)
    aNew\b.out is created by aNew.exe
    aNew\b.out.tmp is created by PreProcess.py
    b.log.diff is created by LogDiff.exe
    and so on
3.) "(logically) depends on" (from input to output file)
    aNew\b.out.tmp depends on aNew\b.out
    aOld\b.out.tmp depends on aOld\b.out
    (I skipped other arrows, e.g. from aNew\b.out to b.dat, for clarity.
    For the above two it was necessary to avoid the ambiguity that
    aNew\b.out.tmp depends only on aNew\b.out and
    aOld\b.out.tmp depends only on aOld\b.out.)

> Also question how a.ini and b.dat can accept outputs from both aNew.exe and
> aOld.exe?
See above. Arrows show dependency (I guess this is UML compliant.).
The data flow goes in the oppsosite direction.

PreProcess.py, LogDiff.exe, and OutDiff.py will not change very often, but I will not exclude it.
aNew.exe will change, since this is the app I am developing.
aOld.exe is the old app, so it should usually not change.

So, all boxes should be regarded as "mutable".

Usually, in a normal build system, the compiler and linker are regarded
as immutable. My situation is comparable to the scenario that I am
developing the compiler and linker (.exe/.py) and I want to check, whether the
build targets (.diff) are still the same, although the source files (.dat) or config (.ini) have not
changed.
</pre>
      Kind regards,<br>
      <br>
      Oliver
      <br>
      <br>
      Am 29.03.2025 um 06:30 schrieb Oliver Koch:<br>
    </div>
    <blockquote type="cite"
      cite="mid:b87e101e-95cf-4784-94bb-01ae5ccd3363@web.de">Dear Scons
      developers and users,
      <br>
      <br>
      I would like to set up a rather complex test framework to compare
      the changes between different versions (old vs. new) of an
      executable.
      <br>
      The workflow also includes different steps (tools) to process
      resp. compare the output files.
      <br>
      <br>
      See the attached HTML file (resp. the according Markdown file).
      <br>
      Any green box should be regarded as an independent component the
      can be changed by me. Any white box is a dependent file that is
      generated from the independents.
      <br>
      <br>
      The task is to create a dependency tree in SCons that re-generates
      the (necessary) final output files (b.out.diff resp.b.log.diff),
      if any of the dependent green boxes have been changed.
      <br>
      <br>
      I am struggeling with your documentation to conclude, how a SCons
      script should look like for the above purpose, since I am not
      using any classical compiler or linker in this workflow.
      <br>
      Could you indicate me, how the shown dependency tree must be
      implemented with a SCons script?
      <br>
      (And maybe explain a little bit why?)
      <br>
      <br>
      Regards,
      <br>
      <br>
      Oliver<br>
    </blockquote>
    <br>
  <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br /><table style="border-top: 1px solid #D3D4DE;"><tr><td style="width: 55px; padding-top: 13px;"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><img src="https://s-install.avcdn.net/ipm/preview/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif" alt="" width="46" height="29" style="width: 46px; height: 29px;"/></a></td><td style="width: 470px; padding-top: 12px; color: #41424e; font-size: 13px; font-family: Arial, Helvetica, sans-serif; line-height: 18px;">Virenfrei.<a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank" style="color: #4453ea;">www.avast.com</a></td></tr></table><a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"> </a></div></body>
</html>