Magnus Hagander wrote:
> Andrew Dunstan wrote:
>
>> mastodon and skylark just failed at the make stage due to a thinko on my
>> part (now fixed). However, this is not correctly caught by the buildfarm
>> script, meaning that the process invoked at this stage ('build 2>&1') is
>> not exiting properly with a non-zero status on error. That needs to be
>> fixed.
>>
>
> I was just checking this, and I'm not sure what the problem is. I tried
> updating to the broken version of solution.pm (the one missing the
> quotes around --with-pgport), and it works for me. Insofar that I get
> errorlevel 255 set when exiting the process. Both if I run "perl
> mkvcbuild.pl" and if I run "build" (yes, also for build 2>&1).
>
> The error given is "Can't modify constant item in predecrement" and then
> a compile error.
>
> Am I testing the wrong thing? Could it be that the buildfarm script is
> somehow not picking up error code 255? (in all cases where it's errors
> from the vc++ tools, I think it's always errorcode 1 or 2)
>
The code executed is:
chdir "$pgsql/src/tools/msvc";
@makeout = `build 2>&1`;
chdir $branch_root;
my $status = $? >>8;
The perl docs say this about $?:
The status returned by the last pipe close, backtick (‘‘) com-
mand, successful call to wait() or waitpid(), or from the sys-
tem() operator. This is just the 16-bit status word returned
by the wait() system call (or else is made up to look like it).
Thus, the exit value of the subprocess is really ("$? >> 8"),
and "$? & 127" gives which signal, if any, the process died
from, and "$? & 128" reports whether there was a core dump.
cheers
andrew