[OE-core] [PATCH 1/1] ghostscript: fix parallel build issue

Phil Blundell philb at gnu.org
Tue Aug 2 08:03:38 UTC 2011


On Mon, 2011-08-01 at 15:51 -0700, Tom Rini wrote:
> On 08/01/2011 03:28 PM, Saul Wold wrote:
> > On 07/30/2011 11:20 AM, Khem Raj wrote:
> >> On Wednesday, July 27, 2011 05:34:45 PM Kang Kai wrote:
> >>> From: Kang Kai<kai.kang at windriver.com>
> >>>
> >>> ghostscript fails some time on autobuilder, it seems a parallel build
> >>> issue.
> >>> Add patch to fix it.
> >>>
> >>> Fixes [Yocto #1202]
> >>>
> >>> Signed-off-by: Kang Kai<kai.kang at windriver.com>
> >>> ---
> >>>   .../ghostscript-9.02-parallel-make.patch           |   17
> >>> +++++++++++++++++
> >>> .../ghostscript/ghostscript_9.02.bb                |    3 ++-
> >>>   2 files changed, 19 insertions(+), 1 deletions(-)
> >>>   create mode 100644
> >>> meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-parallel-mak
> >>>
> >>> e.patch
> >>>
> >>> diff --git
> >>> a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-parallel-m
> >>>
> >>> ake.patch
> >>> b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-parallel-m
> >>>
> >>> ake.patch new file mode 100644
> >>> index 0000000..76d1676
> >>> --- /dev/null
> >>> +++
> >>> b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-parallel-m
> >>>
> >>> ake.patch @@ -0,0 +1,17 @@
> >>> +When parallel make it will fail with multi copy, see
> >>> +http://bugzilla.pokylinux.org/show_bug.cgi?id=1202
> >>> +
> >>> +Upstream-Status: Pending
> >>> +
> >>> +Signed-off-by: Kang Kai<kai.kang at windriver.com>
> >>> +--- ghostscript-9.02/base/unixhead.mak.orig    2011-07-27
> >>> 17:06:17.749456100
> >>> +0800 ++++ ghostscript-9.02/base/unixhead.mak    2011-07-27
> >>> 17:06:37.449456100
> >>> +0800 +@@ -54,7 +54,7 @@
> >>> +
> >>> + # Define generic commands.
> >>> +
> >>> +-CP_=cp
> >>> ++CP_=cp -f
> >>
> >> It means it will first delete the target if it exists. Did you check
> >> if this
> >> is correct behavior ?
> >>
> > Khem,
> > 
> > As far as I know the file is that is being copied to is the same file
> > and the CP is only used in that case, the 2 files are copied to the same
> > location due to the Parallel make.
> 
> Er, that sounds like we're just changing the race around.  Now we could
> get an incomplete file?

I don't think you would get an incomplete file, but using "cp -f" just
makes the race less likely rather than eliminating it.  You can still
get:

cp 1			cp 2
open(foo) = -EACCESS
unlink(foo)
			open(foo) = 0
open(foo) = -EACCESS
exit(1)
			write()
			exit(0)

if the two copies of cp end up running at the same time.

It seems pretty clear that the right fix is to figure out why this race
is happening in the first place and adjust the make rules to avoid it,
rather than trying to paper over it by making the conflict harmless.  If
that's hard/impossible for any reason then "cp -n" might possibly be
acceptable since then the copy of cp that loses the race will just do
nothing harmlessly.  I don't think -n is POSIX though so this is
definitely a less-good workaround.

p.






More information about the Openembedded-core mailing list