The patch patches an .awk file that is used to create several Makefiles. The original code looks something like this:
install install.libs install.includes :: install files So we see that install.libs and install.includes do exactly the same thing. Given our ncurses recipe installs explicitly both targets: “make install.libs install.includes “ the race is obvious. So one way to fix it would be to prepend .NOTPARALLEL install.libs install.includes This would solve the race, but some files would be installed twice. The other way, (the one implemented by the patch) is to create Makefiles containing: install.libs :: ; install install.includes:: install files This way the files are installed only once, and we can use parallel make. So as long as we install explicitly install.libs and install.includes (and we do) , ncurses should install the way they were meant to. I believe there would be no race if we used a simple “ make install”, but this would probably install additional components we don’t care about. Yes, ncurses is weird. They rely heavily on the ‘::’ rules, so rules for each target are scattered in various places so it is not obvious to see the big picture when it comes to dependencies. From: Burton, Ross [mailto:ross.bur...@intel.com] Sent: Friday, March 11, 2016 1:36 AM To: Bystricky, Juro <juro.bystri...@intel.com> Cc: OE-core <openembedded-core@lists.openembedded.org>; Juro Bystricky <jurobystri...@hotmail.com> Subject: Re: [OE-core] [PATCH 1/1] ncurses_6: Fix an install race condition Hi Juro, On 11 March 2016 at 02:07, Juro Bystricky <juro.bystri...@intel.com<mailto:juro.bystri...@intel.com>> wrote: +As both targets install identical files. The remedy is to either prevent +parallel make of install.libs and install.includes, or ensure only one +target installs the files. +The second approch will only work if we always install both libs and +includes (which we do). Wouldn't an upstreamable fix be to make install.includes the target that actually does something, and then have install depend on that? Considering install.libs and install.includes are separate rules, surely install.libs in the header makefile should do nothing? (ncurses is weird...) Have you checked the other makefiles for the same problem? Ross
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core