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 <<a hr= ef=3D"mailto:[email protected]">[email protected]</a>> 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 'command.sh&= #39; reads the source file 'file1' and writes it to the target file= 'file2'. However, if the=C2=A0</div><div>source file starts with &= #39;bad' it exits with an error code, *after* creating the target file.= </div><div><br></div><div>The script `run.sh', runs scons three times w= ith these values of the source file file1 'good', 'bad', an= d 'good'.=C2=A0 The expectation=C2=A0is that after the third scons = run, file2 should contain the value 'good' but it contains the valu= e 'bad'.=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 '= bad"</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'fil= e2',</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'fil= e1',</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'./c= ommand.sh $SOURCE > $TARGET'</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 'file2' 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 > 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 "= $1"</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 'bad', 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 = "$1")</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 [[ "= ;$first_line" =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 "---- Iteration 1: file1 =3D '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">echo "good" > 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 "File1"</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= "File2"</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 "---- Iteration 2: file1 =3D &#= 39;bad'"</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" > 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 "File1"</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 "File2"</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 "---- Iterati= on 3: file1 =3D 'good'"</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 "good" > 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 "File1"</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 "File2"</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 'good'</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 >= ; 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 'bad'</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 > 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 'good'</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' 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==--