rpm: Fix file contention issue

There is an issue that is caused when doing the install step of rpm on systems
with high parallelization where two jobs of make will fight for the same file
while installing the sub-directory lua. This is caused by the same makefile rule
being called twice in a way that both could be trying to install at the same
time.

This fix renames the linking rule so it will always be run after the needed
files are added and removed it's dependency so the required rule would only
run once.

This was tested heavily using ppss to run mutliple installs in parallel. This
wouldn't happen in practise but it was tested will all the individual rules as
well.

(From OE-Core rev: d05c5da6b972db97d3eb66b659f5641368c9ebe4)

Signed-off-by: Morgan Little <morgan.little@windriver.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mark Hatle 2012-09-29 19:19:16 -05:00 committed by Richard Purdie
parent fc3b6656af
commit a2e7adad27
2 changed files with 33 additions and 1 deletions

View File

@ -0,0 +1,31 @@
rpm: Resolve parallel install issue when installing lua
When lua is being installed on some systems that are being run with high levels
of parallelization there are cases where install-data-am and install-exec-hook
are processed at the same or a very short time apart. This causes
install-pkgbinPROGRAMS, which is a dependency of both, to be run at around the
same time This sometimes causes file contention and will sometimes be in a state
where install-exec-hook is looking for a file that is being installed or both
install-pkgbinPROGRAMS being run are installing the same file and fail because
it cannon create a new file.
This patch allows install-exec-hook to be called by install-data-am instead of
install-exec-am. It also removed the dependency in install-data-hook on
install-pkgbinPROGRAMS. This means install-pkgbinPROGRAMS will only be run once
so there whould be any file contention.
Upstream-Status: Pending
Signed-off-by: Morgan Little <morgan.little@windriver.com>
--- a/lua/Makefile.am.orig
+++ b/lua/Makefile.am
@@ -320,7 +320,7 @@
# XXX Build & install as rpmlua/rpmluac with hardlinks to lua/luac post install.
# XXX CVS has lua/luac sub-directories in the Attic that collide with the
# XXX lua/luac executable names when using cvs update.
-install-exec-hook: install-pkgbinPROGRAMS
+install-data-hook:
mkdir -p $(DESTDIR)$(pkgbindir)
$(__RM) -f $(DESTDIR)$(pkgbindir)/lua
$(__LN) $(DESTDIR)$(pkgbindir)/rpmlua $(DESTDIR)$(pkgbindir)/lua

View File

@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
DEPENDS = "libpcre attr acl popt ossp-uuid file bison-native"
PR = "r49"
PR = "r50"
# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed
# in order to extract the distribution SRPM into a format we can extract...
@ -77,6 +77,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex
file://fstack-protector-configure-check.patch \
file://dbconvert.patch \
file://rpm-uuid-include.patch \
file://makefile-am-exec-hook.patch \
"
SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"