summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaofeng Yan <xiaofeng.yan@windriver.com>2012-05-21 14:59:22 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-24 08:34:49 +0100
commit80e4833782edc5fbda2a7f5d003a854f127137ec (patch)
treec9448a80fa3271fb12ba29ea8202c2f33646f9a8
parenta2ad2870a54108027ed33e977470f5f72e0bce1b (diff)
downloadopenembedded-core-80e4833782edc5fbda2a7f5d003a854f127137ec.tar.gz
openembedded-core-80e4833782edc5fbda2a7f5d003a854f127137ec.tar.bz2
openembedded-core-80e4833782edc5fbda2a7f5d003a854f127137ec.zip
ncurses: Avoid occasional builling failure when having parallel processable task
ncurses failure non-gplv3 build (race issue) like the following \ error information: | tic: error while loading shared libraries: /srv/home/pokybuild \ /yocto-autobuilder/yocto-slave/nightly-non-gpl3/build/build/tmp/\ work/x86_64-linux/ncurses-native-5.9-r8.1/ncurses-5.9/narrowc/lib\ /libtinfo.so.5: file too short | ? tic could not build /srv/home/pokybuild/yocto-autobuilder/\ yocto-slave/nightly-non-gpl3/build/build/tmp/work/x86_64-linux/\ ncurses-native-5.9-r8.1/image/srv/home/pokybuild/yocto-autobuilder\ /yocto-slave/nightly-non-gpl3/build/build/tmp/sysroots/x86_64-linux\ /usr/share/terminfo | make[1]: *** [install.data] Error 1 This is a race issue which is caused by install.libs and install.data: 1) install.data needs run tic 2) tic needs libtinfo.so 3) install.libs would regenerate libtinfo.so 4) but install.data doesn't depend on install.libs, and they can run parallelly So there would be errors in a very critical condition: tic is begining to run at the same time when install.libs is generating libtinfo.so, and this libtinfo.so is not integrity, then there would be the above error. Let task install.libs run before install.data for fixing this bug. [YOCTO #2298] Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
-rw-r--r--meta/recipes-core/ncurses/ncurses.inc23
1 files changed, 18 insertions, 5 deletions
diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
index ae99e2ca04..b0311196ee 100644
--- a/meta/recipes-core/ncurses/ncurses.inc
+++ b/meta/recipes-core/ncurses/ncurses.inc
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc
SECTION = "libs"
DEPENDS = "ncurses-native"
DEPENDS_virtclass-native = ""
-INC_PR = "r8"
+INC_PR = "r9"
inherit autotools binconfig multilib_header
@@ -107,10 +107,15 @@ do_test() {
diff curses-narrowc.h curses-widec.h
}
+# Split original _install_opts to two parts.
+# One is the options to install contents, the other is the parameters \
+# when running command "make install"
_install_opts = "\
+ install.libs install.includes install.man \
+"
+_install_cfgs = "\
DESTDIR='${D}' \
PKG_CONFIG_LIBDIR='${libdir}/pkgconfig' \
- install.libs install.includes install.man \
"
python do_install () {
@@ -122,11 +127,19 @@ shell_do_install() {
# Order of installation is important; widec installs a 'curses.h'
# header with more definitions and must be installed last hence.
# Compatibility of these headers will be checked in 'do_test()'.
- oe_runmake -C narrowc ${_install_opts} \
- install.data install.progs
+ oe_runmake -C narrowc ${_install_cfgs} ${_install_opts} \
+ install.progs
+
+ # The install.data should run after install.libs, otherwise
+ # there would be a race issue in a very critical conditon, since
+ # tic will be run by install.data, and tic needs libtinfo.so
+ # which would be regenerated by install.libs.
+ oe_runmake -C narrowc ${_install_cfgs} \
+ install.data
+
! ${ENABLE_WIDEC} || \
- oe_runmake -C widec ${_install_opts}
+ oe_runmake -C widec ${_install_cfgs} ${_install_opts}
cd narrowc