Re: SCons misses a dependency which results in incorrect output.

Tal Dayan <[email protected]> Wed, 16 Jul 2025 10:09:04 -0700
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <CAM+zu_68RAXtot-3KAMqxbWX2KBgWvyPF0VWLzka=R7F7o9Ejw@mail.gmail.com>
--===============8838015410490652371==
Content-Type: multipart/alternative; boundary="0000000000004f2a6a063a0ef423"

--0000000000004f2a6a063a0ef423
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

A more readable version of the example files and log is available at

https://github.com/FPGAwars/apio/issues/676

On Wed, Jul 16, 2025 at 9:35=E2=80=AFAM Tal Dayan <[email protected]> wrote:

> Hi all,
>
> We encountered this problem with the nextpnr tool and created here a smal=
l
> and independent example that demonstrates it.
>
> In the example below, a shell script 'command.sh' reads the source file
> 'file1' and writes it to the target file 'file2'. However, if the
> source file starts with 'bad' it exits with an error code, *after*
> creating the target file.
>
> The script `run.sh', runs scons three times with these values of the
> source file file1 'good', 'bad', and 'good'.  The expectation is that aft=
er
> the third scons run, file2 should contain the value 'good' but it contain=
s
> the value 'bad'.
>
> Do we miss anything or is it simply a bug?
>
> SConstruct:
>
> ----------------------------------------------
> # SCons environment
>
> env =3D Environment()
>
>
> # Copy file1 =E2=86=92 file2 using command.sh
>
> # Inject an error if file1 starts with 'bad"
>
> file2 =3D env.Command(
>
>     target=3D'file2',
>
>     source=3D'file1',
>
>     action=3D'./command.sh $SOURCE > $TARGET'
>
> )
>
>
> # Make 'file2' the default target
>
> Default(file2)
>
> ----------------------------------------------
>
>
> command.sh:
>
> ----------------------------------------------
>
> #!/bin/bash
>
> # Usage: ./command input > output
>
>
> # Read from the first argument and copy to stdout
>
> cat "$1"
>
>
> # If the input file starts with 'bad', inject an error AFTER creating the
> output file.
>
>
> first_line=3D$(head -n 1 "$1")
>
>
> if [[ "$first_line" =3D=3D bad* ]]; then
>
>   exit 1
>
> fi
>
>
> exit 0
>
> ----------------------------------------------
>
>
>
> run.sh
>
> ----------------------------------------------
>
> #!/bin/bash
>
>
> # Clean up.
>
> rm -f .sconsign.dblite
>
> rm -f file[12]
>
>
> echo
>
> echo "---- Iteration 1: file1 =3D 'good'"
>
> echo "good" > file1
>
> scons
>
> echo
>
>
> echo "File1"
>
> cat -n file1
>
>
> echo "File2"
>
> cat -n file2
>
>
>
> echo
>
> echo "---- Iteration 2: file1 =3D 'bad'"
>
> echo "bad" > file1
>
> cat -n file1
>
> scons
>
> echo
>
>
> echo "File1"
>
> cat -n file1
>
>
> echo "File2"
>
> cat -n file2
>
>
> echo
>
> echo "---- Iteration 3: file1 =3D 'good'"
>
> echo "good" > file1
>
> cat -n file1
>
> scons
>
> echo
>
>
> echo "File1"
>
> cat -n file1
>
>
> echo "File2"
>
> cat -n file2
>
> ----------------------------------------------
>
>
>
> Run log:
>
> ----------------------------------------------
>
> $ ./run.sh
>
>
> ---- Iteration 1: file1 =3D 'good'
>
> scons: Reading SConscript files ...
>
> scons: done reading SConscript files.
>
> scons: Building targets ...
>
> ./command.sh file1 > file2
>
> scons: done building targets.
>
>
> File1
>
>      1 good
>
> File2
>
>      1 good
>
>
> ---- Iteration 2: file1 =3D 'bad'
>
>      1 bad
>
> scons: Reading SConscript files ...
>
> scons: done reading SConscript files.
>
> scons: Building targets ...
>
> ./command.sh file1 > file2
>
> scons: *** [file2] Error 1
>
> scons: building terminated because of errors.
>
>
> File1
>
>      1 bad
>
> File2
>
>      1 bad
>
>
> ---- Iteration 1: file1 =3D 'good'
>
>      1 good
>
> scons: Reading SConscript files ...
>
> scons: done reading SConscript files.
>
> scons: Building targets ...
>
> scons: `file2' is up to date.
>
> scons: done building targets.
>
>
> File1
>
>      1 good
>
> File2
>
>      1 bad
>
> ----------------------------------------------
>

--0000000000004f2a6a063a0ef423
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">A more readable=C2=A0version of the example files and log =
is available at<div><br></div><div><a href=3D"https://github.com/FPGAwars/a=
pio/issues/676">https://github.com/FPGAwars/apio/issues/676</a></div></div>=
<br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=
=3D"gmail_attr">On Wed, Jul 16, 2025 at 9:35=E2=80=AFAM Tal Dayan &lt;<a hr=
ef=3D"mailto:[email protected]">[email protected]</a>&gt; wrote:<br></div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi all,</div=
><div><br></div><div>We encountered this problem with the nextpnr=C2=A0tool=
 and created here a small and independent example that demonstrates it.</di=
v><div><br></div><div>In the example below, a shell script &#39;command.sh&=
#39; reads the source file &#39;file1&#39; and writes it to the target file=
 &#39;file2&#39;. However, if the=C2=A0</div><div>source file starts with &=
#39;bad&#39; it exits with an error code, *after* creating the target file.=
</div><div><br></div><div>The script `run.sh&#39;, runs scons three times w=
ith these values of the source file file1 &#39;good&#39;, &#39;bad&#39;, an=
d &#39;good&#39;.=C2=A0 The expectation=C2=A0is that after the third scons =
run, file2 should contain the value &#39;good&#39; but it contains the valu=
e &#39;bad&#39;.=C2=A0</div><div><br></div><div>Do we miss anything or is i=
t simply a bug?</div><div><br></div><div>SConstruct:</div><p style=3D"font-=
variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternat=
es:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:nor=
mal;font-stretch:normal;line-height:normal;font-family:Menlo;margin:0px;col=
or:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">-=
---------------------------------------------</span></p><div><span style=3D=
"font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0);font-family:Me=
nlo;font-size:12px"># SCons environment</span></div><div>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures">env =3D Environment()</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0);min-height:14px"><span style=
=3D"font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"># Copy file1 =E2=86=92 file2 using command.s=
h</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"># Inject an error if file1 starts with &#39;=
bad&quot;</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures">file2 =3D env.Command(</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"><span>=C2=A0 =C2=A0 </span>target=3D&#39;fil=
e2&#39;,</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"><span>=C2=A0 =C2=A0 </span>source=3D&#39;fil=
e1&#39;,</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"><span>=C2=A0 =C2=A0 </span>action=3D&#39;./c=
ommand.sh $SOURCE &gt; $TARGET&#39;</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures">)</span></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0);min-height:14px"><span style=
=3D"font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures"># Make &#39;file2&#39; the default target</s=
pan></p>
<p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:=
normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:au=
to;font-feature-settings:normal;font-stretch:normal;font-size:12px;line-hei=
ght:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-=
ligatures:no-common-ligatures">Default(file2)</span></p><p style=3D"font-va=
riant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates=
:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:norma=
l;font-stretch:normal;line-height:normal;font-family:Menlo;margin:0px;color=
:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">---=
-------------------------------------------</span></p><p style=3D"margin:0p=
x;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-a=
lternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-setti=
ngs:normal;font-stretch:normal;font-size:12px;line-height:normal;font-famil=
y:Menlo;color:rgb(0,0,0)"><br></p><p style=3D"margin:0px;font-variant-numer=
ic:normal;font-variant-east-asian:normal;font-variant-alternates:normal;fon=
t-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stre=
tch:normal;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(0,=
0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">command.sh=
:</span></p><p style=3D"font-variant-numeric:normal;font-variant-east-asian=
:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:a=
uto;font-feature-settings:normal;font-stretch:normal;line-height:normal;fon=
t-family:Menlo;margin:0px;color:rgb(0,0,0)"><span style=3D"font-variant-lig=
atures:no-common-ligatures">----------------------------------------------<=
/span></p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-e=
ast-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-=
kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:12p=
x;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"fon=
t-variant-ligatures:no-common-ligatures">#!/bin/bash</span></p><p style=3D"=
margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-li=
gatures:no-common-ligatures"># Usage: ./command input &gt; output</span></p=
><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:14px"><=
span style=3D"font-variant-ligatures:no-common-ligatures"></span><br></p><p=
 style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-=
variant-ligatures:no-common-ligatures"># Read from the first argument and c=
opy to stdout</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,=
0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">cat &quot;=
$1&quot;</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);=
min-height:14px"><span style=3D"font-variant-ligatures:no-common-ligatures"=
></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><s=
pan style=3D"font-variant-ligatures:no-common-ligatures"># If the input fil=
e starts with &#39;bad&#39;, inject an error AFTER creating the output file=
.</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-hei=
ght:14px"><span style=3D"font-variant-ligatures:no-common-ligatures"></span=
><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span sty=
le=3D"font-variant-ligatures:no-common-ligatures">first_line=3D$(head -n 1 =
&quot;$1&quot;)</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(=
0,0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-common-lig=
atures"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0=
,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">if [[ &quot=
;$first_line&quot; =3D=3D bad* ]]; then</span></p><p style=3D"margin:0px;fo=
nt:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-co=
mmon-ligatures"><span>=C2=A0 </span>exit 1</span></p><p style=3D"margin:0px=
;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no=
-common-ligatures">fi</span></p><p style=3D"margin:0px;font:12px Menlo;colo=
r:rgb(0,0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-comm=
on-ligatures"></span><br></p><p style=3D"margin:0px;font-variant-numeric:no=
rmal;font-variant-east-asian:normal;font-variant-alternates:normal;font-siz=
e-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:n=
ormal;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"=
>



















</p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-as=
ian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kernin=
g:auto;font-feature-settings:normal;font-stretch:normal;font-size:12px;line=
-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-vari=
ant-ligatures:no-common-ligatures">exit 0</span></p><p style=3D"font-varian=
t-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:nor=
mal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;fo=
nt-stretch:normal;line-height:normal;font-family:Menlo;margin:0px;color:rgb=
(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">-------=
---------------------------------------</span></p><p style=3D"margin:0px;fo=
nt-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alter=
nates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:=
normal;font-stretch:normal;font-size:12px;line-height:normal;font-family:Me=
nlo;color:rgb(0,0,0)"><br></p><p style=3D"margin:0px;font-variant-numeric:n=
ormal;font-variant-east-asian:normal;font-variant-alternates:normal;font-si=
ze-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:=
normal;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)=
"><span style=3D"font-variant-ligatures:no-common-ligatures"><br></span></p=
><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian=
:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:a=
uto;font-feature-settings:normal;font-stretch:normal;line-height:normal;fon=
t-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-c=
ommon-ligatures">run.sh</span></p><p style=3D"font-variant-numeric:normal;f=
ont-variant-east-asian:normal;font-variant-alternates:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
line-height:normal;font-family:Menlo;margin:0px;color:rgb(0,0,0)"><span sty=
le=3D"font-variant-ligatures:no-common-ligatures">-------------------------=
---------------------</span></p><p style=3D"margin:0px;font-variant-numeric=
:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-=
size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretc=
h:normal;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=
=3D"font-variant-ligatures:no-common-ligatures;font-size:12px">#!/bin/bash<=
/span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-heigh=
t:14px"><span style=3D"font-variant-ligatures:no-common-ligatures"></span><=
br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=
=3D"font-variant-ligatures:no-common-ligatures"># Clean up.</span></p><p st=
yle=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-var=
iant-ligatures:no-common-ligatures">rm -f .sconsign.dblite</span></p><p sty=
le=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-vari=
ant-ligatures:no-common-ligatures">rm -f file[12]</span></p><p style=3D"mar=
gin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:14px"><span style=3D"fo=
nt-variant-ligatures:no-common-ligatures"></span><br></p><p style=3D"margin=
:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligature=
s:no-common-ligatures">echo</span></p><p style=3D"margin:0px;font:12px Menl=
o;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatur=
es">echo &quot;---- Iteration 1: file1 =3D &#39;good&#39;&quot;</span></p><=
p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font=
-variant-ligatures:no-common-ligatures">echo &quot;good&quot; &gt; file1</s=
pan></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span styl=
e=3D"font-variant-ligatures:no-common-ligatures">scons</span></p><p style=
=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-varian=
t-ligatures:no-common-ligatures">echo</span></p><p style=3D"margin:0px;font=
:12px Menlo;color:rgb(0,0,0);min-height:14px"><span style=3D"font-variant-l=
igatures:no-common-ligatures"></span><br></p><p style=3D"margin:0px;font:12=
px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-=
ligatures">echo &quot;File1&quot;</span></p><p style=3D"margin:0px;font:12p=
x Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-l=
igatures">cat -n file1</span></p><p style=3D"margin:0px;font:12px Menlo;col=
or:rgb(0,0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-com=
mon-ligatures"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:=
rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">echo=
 &quot;File2&quot;</span></p><p style=3D"margin:0px;font:12px Menlo;color:r=
gb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">cat -=
n file2</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);m=
in-height:14px"><span style=3D"font-variant-ligatures:no-common-ligatures">=
</span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-=
height:14px"><span style=3D"font-variant-ligatures:no-common-ligatures"></s=
pan><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span =
style=3D"font-variant-ligatures:no-common-ligatures">echo</span></p><p styl=
e=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-varia=
nt-ligatures:no-common-ligatures">echo &quot;---- Iteration 2: file1 =3D &#=
39;bad&#39;&quot;</span></p><p style=3D"margin:0px;font:12px Menlo;color:rg=
b(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">echo &=
quot;bad&quot; &gt; file1</span></p><p style=3D"margin:0px;font:12px Menlo;=
color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures=
">cat -n file1</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0=
,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">scons</sp=
an></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=
=3D"font-variant-ligatures:no-common-ligatures">echo</span></p><p style=3D"=
margin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:14px"><span style=3D=
"font-variant-ligatures:no-common-ligatures"></span><br></p><p style=3D"mar=
gin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligat=
ures:no-common-ligatures">echo &quot;File1&quot;</span></p><p style=3D"marg=
in:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatu=
res:no-common-ligatures">cat -n file1</span></p><p style=3D"margin:0px;font=
:12px Menlo;color:rgb(0,0,0);min-height:14px"><span style=3D"font-variant-l=
igatures:no-common-ligatures"></span><br></p><p style=3D"margin:0px;font:12=
px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-=
ligatures">echo &quot;File2&quot;</span></p><p style=3D"margin:0px;font:12p=
x Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-l=
igatures">cat -n file2</span></p><p style=3D"margin:0px;font:12px Menlo;col=
or:rgb(0,0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-com=
mon-ligatures"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:=
rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">echo=
</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span s=
tyle=3D"font-variant-ligatures:no-common-ligatures">echo &quot;---- Iterati=
on 3: file1 =3D &#39;good&#39;&quot;</span></p><p style=3D"margin:0px;font:=
12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-commo=
n-ligatures">echo &quot;good&quot; &gt; file1</span></p><p style=3D"margin:=
0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures=
:no-common-ligatures">cat -n file1</span></p><p style=3D"margin:0px;font:12=
px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-=
ligatures">scons</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb=
(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">echo</s=
pan></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:=
14px"><span style=3D"font-variant-ligatures:no-common-ligatures"></span><br=
></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=
=3D"font-variant-ligatures:no-common-ligatures">echo &quot;File1&quot;</spa=
n></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=
=3D"font-variant-ligatures:no-common-ligatures">cat -n file1</span></p><p s=
tyle=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:14px"><span =
style=3D"font-variant-ligatures:no-common-ligatures"></span><br></p><p styl=
e=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-varia=
nt-ligatures:no-common-ligatures">echo &quot;File2&quot;</span></p><p style=
=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;f=
ont-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-=
feature-settings:normal;font-stretch:normal;line-height:normal;font-family:=
Menlo;color:rgb(0,0,0)">
















































</p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-as=
ian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kernin=
g:auto;font-feature-settings:normal;font-stretch:normal;font-size:12px;line=
-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-vari=
ant-ligatures:no-common-ligatures">cat -n file2</span></p><p style=3D"margi=
n:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-varia=
nt-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-s=
ettings:normal;font-stretch:normal;line-height:normal;font-family:Menlo;col=
or:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">-=
---------------------------------------------</span></p><p style=3D"margin:=
0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant=
-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-set=
tings:normal;font-stretch:normal;line-height:normal;font-family:Menlo;color=
:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures"><br=
></span></p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant=
-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;fon=
t-kerning:auto;font-feature-settings:normal;font-stretch:normal;line-height=
:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-lig=
atures:no-common-ligatures"><br></span></p><p style=3D"margin:0px;font-vari=
ant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:n=
ormal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;=
font-stretch:normal;line-height:normal;font-family:Menlo;color:rgb(0,0,0)">=
<span style=3D"font-variant-ligatures:no-common-ligatures">Run log:</span><=
/p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asi=
an:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning=
:auto;font-feature-settings:normal;font-stretch:normal;line-height:normal;f=
ont-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no=
-common-ligatures">----------------------------------------------</span></p=
><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian=
:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:a=
uto;font-feature-settings:normal;font-stretch:normal;line-height:normal;fon=
t-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-c=
ommon-ligatures;font-size:12px">$ ./run.sh</span><span style=3D"font-varian=
t-ligatures:no-common-ligatures;font-size:12px">=C2=A0</span></p><p style=
=3D"margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;f=
ont-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-=
feature-settings:normal;font-stretch:normal;line-height:normal;font-family:=
Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-lig=
atures;font-size:12px"><br></span></p><p style=3D"margin:0px;font:12px Menl=
o;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatur=
es">---- Iteration 1: file1 =3D &#39;good&#39;</span></p><p style=3D"margin=
:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligature=
s:no-common-ligatures">scons: Reading SConscript files ...</span></p><p sty=
le=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-vari=
ant-ligatures:no-common-ligatures">scons: done reading SConscript files.</s=
pan></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span styl=
e=3D"font-variant-ligatures:no-common-ligatures">scons: Building targets ..=
.</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span =
style=3D"font-variant-ligatures:no-common-ligatures">./command.sh file1 &gt=
; file2</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)">=
<span style=3D"font-variant-ligatures:no-common-ligatures">scons: done buil=
ding targets.</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,=
0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-common-ligat=
ures"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0=
)"><span style=3D"font-variant-ligatures:no-common-ligatures">File1</span><=
/p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"=
font-variant-ligatures:no-common-ligatures"><span>=C2=A0=C2=A0 =C2=A0 </spa=
n>1<span style=3D"white-space:pre-wrap">	</span>good</span></p><p style=3D"=
margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-li=
gatures:no-common-ligatures">File2</span></p><p style=3D"margin:0px;font:12=
px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-=
ligatures"><span>=C2=A0=C2=A0 =C2=A0 </span>1<span style=3D"white-space:pre=
-wrap">	</span>good</span></p><p style=3D"margin:0px;font:12px Menlo;color:=
rgb(0,0,0);min-height:14px"><span style=3D"font-variant-ligatures:no-common=
-ligatures"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb=
(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">---- It=
eration 2: file1 =3D &#39;bad&#39;</span></p><p style=3D"margin:0px;font:12=
px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-=
ligatures"><span>=C2=A0=C2=A0 =C2=A0 </span>1<span style=3D"white-space:pre=
-wrap">	</span>bad</span></p><p style=3D"margin:0px;font:12px Menlo;color:r=
gb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">scons=
: Reading SConscript files ...</span></p><p style=3D"margin:0px;font:12px M=
enlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-liga=
tures">scons: done reading SConscript files.</span></p><p style=3D"margin:0=
px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:=
no-common-ligatures">scons: Building targets ...</span></p><p style=3D"marg=
in:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatu=
res:no-common-ligatures">./command.sh file1 &gt; file2</span></p><p style=
=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-varian=
t-ligatures:no-common-ligatures">scons: *** [file2] Error 1</span></p><p st=
yle=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-var=
iant-ligatures:no-common-ligatures">scons: building terminated because of e=
rrors.</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);mi=
n-height:14px"><span style=3D"font-variant-ligatures:no-common-ligatures"><=
/span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><spa=
n style=3D"font-variant-ligatures:no-common-ligatures">File1</span></p><p s=
tyle=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-va=
riant-ligatures:no-common-ligatures"><span>=C2=A0=C2=A0 =C2=A0 </span>1<spa=
n style=3D"white-space:pre-wrap">	</span>bad</span></p><p style=3D"margin:0=
px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:=
no-common-ligatures">File2</span></p><p style=3D"margin:0px;font:12px Menlo=
;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligature=
s"><span>=C2=A0=C2=A0 =C2=A0 </span>1<span style=3D"white-space:pre-wrap">	=
</span>bad</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0=
);min-height:14px"><span style=3D"font-variant-ligatures:no-common-ligature=
s"></span><br></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)">=
<span style=3D"font-variant-ligatures:no-common-ligatures">---- Iteration 1=
: file1 =3D &#39;good&#39;</span></p><p style=3D"margin:0px;font:12px Menlo=
;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligature=
s"><span>=C2=A0=C2=A0 =C2=A0 </span>1<span style=3D"white-space:pre-wrap">	=
</span>good</span></p><p style=3D"margin:0px;font:12px Menlo;color:rgb(0,0,=
0)"><span style=3D"font-variant-ligatures:no-common-ligatures">scons: Readi=
ng SConscript files ...</span></p><p style=3D"margin:0px;font:12px Menlo;co=
lor:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">=
scons: done reading SConscript files.</span></p><p style=3D"margin:0px;font=
:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-comm=
on-ligatures">scons: Building targets ...</span></p><p style=3D"margin:0px;=
font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-=
common-ligatures">scons: `file2&#39; is up to date.</span></p><p style=3D"m=
argin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-lig=
atures:no-common-ligatures">scons: done building targets.</span></p><p styl=
e=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0);min-height:14px"><span sty=
le=3D"font-variant-ligatures:no-common-ligatures"></span><br></p><p style=
=3D"margin:0px;font:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-varian=
t-ligatures:no-common-ligatures">File1</span></p><p style=3D"margin:0px;fon=
t:12px Menlo;color:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-com=
mon-ligatures"><span>=C2=A0=C2=A0 =C2=A0 </span>1<span style=3D"white-space=
:pre-wrap">	</span>good</span></p><p style=3D"margin:0px;font:12px Menlo;co=
lor:rgb(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">=
File2</span></p><p style=3D"margin:0px;font-variant-numeric:normal;font-var=
iant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none=
;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;line-he=
ight:normal;font-family:Menlo;color:rgb(0,0,0)">












































</p><p style=3D"margin:0px;font-variant-numeric:normal;font-variant-east-as=
ian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kernin=
g:auto;font-feature-settings:normal;font-stretch:normal;font-size:12px;line=
-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style=3D"font-vari=
ant-ligatures:no-common-ligatures"><span>=C2=A0 =C2=A0 =C2=A0</span>1<span =
style=3D"white-space:pre-wrap">	</span>bad</span></p><p style=3D"margin:0px=
;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-al=
ternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settin=
gs:normal;font-stretch:normal;line-height:normal;font-family:Menlo;color:rg=
b(0,0,0)"><span style=3D"font-variant-ligatures:no-common-ligatures">------=
----------------------------------------</span></p></div></div>
</blockquote></div>

--0000000000004f2a6a063a0ef423--

--===============8838015410490652371==
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

--===============8838015410490652371==--