Thread: build farm machine using mixed results

build farm machine using mixed results

From
Robert Creager
Date:

I change the build-farm.conf file to have the following make line:

    make => 'make -j 8', # or gmake if required. can include path if necessary.

2 pass, 4 fail.  Is this a build configuration you want to pursue?  I can either create a new machine, or change one of my existing machines.  Makes no difference to me.

roberts-imac:build-farm-4.7-j robert$ time ./run_branches.pl --run-all --test
Sat Sep  1 09:26:49 2012: buildfarm run for CHANGEME:HEAD starting
[09:26:49] checking out source ...
[09:27:59] checking if build run needed ...
[09:27:59] copying source to pgsql.54279 ...
[09:28:03] running configure ...
[09:28:25] running make ...
[09:28:45] running make check ...
Branch: HEAD
Stage Check failed with status 2
Sat Sep  1 09:29:09 2012: buildfarm run for CHANGEME:REL9_2_STABLE starting
[09:29:09] checking out source ...
[09:29:57] checking if build run needed ...
[09:29:57] copying source to pgsql.70926 ...
[09:29:58] running configure ...
[09:30:18] running make ...
[09:30:45] running make check ...
[09:31:09] running make contrib ...
[09:31:12] running make install ...
[09:31:15] running make contrib install ...
[09:31:16] setting up db cluster (C)...
[09:31:19] starting db (C)...
[09:31:20] running make installcheck (C)...
[09:31:39] restarting db (C)...
[09:31:51] running make isolation check ...
[09:32:00] restarting db (C)...
[09:32:12] running make PL installcheck (C)...
Branch: REL9_2_STABLE
Stage PLCheck-C failed with status 2
Sat Sep  1 09:32:29 2012: buildfarm run for CHANGEME:REL9_1_STABLE starting
[09:32:29] checking out source ...
[09:33:08] checking if build run needed ...
[09:33:08] copying source to pgsql.94883 ...
[09:33:10] running configure ...
[09:33:30] running make ...
[09:33:54] running make check ...
[09:34:18] running make contrib ...
[09:34:21] running make install ...
[09:34:23] running make contrib install ...
[09:34:24] setting up db cluster (C)...
[09:34:26] starting db (C)...
[09:34:27] running make installcheck (C)...
[09:34:47] restarting db (C)...
[09:34:59] running make isolation check ...
[09:35:16] restarting db (C)...
[09:35:28] running make PL installcheck (C)...
Branch: REL9_1_STABLE
Stage PLCheck-C failed with status 2
Sat Sep  1 09:35:46 2012: buildfarm run for CHANGEME:REL9_0_STABLE starting
[09:35:46] checking out source ...
[09:36:08] checking if build run needed ...
[09:36:08] copying source to pgsql.18851 ...
[09:36:10] running configure ...
[09:36:28] running make ...
[09:37:00] running make check ...
[09:37:23] running make contrib ...
[09:37:27] running make install ...
[09:37:30] running make contrib install ...
[09:37:32] setting up db cluster (C)...
[09:37:34] starting db (C)...
[09:37:35] running make installcheck (C)...
[09:37:52] restarting db (C)...
[09:38:04] running make PL installcheck (C)...
[09:38:06] restarting db (C)...
[09:38:18] running make contrib installcheck (C)...
[09:38:30] stopping db (C)...
[09:38:31] running make ecpg check ...
[09:38:43] OK
Branch: REL9_0_STABLE
All stages succeeded
Sat Sep  1 09:38:43 2012: buildfarm run for CHANGEME:REL8_4_STABLE starting
[09:38:43] checking out source ...
[09:38:57] checking if build run needed ...
[09:38:57] copying source to pgsql.45071 ...
[09:38:59] running configure ...
[09:39:19] running make ...
[09:39:46] running make check ...
[09:40:14] running make contrib ...
[09:40:17] running make install ...
[09:40:23] running make contrib install ...
[09:40:25] setting up db cluster (C)...
[09:40:30] starting db (C)...
[09:40:31] running make installcheck (C)...
[09:40:47] restarting db (C)...
[09:40:59] running make PL installcheck (C)...
[09:41:01] restarting db (C)...
[09:41:13] running make contrib installcheck (C)...
[09:41:25] stopping db (C)...
[09:41:26] running make ecpg check ...
[09:41:44] OK
Branch: REL8_4_STABLE
All stages succeeded
Sat Sep  1 09:41:44 2012: buildfarm run for CHANGEME:REL8_3_STABLE starting
[09:41:44] checking out source ...
[09:42:39] checking if build run needed ...
[09:42:39] copying source to pgsql.80222 ...
[09:42:42] running configure ...
[09:43:03] running make ...
[09:43:38] running make check ...
[09:44:04] running make contrib ...
[09:44:09] running make install ...
[09:44:14] running make contrib install ...
[09:44:17] setting up db cluster (C)...
[09:44:20] starting db (C)...
[09:44:21] running make installcheck (C)...
[09:44:39] restarting db (C)...
[09:44:51] running make PL installcheck (C)...
[09:44:52] restarting db (C)...
[09:45:05] running make contrib installcheck (C)...
Branch: REL8_3_STABLE
Stage ContribCheck-C failed with status 2


Re: build farm machine using mixed results

From
Alvaro Herrera
Date:
Excerpts from Robert Creager's message of sáb sep 01 12:12:51 -0400 2012:
>
> I change the build-farm.conf file to have the following make line:
>
>     make => 'make -j 8', # or gmake if required. can include path if necessary.
>
> 2 pass, 4 fail.  Is this a build configuration you want to pursue?

Sure, why not?  Parallel building is going to become more common, so
it's a good idea to investigate the failures.  I would have it build
only HEAD though, because we're not likely to backpatch these fixes.

> I can either create a new machine, or change one of my existing machines.  Makes no difference to me.

If we want to have it run only HEAD I would say you should create a new
animal.

Perhaps you should wait until after 9.2 has been released, though, to
avoid distracting people :-)

--
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services



Re: build farm machine using mixed results

From
Peter Eisentraut
Date:
On 9/1/12 12:12 PM, Robert Creager wrote:
> 
> I change the build-farm.conf file to have the following make line:
> 
>     make => 'make -j 8', # or gmake if required. can include path if
> necessary.
> 
> 2 pass, 4 fail.  Is this a build configuration you want to pursue?

Sure that would be useful, but it's pretty clear that the check stages
don't work in parallel.  It think it's because the ports conflict, but
there could be any number of other problems.

That said, it would be useful, in my mind, to support parallel checks.
But unless someone is going to put in the work first, you should
restrict your parallel runs to the build and install phases.




Re: build farm machine using mixed results

From
Alvaro Herrera
Date:
Excerpts from Peter Eisentraut's message of mar sep 04 18:49:46 -0300 2012:
> On 9/1/12 12:12 PM, Robert Creager wrote:
> >
> > I change the build-farm.conf file to have the following make line:
> >
> >     make => 'make -j 8', # or gmake if required. can include path if
> > necessary.
> >
> > 2 pass, 4 fail.  Is this a build configuration you want to pursue?
>
> Sure that would be useful, but it's pretty clear that the check stages
> don't work in parallel.  It think it's because the ports conflict, but
> there could be any number of other problems.

Is that really the problem?  As far as I know, buildfarm doesn't use
anything like installcheck-world or similar targets; each check target
is run separately, serially, by the BF script.

--
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/04/2012 05:49 PM, Peter Eisentraut wrote:
> On 9/1/12 12:12 PM, Robert Creager wrote:
>> I change the build-farm.conf file to have the following make line:
>>
>>      make => 'make -j 8', # or gmake if required. can include path if
>> necessary.
>>
>> 2 pass, 4 fail.  Is this a build configuration you want to pursue?
> Sure that would be useful, but it's pretty clear that the check stages
> don't work in parallel.  It think it's because the ports conflict, but
> there could be any number of other problems.
>
> That said, it would be useful, in my mind, to support parallel checks.
> But unless someone is going to put in the work first, you should
> restrict your parallel runs to the build and install phases.
>
>


The buildfarm code doesn't contain a facility to use a different make 
incantation for each step. It's pretty much an all or nothing deal. Of 
course, you can hack run_build.pl to make it do that, but I highly 
discourage that. For one thing, it makes upgrading that much more 
difficult. All the  tweaking is supposed to be done vie the config file. 
I guess I could add a setting that allowed for per step make flags.

Frankly, I have had enough failures of parallel make that I think doing 
this would generate a significant number of non-repeatable failures (I 
had one just the other day that took three invocations of make to get 
right). So I'm not sure doing this would advance us much, although I'm 
open to persuasion.

cheers

andrew



Re: build farm machine using mixed results

From
Aidan Van Dyk
Date:
<p dir="ltr"><br /> On Sep 4, 2012 6:06 PM, "Andrew Dunstan" <<a
href="mailto:andrew@dunslane.net">andrew@dunslane.net</a>>wrote:<br /> ><br /> ><br /> > Frankly, I have
hadenough failures of parallel make that I think doing this would generate a significant number of non-repeatable
failures(I had one just the other day that took three invocations of make to get right). So I'm not sure doing this
wouldadvance us much, although I'm open to persuasion.<p dir="ltr">Seeing as most PostgreSQL bugs appear with
concurrency,I think we should leave our default config with 1 for max connections.<p dir="ltr"> ;-)<p
dir="ltr">Parallelmake failures are bugs in the dependencies as described in our make files.<p dir="ltr">For the build
phase,I don't recall parallel problems and as a habit I usually use parallel makes.  I would like that to be supported
andI think I've seen fixes applied when we had issues before.  Cutting build times to 1/2 to 1/4 is good.<p
dir="ltr">Checksand tests are harder because often they can't run in parallel. But then we shouldn't have them listed
asindependent prerequisites for targets.   Ideally.  But fixing it might not be worth the cost since an "acceptable"
workaround (rely upon make to serialize the test sequences in the particular order) is pretty painless (so far).  <p
dir="ltr">Ofcourse, having the ability to run the tests 8 at a time (or more) and reduce the time by 80% would be nice
.;-)<divclass="gmail_quote">On Sep 4, 2012 6:06 PM, "Andrew Dunstan" <<a
href="mailto:andrew@dunslane.net">andrew@dunslane.net</a>>wrote:<br type="attribution" /><blockquote
class="gmail_quote"style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br /> On 09/04/2012 05:49 PM,
PeterEisentraut wrote:<br /><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">On 9/1/12 12:12 PM, Robert Creager wrote:<br /><blockquote class="gmail_quote" style="margin:0
00 .8ex;border-left:1px #ccc solid;padding-left:1ex"> I change the build-farm.conf file to have the following make
line:<br/><br />      make => 'make -j 8', # or gmake if required. can include path if<br /> necessary.<br /><br />
2pass, 4 fail.  Is this a build configuration you want to pursue?<br /></blockquote> Sure that would be useful, but
it'spretty clear that the check stages<br /> don't work in parallel.  It think it's because the ports conflict, but<br
/>there could be any number of other problems.<br /><br /> That said, it would be useful, in my mind, to support
parallelchecks.<br /> But unless someone is going to put in the work first, you should<br /> restrict your parallel
runsto the build and install phases.<br /><br /><br /></blockquote><br /><br /> The buildfarm code doesn't contain a
facilityto use a different make incantation for each step. It's pretty much an all or nothing deal. Of course, you can
hack<a href="http://run_build.pl" target="_blank">run_build.pl</a> to make it do that, but I highly discourage that.
Forone thing, it makes upgrading that much more difficult. All the  tweaking is supposed to be done vie the config
file.I guess I could add a setting that allowed for per step make flags.<br /><br /> Frankly, I have had enough
failuresof parallel make that I think doing this would generate a significant number of non-repeatable failures (I had
onejust the other day that took three invocations of make to get right). So I'm not sure doing this would advance us
much,although I'm open to persuasion.<br /><br /> cheers<br /><br /> andrew<br /><br /><br /> -- <br /> Sent via
pgsql-hackersmailing list (<a href="mailto:pgsql-hackers@postgresql.org"
target="_blank">pgsql-hackers@postgresql.org</a>)<br/> To make changes to your subscription:<br /><a
href="http://www.postgresql.org/mailpref/pgsql-hackers"
target="_blank">http://www.postgresql.org/<u></u>mailpref/pgsql-hackers</a><br/><br /></blockquote></div> 

Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Frankly, I have had enough failures of parallel make that I think doing 
> this would generate a significant number of non-repeatable failures (I 
> had one just the other day that took three invocations of make to get 
> right). So I'm not sure doing this would advance us much, although I'm 
> open to persuasion.

Really?  I routinely use -j4 for building, and it's been a long time
since I've seen failures.  I can believe that for instance "make check"
in contrib would have a problem running in parallel, but the build
process per se seems reliable enough from here.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/04/2012 08:37 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Frankly, I have had enough failures of parallel make that I think doing
>> this would generate a significant number of non-repeatable failures (I
>> had one just the other day that took three invocations of make to get
>> right). So I'm not sure doing this would advance us much, although I'm
>> open to persuasion.
> Really?  I routinely use -j4 for building, and it's been a long time
> since I've seen failures.  I can believe that for instance "make check"
> in contrib would have a problem running in parallel, but the build
> process per se seems reliable enough from here.
>
>             


Both cases were vpath builds, which is what I usually use, if that's a 
useful data point.

Maybe I run on lower level hardware than you do. I saw this again this 
afternoon after I posted the above. In both cases this was the machine 
that runs the buildfarm's crake. I'll try to get a handle on it.

cheers

andrew




Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/04/2012 08:51 PM, Andrew Dunstan wrote:
>
> On 09/04/2012 08:37 PM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>> Frankly, I have had enough failures of parallel make that I think doing
>>> this would generate a significant number of non-repeatable failures (I
>>> had one just the other day that took three invocations of make to get
>>> right). So I'm not sure doing this would advance us much, although I'm
>>> open to persuasion.
>> Really?  I routinely use -j4 for building, and it's been a long time
>> since I've seen failures.  I can believe that for instance "make check"
>> in contrib would have a problem running in parallel, but the build
>> process per se seems reliable enough from here.
>>
>>
>
>
> Both cases were vpath builds, which is what I usually use, if that's a 
> useful data point.
>
> Maybe I run on lower level hardware than you do. I saw this again this 
> afternoon after I posted the above. In both cases this was the machine 
> that runs the buildfarm's crake. I'll try to get a handle on it.
>
>


Well, it looks like it's always failing on ecpg, with preproc.h not 
being made in the right order. Here is the last bit of a make log 
starting from when it starts on ecpg. This is pretty repeatable.

cheers

andrew


-----

make -C ecpg all
make[3]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg'
make -C include all
make[4]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/include'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/include'
make -C pgtypeslib all
make -C preproc all
make[4]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/pgtypeslib'
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
numeric.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/numeric.c -MMD 
-MP -MF .deps/numeric.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
common.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/common.c -MMD 
-MP -MF .deps/common.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
datetime.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/datetime.c -MMD 
-MP -MF .deps/datetime.Po
make[4]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/preproc'
make -C ../../../../src/port all
make[5]: Entering directory `/home/pgl/npgl/vpath.testpar/src/port'
make -C ../backend submake-errcodes
make[6]: Entering directory `/home/pgl/npgl/vpath.testpar/src/backend'
make[6]: Nothing to be done for `submake-errcodes'.
make[6]: Leaving directory `/home/pgl/npgl/vpath.testpar/src/backend'
make[5]: Leaving directory `/home/pgl/npgl/vpath.testpar/src/port'
'/usr/bin/perl' 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/parse.pl 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc < 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/../../../backend/parser/gram.y > preproc.y
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
dt_common.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/dt_common.c -MMD 
-MP -MF .deps/dt_common.Po
'/usr/bin/perl' 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/check_rules.pl 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/../../../backend/parser/gram.y
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
timestamp.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/timestamp.c -MMD 
-MP -MF .deps/timestamp.Po
/usr/bin/flex  -o'pgc.c' 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/pgc.l
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -DECPG_COMPILE -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include -I. 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc -DMAJOR_VERSION=4 
-DMINOR_VERSION=9 -DPATCHLEVEL=0 -I../../../../src/include 
-I/home/andrew/pgl/pg_head/src/include -D_GNU_SOURCE 
-I/usr/include/libxml2   -c -o type.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/type.c -MMD -MP -MF 
.deps/type.Po
rm -f pgstrcasecmp.c && ln -s 
/home/andrew/pgl/pg_head/src/port/pgstrcasecmp.c .
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
interval.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/interval.c -MMD 
-MP -MF .deps/interval.Po
( echo '{ global:'; gawk '/^[^#]/ {printf "%s;\n",$1}' 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/pgtypeslib/exports.txt; 
echo ' local: *; };' ) >exports.list
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/include/utils 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=3  -c -o 
pgstrcasecmp.o pgstrcasecmp.c -MMD -MP -MF .deps/pgstrcasecmp.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -DECPG_COMPILE -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include -I. 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc -DMAJOR_VERSION=4 
-DMINOR_VERSION=9 -DPATCHLEVEL=0 -I../../../../src/include 
-I/home/andrew/pgl/pg_head/src/include -D_GNU_SOURCE 
-I/usr/include/libxml2   -c -o ecpg.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/ecpg.c -MMD -MP -MF 
.deps/ecpg.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -DECPG_COMPILE -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include -I. 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc -DMAJOR_VERSION=4 
-DMINOR_VERSION=9 -DPATCHLEVEL=0 -I../../../../src/include 
-I/home/andrew/pgl/pg_head/src/include -D_GNU_SOURCE 
-I/usr/include/libxml2   -c -o output.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/output.c -MMD -MP 
-MF .deps/output.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -DECPG_COMPILE -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include -I. 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc -DMAJOR_VERSION=4 
-DMINOR_VERSION=9 -DPATCHLEVEL=0 -I../../../../src/include 
-I/home/andrew/pgl/pg_head/src/include -D_GNU_SOURCE 
-I/usr/include/libxml2   -c -o parser.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/parser.c -MMD -MP 
-MF .deps/parser.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -DECPG_COMPILE -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include -I. 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc -DMAJOR_VERSION=4 
-DMINOR_VERSION=9 -DPATCHLEVEL=0 -I../../../../src/include 
-I/home/andrew/pgl/pg_head/src/include -D_GNU_SOURCE 
-I/usr/include/libxml2   -c -o keywords.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/keywords.c -MMD -MP 
-MF .deps/keywords.Po
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/parser.c:25:21: 
fatal error: preproc.h: No such file or directory
compilation terminated.
/home/andrew/pgl/pg_head/src/interfaces/ecpg/preproc/keywords.c:20:21: 
fatal error: preproc.h: No such file or directory
compilation terminated.
make[4]: *** [parser.o] Error 1
make[4]: *** Waiting for unfinished jobs....
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -shared -Wl,-soname,libpgtypes.so.3 
-Wl,--version-script=exports.list -o libpgtypes.so.3.4 numeric.o 
datetime.o common.o dt_common.o timestamp.o interval.o pgstrcasecmp.o  
-L../../../../src/port -Wl,--as-needed 
-Wl,-rpath,'/home/andrew/pgl/inst.testpar.5701/lib',--enable-new-dtags -lm
ar crs libpgtypes.a numeric.o datetime.o common.o dt_common.o 
timestamp.o interval.o pgstrcasecmp.o
ranlib libpgtypes.a
rm -f libpgtypes.so.3
ln -s libpgtypes.so.3.4 libpgtypes.so.3
rm -f libpgtypes.so
ln -s libpgtypes.so.3.4 libpgtypes.so
make[4]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/pgtypeslib'
make -C ecpglib all
make[4]: *** [keywords.o] Error 1
make[4]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/preproc'
make[3]: *** [all-preproc-recurse] Error 2
make[3]: *** Waiting for unfinished jobs....
make[4]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/ecpglib'
make -C ../../../../src/interfaces/libpq all
make -C ../../../../src/interfaces/ecpg/pgtypeslib all
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
execute.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/execute.c 
-MMD -MP -MF .deps/execute.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
typename.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/typename.c -MMD -MP 
-MF .deps/typename.Po
make[5]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/pgtypeslib'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/pgtypeslib'
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
descriptor.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/descriptor.c -MMD 
-MP -MF .deps/descriptor.Po
make[5]: Entering directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/libpq'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/libpq'
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
sqlda.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/sqlda.c 
-MMD -MP -MF .deps/sqlda.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o data.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/data.c -MMD -MP -MF 
.deps/data.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
error.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/error.c 
-MMD -MP -MF .deps/error.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
prepare.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/prepare.c 
-MMD -MP -MF .deps/prepare.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
memory.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/memory.c 
-MMD -MP -MF .deps/memory.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
connect.o /home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/connect.c 
-MMD -MP -MF .deps/connect.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o misc.o 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/misc.c -MMD -MP -MF 
.deps/misc.Po
rm -f path.c && ln -s /home/andrew/pgl/pg_head/src/port/path.c .
rm -f pgstrcasecmp.c && ln -s 
/home/andrew/pgl/pg_head/src/port/pgstrcasecmp.c .
rm -f strlcpy.c && ln -s /home/andrew/pgl/pg_head/src/port/strlcpy.c .
rm -f thread.c && ln -s /home/andrew/pgl/pg_head/src/port/thread.c .
( echo '{ global:'; gawk '/^[^#]/ {printf "%s;\n",$1}' 
/home/andrew/pgl/pg_head/src/interfaces/ecpg/ecpglib/exports.txt; echo ' 
local: *; };' ) >exports.list
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o path.o 
path.c -MMD -MP -MF .deps/path.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
pgstrcasecmp.o pgstrcasecmp.c -MMD -MP -MF .deps/pgstrcasecmp.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
strlcpy.o strlcpy.c -MMD -MP -MF .deps/strlcpy.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include 
-I/home/andrew/pgl/pg_head/src/interfaces/ecpg/include 
-I/home/andrew/pgl/pg_head/src/interfaces/libpq -I../../../../src/port 
-I../../../../src/include -I/home/andrew/pgl/pg_head/src/include 
-D_GNU_SOURCE -I/usr/include/libxml2  -DSO_MAJOR_VERSION=6  -c -o 
thread.o thread.c -MMD -MP -MF .deps/thread.Po
ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute 
-Wformat-security -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -g -pthread  -D_REENTRANT -D_THREAD_SAFE 
-D_POSIX_PTHREAD_SEMANTICS -fpic -shared -Wl,-soname,libecpg.so.6 
-Wl,--version-script=exports.list -o libecpg.so.6.5 execute.o typename.o 
descriptor.o sqlda.o data.o error.o prepare.o memory.o connect.o misc.o 
path.o pgstrcasecmp.o strlcpy.o thread.o -L../../../../src/port 
-Wl,--as-needed 
-Wl,-rpath,'/home/andrew/pgl/inst.testpar.5701/lib',--enable-new-dtags 
-L../pgtypeslib -lpgtypes -L../../../../src/interfaces/libpq -lpq -lm 
-lpthread
ar crs libecpg.a execute.o typename.o descriptor.o sqlda.o data.o 
error.o prepare.o memory.o connect.o misc.o path.o pgstrcasecmp.o 
strlcpy.o thread.o
ranlib libecpg.a
rm -f libecpg.so.6
ln -s libecpg.so.6.5 libecpg.so.6
rm -f libecpg.so
ln -s libecpg.so.6.5 libecpg.so
make[4]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg/ecpglib'
make[3]: Leaving directory 
`/home/pgl/npgl/vpath.testpar/src/interfaces/ecpg'
make[2]: *** [all-ecpg-recurse] Error 2
make[2]: Leaving directory `/home/pgl/npgl/vpath.testpar/src/interfaces'
make[1]: *** [all-interfaces-recurse] Error 2
make[1]: Leaving directory `/home/pgl/npgl/vpath.testpar/src'
make: *** [all-src-recurse] Error 2











Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Well, it looks like it's always failing on ecpg, with preproc.h not 
> being made in the right order. Here is the last bit of a make log 
> starting from when it starts on ecpg. This is pretty repeatable.

Hmph.  I can't reproduce it at all on my Fedora 16 box.  What version
of make are you using?
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/07/2012 08:43 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Well, it looks like it's always failing on ecpg, with preproc.h not
>> being made in the right order. Here is the last bit of a make log
>> starting from when it starts on ecpg. This is pretty repeatable.
> Hmph.  I can't reproduce it at all on my Fedora 16 box.  What version
> of make are you using?


$ make -v
GNU Make 3.82
Built for x86_64-redhat-linux-gnu


cheers

andrew



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/07/2012 09:55 PM, Andrew Dunstan wrote:
>
> On 09/07/2012 08:43 PM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>> Well, it looks like it's always failing on ecpg, with preproc.h not
>>> being made in the right order. Here is the last bit of a make log
>>> starting from when it starts on ecpg. This is pretty repeatable.
>> Hmph.  I can't reproduce it at all on my Fedora 16 box.  What version
>> of make are you using?
>
>
> $ make -v
> GNU Make 3.82
> Built for x86_64-redhat-linux-gnu
>
>
>


OK, I just tried on a different F16 machine and it didn't happen. I 
wonder what's different.

cheers

andrew






Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/07/2012 10:46 PM, Andrew Dunstan wrote:
>
> On 09/07/2012 09:55 PM, Andrew Dunstan wrote:
>>
>> On 09/07/2012 08:43 PM, Tom Lane wrote:
>>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>> Well, it looks like it's always failing on ecpg, with preproc.h not
>>>> being made in the right order. Here is the last bit of a make log
>>>> starting from when it starts on ecpg. This is pretty repeatable.
>>> Hmph.  I can't reproduce it at all on my Fedora 16 box.  What version
>>> of make are you using?
>>
>>
>> $ make -v
>> GNU Make 3.82
>> Built for x86_64-redhat-linux-gnu
>>
>>
>>
>
>
> OK, I just tried on a different F16 machine and it didn't happen. I 
> wonder what's different.

This seems totally stupid, but it happens when the path to the current 
directory includes a cross-device symlink. If I cd following the link, 
then this effect doesn't happen. Weird.

cheers

andrew






Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> This seems totally stupid, but it happens when the path to the current 
> directory includes a cross-device symlink. If I cd following the link, 
> then this effect doesn't happen. Weird.

Huh.  So maybe a gmake bug, or maybe there's something wrong with our
make rules for the case that `pwd` doesn't match what gmake thinks the
current path is.  Could you specify the setup more fully?
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/08/2012 11:06 AM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> This seems totally stupid, but it happens when the path to the current
>> directory includes a cross-device symlink. If I cd following the link,
>> then this effect doesn't happen. Weird.
> Huh.  So maybe a gmake bug, or maybe there's something wrong with our
> make rules for the case that `pwd` doesn't match what gmake thinks the
> current path is.  Could you specify the setup more fully?
>
>             

Scratch that theory, that was just a transient. If anything it looks 
like it is related to system load. When almost nothing was running on 
the machine it worked fine. When I started up a Browser and an MUA the 
problem occurred. This VM has 4 CPUs and 4Gb of memory and a load 
average around 0.4 right now. I'm a bit perplexed.

cheers

andrew





Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Scratch that theory, that was just a transient. If anything it looks 
> like it is related to system load. When almost nothing was running on 
> the machine it worked fine. When I started up a Browser and an MUA the 
> problem occurred. This VM has 4 CPUs and 4Gb of memory and a load 
> average around 0.4 right now. I'm a bit perplexed.

Hm ... you weren't using the -l (--max-load) option were you?  That
would make system load affect gmake's scheduling.  Although it's clear
when I test it that it is waiting for the bison run to finish before
launching the dependent builds, so it still seems like it must be a bug
if your copy isn't waiting for that.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/08/2012 04:46 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Scratch that theory, that was just a transient. If anything it looks
>> like it is related to system load. When almost nothing was running on
>> the machine it worked fine. When I started up a Browser and an MUA the
>> problem occurred. This VM has 4 CPUs and 4Gb of memory and a load
>> average around 0.4 right now. I'm a bit perplexed.
> Hm ... you weren't using the -l (--max-load) option were you?  That
> would make system load affect gmake's scheduling.  Although it's clear
> when I test it that it is waiting for the bison run to finish before
> launching the dependent builds, so it still seems like it must be a bug
> if your copy isn't waiting for that.
>
>             

No. just "make -j 4"

And it's the stock Fedora build of make.

cheers

andrew




Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> And it's the stock Fedora build of make.

Which Fedora branch exactly?

The package version I was trying to reproduce with here is
make-3.82-8.fc16.x86_64.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/08/2012 04:54 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> And it's the stock Fedora build of make.
> Which Fedora branch exactly?
>
> The package version I was trying to reproduce with here is
> make-3.82-8.fc16.x86_64.

Same:
   $ rpm -q make   make-3.82-8.fc16.x86_64

cheers

andrew




Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/08/2012 04:52 PM, Andrew Dunstan wrote:
>
> On 09/08/2012 04:46 PM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>> Scratch that theory, that was just a transient. If anything it looks
>>> like it is related to system load. When almost nothing was running on
>>> the machine it worked fine. When I started up a Browser and an MUA the
>>> problem occurred. This VM has 4 CPUs and 4Gb of memory and a load
>>> average around 0.4 right now. I'm a bit perplexed.
>> Hm ... you weren't using the -l (--max-load) option were you? That
>> would make system load affect gmake's scheduling.  Although it's clear
>> when I test it that it is waiting for the bison run to finish before
>> launching the dependent builds, so it still seems like it must be a bug
>> if your copy isn't waiting for that.
>>
>>
>
> No. just "make -j 4"
>
> And it's the stock Fedora build of make.


I have just repeated this on an absolutely fresh up to date F17 machine, 
with no symlink stuff in play.

Steps to recreate:
   CC="ccache gcc" ../postgres/configure --enable-depend --enable-debug   --enable-cassert --with-perl --with-python
--with-tcl--with-libxml   --with-libxslt -with-openssl --with-gssapi --with-pam --with-ldap   make -j 4
 


cheers

andrew

q



Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> I have just repeated this on an absolutely fresh up to date F17 machine, 
> with no symlink stuff in play.

> Steps to recreate:

>     CC="ccache gcc" ../postgres/configure --enable-depend --enable-debug
>     --enable-cassert --with-perl --with-python --with-tcl --with-libxml
>     --with-libxslt -with-openssl --with-gssapi --with-pam --with-ldap
>     make -j 4

Huh ... that recipe works (er, fails) for me too, at least some of the
time.  I wonder what exactly is the key difference between the working
and failing cases?

Anyway, what I notice is that I get different types of failures, but
they are all under ecpg/.  What I think we need to do is insert
.NOTPARALLEL in ecpg/Makefile, because there are several reasons not
to run its sub-makes in parallel:

* preproc/Makefile casually does this:

../ecpglib/typename.o: ../ecpglib/typename.c$(MAKE) -C $(dir $@) $(notdir $@)

which is very likely to screw up any make proceeding in parallel in
ecpglib.

* compatlib and ecpglib will equally casually invoke "make all" in
other subdirectories; ditto.

And that's not even counting the bison-output problem you were seeing.
I'm not entirely sure what's causing that, but I'm suspicious that the
ultimate cause is the extra rules for the "all...recurse" targets in
ecpg/Makefile, which look like they could result in additional instances
of multiple make processes running in the same subdirectory.

After adding the .NOTPARALLEL marker, I don't see these failures
anymore.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/08/2012 07:54 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> I have just repeated this on an absolutely fresh up to date F17 machine,
>> with no symlink stuff in play.
>> Steps to recreate:
>>      CC="ccache gcc" ../postgres/configure --enable-depend --enable-debug
>>      --enable-cassert --with-perl --with-python --with-tcl --with-libxml
>>      --with-libxslt -with-openssl --with-gssapi --with-pam --with-ldap
>>      make -j 4
> Huh ... that recipe works (er, fails) for me too, at least some of the
> time.  I wonder what exactly is the key difference between the working
> and failing cases?
>
> Anyway, what I notice is that I get different types of failures, but
> they are all under ecpg/.  What I think we need to do is insert
> .NOTPARALLEL in ecpg/Makefile, because there are several reasons not
> to run its sub-makes in parallel:
>
> * preproc/Makefile casually does this:
>
> ../ecpglib/typename.o: ../ecpglib/typename.c
>     $(MAKE) -C $(dir $@) $(notdir $@)
>
> which is very likely to screw up any make proceeding in parallel in
> ecpglib.
>
> * compatlib and ecpglib will equally casually invoke "make all" in
> other subdirectories; ditto.
>
> And that's not even counting the bison-output problem you were seeing.
> I'm not entirely sure what's causing that, but I'm suspicious that the
> ultimate cause is the extra rules for the "all...recurse" targets in
> ecpg/Makefile, which look like they could result in additional instances
> of multiple make processes running in the same subdirectory.
>
> After adding the .NOTPARALLEL marker, I don't see these failures
> anymore.
>
>             

Well, I'm glad it's not just me. :-)

This fix works for me too.

I guess it should be applied back to 9.1, when it looks like we started 
using .NOTPARALLEL


cheers

andrew



Re: build farm machine using mixed results

From
Peter Eisentraut
Date:
On Sat, 2012-09-08 at 19:54 -0400, Tom Lane wrote:
> Anyway, what I notice is that I get different types of failures, but
> they are all under ecpg/.  What I think we need to do is insert
> .NOTPARALLEL in ecpg/Makefile,

I'd hate that, because the ecpg build is one of the slowest parts of the
build, so de-parallelizing it would slow down everything quite a bit.

>  because there are several reasons not
> to run its sub-makes in parallel:
> 
> * preproc/Makefile casually does this:
> 
> ../ecpglib/typename.o: ../ecpglib/typename.c
>     $(MAKE) -C $(dir $@) $(notdir $@)
> 
> which is very likely to screw up any make proceeding in parallel in
> ecpglib.

That should probably be fixed by symlinking the source file and building
it in the preproc directory.

> And that's not even counting the bison-output problem you were seeing.
> I'm not entirely sure what's causing that, but I'm suspicious that the
> ultimate cause is the extra rules for the "all...recurse" targets in
> ecpg/Makefile, which look like they could result in additional instances
> of multiple make processes running in the same subdirectory.

I think the point of these targets is exactly to prevent that.





Re: build farm machine using mixed results

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> On Sat, 2012-09-08 at 19:54 -0400, Tom Lane wrote:
>> Anyway, what I notice is that I get different types of failures, but
>> they are all under ecpg/.  What I think we need to do is insert
>> .NOTPARALLEL in ecpg/Makefile,

> I'd hate that, because the ecpg build is one of the slowest parts of the
> build, so de-parallelizing it would slow down everything quite a bit.

There's only one bit of it that's slow, which is the bison build +
preproc.c compile, which is necessarily serial anyway.  So I think
trying to avoid .NOTPARALLEL there is a complete waste of effort.
But if you wanna fix it some other way, step right up.

(This all does remind me of the "Recursive Make Considered Harmful"
thread from awhile back.  Is anyone prepared to go down that path
now?  I'm not terribly excited by that, as yet --- yeah, it would
be better, but the work involved seems out of proportion to the
benefit.)
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/09/2012 03:29 AM, Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
>> On Sat, 2012-09-08 at 19:54 -0400, Tom Lane wrote:
>>> Anyway, what I notice is that I get different types of failures, but
>>> they are all under ecpg/.  What I think we need to do is insert
>>> .NOTPARALLEL in ecpg/Makefile,
>> I'd hate that, because the ecpg build is one of the slowest parts of the
>> build, so de-parallelizing it would slow down everything quite a bit.
> There's only one bit of it that's slow, which is the bison build +
> preproc.c compile, which is necessarily serial anyway.  So I think
> trying to avoid .NOTPARALLEL there is a complete waste of effort.
> But if you wanna fix it some other way, step right up.


Yeah. I am going to add a config parameter to the buildfarm to allow 
parallelism for the "make" and "make contrib" stages, but I'm not going 
to release it until this is fixed.

(I suppose this is also a lesson to me that I should not ignore things 
like this that annoy me persistently as I did with these failures until 
Robert Creager started this discussion. It just didn't seem important 
enough.)

cheers

andrew





Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 09/09/2012 03:29 AM, Tom Lane wrote:
>> Peter Eisentraut <peter_e@gmx.net> writes:
>>> On Sat, 2012-09-08 at 19:54 -0400, Tom Lane wrote:
>>>> Anyway, what I notice is that I get different types of failures, but
>>>> they are all under ecpg/.  What I think we need to do is insert
>>>> .NOTPARALLEL in ecpg/Makefile,

>>> I'd hate that, because the ecpg build is one of the slowest parts of the
>>> build, so de-parallelizing it would slow down everything quite a bit.

>> There's only one bit of it that's slow, which is the bison build +
>> preproc.c compile, which is necessarily serial anyway.  So I think
>> trying to avoid .NOTPARALLEL there is a complete waste of effort.
>> But if you wanna fix it some other way, step right up.

> Yeah. I am going to add a config parameter to the buildfarm to allow 
> parallelism for the "make" and "make contrib" stages, but I'm not going 
> to release it until this is fixed.

Well, why don't we stick .NOTPARALLEL in there for the moment, and then
if Peter thinks of a better solution, he can revert that change in favor
of something cleaner.

I assume we need this for all active branches, if the buildfarm is
going to be stressing it?
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/09/2012 11:31 AM, Tom Lane wrote:
>> Yeah. I am going to add a config parameter to the buildfarm to allow
>> parallelism for the "make" and "make contrib" stages, but I'm not going
>> to release it until this is fixed.
> Well, why don't we stick .NOTPARALLEL in there for the moment, and then
> if Peter thinks of a better solution, he can revert that change in favor
> of something cleaner.


Works for me

>
> I assume we need this for all active branches, if the buildfarm is
> going to be stressing it?
>
>             

I can restrict it to only modern branches. Didn't we supposedly improve 
support for this during the 9.1 cycle? That seems like a sensible place 
to go back to.

cheers

andrew




Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 09/09/2012 11:31 AM, Tom Lane wrote:
>> I assume we need this for all active branches, if the buildfarm is
>> going to be stressing it?

> I can restrict it to only modern branches. Didn't we supposedly improve 
> support for this during the 9.1 cycle? That seems like a sensible place 
> to go back to.

Mmm, yeah, the commit history shows several different fixes for parallel
make back in the 9.1 time frame.  I doubt we want to try back-porting
all that work.  Let's just say 9.1 and up, then.
        regards, tom lane



Re: build farm machine using mixed results

From
Tom Lane
Date:
And the answer is ... it's a gmake bug.  Apparently introduced in 3.82.

http://savannah.gnu.org/bugs/?30653
https://bugzilla.redhat.com/show_bug.cgi?id=835424

So I think .NOTPARALLEL is just masking the true problem, but
nonetheless it's a problem.  And given that the bug report on savannah
has been ignored for two years, we should not hold our breath for a fix
to appear upstream (much less propagate to everyone using 3.82).
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/09/2012 02:05 PM, Tom Lane wrote:
> And the answer is ... it's a gmake bug.  Apparently introduced in 3.82.
>
> http://savannah.gnu.org/bugs/?30653
> https://bugzilla.redhat.com/show_bug.cgi?id=835424
>
> So I think .NOTPARALLEL is just masking the true problem, but
> nonetheless it's a problem.  And given that the bug report on savannah
> has been ignored for two years, we should not hold our breath for a fix
> to appear upstream (much less propagate to everyone using 3.82).
>
>             

Thanks for pursuing this. Whether or not it masks the underlying 
problem, it's still something we should do, no? In fact, it seems to me 
like this makes it even less worth trying to do anything better.

cheers

andrew




Re: build farm machine using mixed results

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 09/09/2012 02:05 PM, Tom Lane wrote:
>> And the answer is ... it's a gmake bug.

> Thanks for pursuing this. Whether or not it masks the underlying 
> problem, it's still something we should do, no? In fact, it seems to me 
> like this makes it even less worth trying to do anything better.

Yeah, exactly.
        regards, tom lane



Re: build farm machine using mixed results

From
Peter Eisentraut
Date:
On Sun, 2012-09-09 at 14:05 -0400, Tom Lane wrote:
> And the answer is ... it's a gmake bug.  Apparently introduced in 3.82.
> 
> http://savannah.gnu.org/bugs/?30653
> https://bugzilla.redhat.com/show_bug.cgi?id=835424
> 
> So I think .NOTPARALLEL is just masking the true problem, but
> nonetheless it's a problem.  And given that the bug report on savannah
> has been ignored for two years, we should not hold our breath for a fix
> to appear upstream (much less propagate to everyone using 3.82).

So does the issue go away when using GNU make 3.81?





Re: build farm machine using mixed results

From
Peter Eisentraut
Date:
On Sun, 2012-09-09 at 14:57 -0400, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> > On 09/09/2012 02:05 PM, Tom Lane wrote:
> >> And the answer is ... it's a gmake bug.
> 
> > Thanks for pursuing this. Whether or not it masks the underlying 
> > problem, it's still something we should do, no? In fact, it seems to me 
> > like this makes it even less worth trying to do anything better.
> 
> Yeah, exactly.

But then the answer could be, if you want to use parallel make, use a
version that's not broken.




Re: build farm machine using mixed results

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> On Sun, 2012-09-09 at 14:05 -0400, Tom Lane wrote:
>> So I think .NOTPARALLEL is just masking the true problem, but
>> nonetheless it's a problem.  And given that the bug report on savannah
>> has been ignored for two years, we should not hold our breath for a fix
>> to appear upstream (much less propagate to everyone using 3.82).

> So does the issue go away when using GNU make 3.81?

I couldn't reproduce it in a few tries on my Mac laptop, which has 3.81.
But that's not necessarily a comparable test, given the different
hardware, OS, and compiler version.  I'd put more faith in the multiple
statements in the upstream bugs that people weren't seeing this with
3.81.
        regards, tom lane



Re: build farm machine using mixed results

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> But then the answer could be, if you want to use parallel make, use a
> version that's not broken.

That's not a terribly practical answer for people who use the "make"
supplied by their OS vendor, which is approximately 99.9% of people.
It's even less practical for packagers, who don't have a choice about
what tool set to use.

Even if I wanted to use a locally-patched make, I'm not sure I'd trust a
patch that doesn't seem to have been signed off on by any actual gmake
developer or maintainer.  That sort of cure is frequently worse than the
disease.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/09/2012 05:00 PM, Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
>> But then the answer could be, if you want to use parallel make, use a
>> version that's not broken.
> That's not a terribly practical answer for people who use the "make"
> supplied by their OS vendor, which is approximately 99.9% of people.
> It's even less practical for packagers, who don't have a choice about
> what tool set to use.
>
> Even if I wanted to use a locally-patched make, I'm not sure I'd trust a
> patch that doesn't seem to have been signed off on by any actual gmake
> developer or maintainer.  That sort of cure is frequently worse than the
> disease.
>
>             


Right.

Meanwhile, I have buildfarm animal crake building with the experimental 
buildfarm code, and so far the results look good.

cheers

andrew




Re: build farm machine using mixed results

From
Tom Lane
Date:
I wrote:
> And the answer is ... it's a gmake bug.  Apparently introduced in 3.82.
> http://savannah.gnu.org/bugs/?30653
> https://bugzilla.redhat.com/show_bug.cgi?id=835424

> So I think .NOTPARALLEL is just masking the true problem, but
> nonetheless it's a problem.  And given that the bug report on savannah
> has been ignored for two years, we should not hold our breath for a fix
> to appear upstream (much less propagate to everyone using 3.82).

So no sooner do I complain about that, than the upstream maintainers
wake up and commit it:
http://lists.gnu.org/archive/html/bug-make/2012-09/msg00016.html

No idea when a fixed release might appear, but at least somebody who
knows the gmake code has signed off on the fix now.
        regards, tom lane



Re: build farm machine using mixed results

From
Andrew Dunstan
Date:
On 09/10/2012 02:44 PM, Tom Lane wrote:
> I wrote:
>> And the answer is ... it's a gmake bug.  Apparently introduced in 3.82.
>> http://savannah.gnu.org/bugs/?30653
>> https://bugzilla.redhat.com/show_bug.cgi?id=835424
>> So I think .NOTPARALLEL is just masking the true problem, but
>> nonetheless it's a problem.  And given that the bug report on savannah
>> has been ignored for two years, we should not hold our breath for a fix
>> to appear upstream (much less propagate to everyone using 3.82).
> So no sooner do I complain about that, than the upstream maintainers
> wake up and commit it:
> http://lists.gnu.org/archive/html/bug-make/2012-09/msg00016.html
>
> No idea when a fixed release might appear, but at least somebody who
> knows the gmake code has signed off on the fix now.
>
>             

When it does appear in a release I guess we could make the .NOTPARALLEL 
conditional on make version. If not, we'll have to wait a long time 
before removing it.

cheers

andrew