Re: Fwd: Dependency tree for test framework
Bill Deegan <[email protected]> Thu, 3 Apr 2025 14:26:16 -0700
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CH4dvz2EPhQdnfr1hOG68+ibPCpywXQA2daciGVDHXdLg@mail.gmail.com> |
--===============1576616522857920634==
Content-Type: multipart/alternative; boundary="00000000000035742f0631e66cb5"
--00000000000035742f0631e66cb5
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Ahh so the arrows are the opposite of how one normally diagrams a build
DAG..
So PreProcess.py doesn't depend on a{New,Old}/b.out, it just read them, in
reality a{New,Old}/b.out.tmp depends on PreProcess.py and respectively
a{New,Old}b.out ?
-Bill
On Thu, Apr 3, 2025 at 2:06=E2=80=AFPM Oliver Koch via Scons-users <
[email protected]> wrote:
> Dear all,
>
> I have seen that my mail was received and I also got some answers. Thank
> you for that! Appreciated.
>
> However, I do not know, how to answer, so I write another mail and hope
> that the subject will assign it to my thread.
>
> @Mats Wichmann:
> Thank you for the hints to the two chapters.
> I will look into it.
>
> @Keith Prussing:
> Thank you for the hints to ToolsForFools.
> I will look into it.
>
> @Bill Deegan:
>
> > 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, bu=
t 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, whethe=
r the
> build targets (.diff) are still the same, although the source files (.dat=
) or config (.ini) have not
> changed.
>
> Kind regards,
>
> Oliver
>
> Am 29.03.2025 um 06:30 schrieb Oliver Koch:
>
> Dear Scons developers and users,
>
> I would like to set up a rather complex test framework to compare the
> changes between different versions (old vs. new) of an executable.
> The workflow also includes different steps (tools) to process resp.
> compare the output files.
>
> See the attached HTML file (resp. the according Markdown file).
> 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 t=
he
> independents.
>
> 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 th=
e
> dependent green boxes have been changed.
>
> 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 classica=
l
> compiler or linker in this workflow.
> Could you indicate me, how the shown dependency tree must be implemented
> with a SCons script?
> (And maybe explain a little bit why?)
>
> Regards,
>
> Oliver
>
>
>
>
> <https://www.avast.com/sig-email?utm_medium=3Demail&utm_source=3Dlink&utm=
_campaign=3Dsig-email&utm_content=3Demailclient>
> Virenfrei.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=3Demail&utm_source=3Dlink&utm=
_campaign=3Dsig-email&utm_content=3Demailclient>
> <#m_-178949517691114710_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> _______________________________________________
> Scons-users mailing list
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
--00000000000035742f0631e66cb5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Ahh so the arrows are the opposite of how one normall=
y diagrams a build DAG..</div><div><br></div><div>So PreProcess.py doesn=
9;t depend on a{New,Old}/b.out, it just read them, in reality a{New,Old}/b.=
out.tmp depends on PreProcess.py and respectively a{New,Old}b.out ?</div><d=
iv><br></div><div>-Bill</div></div><br><div class=3D"gmail_quote gmail_quot=
e_container"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Apr 3, 2025 at 2=
:06=E2=80=AFPM Oliver Koch via Scons-users <<a href=3D"mailto:scons-user=
[email protected]">[email protected]</a>> wrote:<br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r=
gb(204,204,204);padding-left:1ex"><u></u>
=20
=20
=20
<div>
<div>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.ex=
e 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=3D"cite">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=3D"m_-178949517691114710DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br=
><table style=3D"border-top:1px solid rgb(211,212,222)"><tbody><tr><td styl=
e=3D"width:55px;padding-top:13px"><a href=3D"https://www.avast.com/sig-emai=
l?utm_medium=3Demail&utm_source=3Dlink&utm_campaign=3Dsig-email&=
;utm_content=3Demailclient" target=3D"_blank"><img src=3D"https://s-install=
.avcdn.net/ipm/preview/icons/icon-envelope-tick-round-orange-animated-no-re=
peat-v1.gif" alt=3D"" width=3D"46" height=3D"29" style=3D"width: 46px; heig=
ht: 29px;"></a></td><td style=3D"width:470px;padding-top:12px;color:rgb(65,=
66,78);font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18=
px">Virenfrei.<a href=3D"https://www.avast.com/sig-email?utm_medium=3Demail=
&utm_source=3Dlink&utm_campaign=3Dsig-email&utm_content=3Demail=
client" style=3D"color:rgb(68,83,234)" target=3D"_blank">www.avast.com</a><=
/td></tr></tbody></table><a href=3D"#m_-178949517691114710_DAB4FAD8-2DD7-40=
BB-A1B8-4E2AA1F9FDF2" width=3D"1" height=3D"1"> </a></div></div>
_______________________________________________<br>
Scons-users mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">Scons-users@scon=
s.org</a><br>
<a href=3D"https://pairlist4.pair.net/mailman/listinfo/scons-users" rel=3D"=
noreferrer" target=3D"_blank">https://pairlist4.pair.net/mailman/listinfo/s=
cons-users</a><br>
</blockquote></div>
--00000000000035742f0631e66cb5--
--===============1576616522857920634==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
--===============1576616522857920634==--