ilmari@ilmari.org (Dagfinn Ilmari =?utf-8?Q?Manns=C3=A5ker?=) writes:
> Michael Paquier <michael@paquier.xyz> writes:
>> Hmm. That logically makes sense. Isn't that a side effect of 7143b3e
>> then? Now, FWIW, I am not able to reproduce it here, after trying on
>> two different machines, various parallel job numbers (up to 32), and a
>> couple of dozen attempts. Perhaps somebody else can see the failures?
> It fails reliably for me on Debian Buster, with make 4.2.1-1.2and -j4.
Yeah, it's also reliable for me on Fedora 30:
$ make -s clean
$ make -s -j4 -C src/interfaces/libpq
/usr/bin/ld: cannot find -lpgcommon_shlib
/usr/bin/ld: cannot find -lpgport_shlib
collect2: error: ld returned 1 exit status
make: *** [../../../src/Makefile.shlib:293: libpq.so.5.13] Error 1
make: *** Waiting for unfinished jobs....
On a RHEL6 box, the same test only draws a complaint about
-lpgcommon_shlib, so it does seem like there's some make version
dependency in here. And of course the whole thing is a race condition
anyway, so naturally it's going to be pretty context-sensitive.
My thoughts about the patch:
1) Changing from an "|"-style dependency to a plain dependency seems
like a semantics change. I've never been totally clear on the
difference though. I think Peter introduced our use of the "|" style,
so maybe he can comment.
2) The same coding pattern is used in a bunch of other places, so if
this spot is broken, there probably are a lot of others that need a
similar change. On the other hand, there may not be that many
directories that are likely places to start a parallel build from,
so maybe we don't care elsewhere.
regards, tom lane