Patchwork libtool: fixed parallel build related race

login
register
mail settings
Submitter Enrico Scholz
Date May 20, 2012, 5:54 p.m.
Message ID <1337536477-7047-1-git-send-email-enrico.scholz@sigma-chemnitz.de>
Download mbox | patch
Permalink /patch/28015/
State Accepted
Commit e065c11b6066f8c1d37496b58dd853a684cd9136
Headers show

Comments

Enrico Scholz - May 20, 2012, 5:54 p.m.
While building libtool, the libtool script itself will be regenerated
because OE modifies a dependency[1]. With -jX, this operation (-->
removal, creation of non-x file, 'chmod a+x') can happen at a time when
the script is going to be executed.  This can cause errors like:

| arm-linux-gnueabi-libtool: compile:  ccache arm-linux-gnueabi-gcc ...
| ...
| /bin/sh ./config.status libtool
| ...
| arm-linux-gnueabi-libtool: compile:  ccache arm-linux-gnueabi-gcc ...
| /bin/sh: ./arm-linux-gnueabi-libtool: Permission denied
| make[2]: *** [libltdl/libltdl_libltdl_la-lt__alloc.lo] Error 126

I am not sure whether the custom do_compile_prepend() is still needed.
For now only the issue above will be fixed by executing ./config.status
yet again.

[1] see 648290d5bf4d6ff50d3643bb7ad902dfc23aa702

Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
---
 meta/recipes-devtools/libtool/libtool-2.4.2.inc |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Saul Wold - May 24, 2012, 6:33 p.m.
On 05/20/2012 10:54 AM, Enrico Scholz wrote:
> While building libtool, the libtool script itself will be regenerated
> because OE modifies a dependency[1]. With -jX, this operation (-->
> removal, creation of non-x file, 'chmod a+x') can happen at a time when
> the script is going to be executed.  This can cause errors like:
>
> | arm-linux-gnueabi-libtool: compile:  ccache arm-linux-gnueabi-gcc ...
> | ...
> | /bin/sh ./config.status libtool
> | ...
> | arm-linux-gnueabi-libtool: compile:  ccache arm-linux-gnueabi-gcc ...
> | /bin/sh: ./arm-linux-gnueabi-libtool: Permission denied
> | make[2]: *** [libltdl/libltdl_libltdl_la-lt__alloc.lo] Error 126
>
> I am not sure whether the custom do_compile_prepend() is still needed.
> For now only the issue above will be fixed by executing ./config.status
> yet again.
>
> [1] see 648290d5bf4d6ff50d3643bb7ad902dfc23aa702
>
> Signed-off-by: Enrico Scholz<enrico.scholz@sigma-chemnitz.de>
> ---
>   meta/recipes-devtools/libtool/libtool-2.4.2.inc |    3 ++-
>   1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/meta/recipes-devtools/libtool/libtool-2.4.2.inc b/meta/recipes-devtools/libtool/libtool-2.4.2.inc
> index 084062a..c1ef7c4 100644
> --- a/meta/recipes-devtools/libtool/libtool-2.4.2.inc
> +++ b/meta/recipes-devtools/libtool/libtool-2.4.2.inc
> @@ -8,7 +8,7 @@ LICENSE = "GPLv2&  LGPLv2.1"
>   LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
>       file://libltdl/COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
>
> -INC_PR = "r2"
> +INC_PR = "r3"
>
>   SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
>              file://trailingslash.patch \
> @@ -27,6 +27,7 @@ do_compile_prepend () {
>   	# Sometimes this file doesn't get rebuilt, force the issue
>   	rm -f ${S}/libltdl/config/ltmain.sh
>   	make libltdl/config/ltmain.sh
> +	./config.status
>   }
>
>   inherit autotools

Merged into OE-Core

Thanks
	Sau!

Patch

diff --git a/meta/recipes-devtools/libtool/libtool-2.4.2.inc b/meta/recipes-devtools/libtool/libtool-2.4.2.inc
index 084062a..c1ef7c4 100644
--- a/meta/recipes-devtools/libtool/libtool-2.4.2.inc
+++ b/meta/recipes-devtools/libtool/libtool-2.4.2.inc
@@ -8,7 +8,7 @@  LICENSE = "GPLv2 & LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
     file://libltdl/COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
 
-INC_PR = "r2"
+INC_PR = "r3"
 
 SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
            file://trailingslash.patch \
@@ -27,6 +27,7 @@  do_compile_prepend () {
 	# Sometimes this file doesn't get rebuilt, force the issue
 	rm -f ${S}/libltdl/config/ltmain.sh
 	make libltdl/config/ltmain.sh
+	./config.status
 }
 
 inherit autotools