[OE-core] [PATCH 2/2] openssl: force soft link to avoid rare race

Randy MacLeod randy.macleod at windriver.com
Mon Oct 16 15:24:27 UTC 2017


On 2017-10-16 11:00 AM, Randy MacLeod wrote:
> This patch works around a rare parallel build race condition using
> the force option when soft linking.

Rare here means a few times out of > 5000 builds.

I pushed this change into the WR oe-core branch 3 weeks ago (Sept 25th)
and haven't see any build failures of this type since then
whereas I would expect to see about 5-10 without the work-around.

../Randy

> 
> The error seen is:
> 
> ln: failed to create symbolic link 'libssl.so': File exists
> make[4]: *** [Makefile.shared:171: link_a.gnu] Error 1
> make[4]: Leaving directory
> '/.../build/tmp-glibc/work/x86_64-linux/openssl-native/1.0.2k-r0/openssl-1.0.2k'
> 
> Just add the -f flag to the platform independent soft link code to
> avoid the collision.  This is reasonable since this Makefile removes
> the link target before creating a new soft link. The Makefile was
> written this way to support platforms that don't allow forcing a
> softlink to overwrite an existing link. Only builds on Linux are
> supported so that's not a requirement for oe-core recipes.
> 
> The openssl team is rewriting their build files so it's not appropriate
> for openssl upstream and fixing the root cause of the race condition
> was also not pursued.
> 
> Signed-off-by: Randy MacLeod <Randy.MacLeod at windriver.com>
> ---
>   ...penssl-force-soft-link-to-avoid-rare-race.patch | 48 ++++++++++++++++++++++
>   .../recipes-connectivity/openssl/openssl_1.0.2l.bb |  1 +
>   2 files changed, 49 insertions(+)
>   create mode 100644 meta/recipes-connectivity/openssl/openssl-1.0.2l/0001-openssl-force-soft-link-to-avoid-rare-race.patch
> 
> diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2l/0001-openssl-force-soft-link-to-avoid-rare-race.patch b/meta/recipes-connectivity/openssl/openssl-1.0.2l/0001-openssl-force-soft-link-to-avoid-rare-race.patch
> new file mode 100644
> index 0000000..f3c1ac7
> --- /dev/null
> +++ b/meta/recipes-connectivity/openssl/openssl-1.0.2l/0001-openssl-force-soft-link-to-avoid-rare-race.patch
> @@ -0,0 +1,48 @@
> +From 3d9199423d48766649a2b2ebb3924e892ed16fa4 Mon Sep 17 00:00:00 2001
> +From: Randy MacLeod <Randy.MacLeod at windriver.com>
> +Date: Tue, 20 Jun 2017 15:32:08 -0400
> +Subject: [PATCH] openssl: Force soft link to avoid rare race
> +
> +This patch works around a rare parallel build race condition.
> +The error seen is:
> +
> +ln: failed to create symbolic link 'libssl.so': File exists
> +make[4]: *** [Makefile.shared:171: link_a.gnu] Error 1
> +make[4]: Leaving directory
> +'/.../build/tmp-glibc/work/x86_64-linux/openssl-native/1.0.2k-r0/openssl-1.0.2k'
> +
> +The openssl team is rewriting their build files so it's not
> +appropriate for openssl upstream and fixing the root cause of
> +the Makefile race condition was also not pursued.
> +
> +Upstream-status: Inappropriate [build rules rewrite in progress]
> +
> +Signed-off-by: Randy MacLeod <Randy.MacLeod at windriver.com>
> +---
> + Makefile.shared | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/Makefile.shared b/Makefile.shared
> +index e8d222a..1bff92f 100644
> +--- a/Makefile.shared
> ++++ b/Makefile.shared
> +@@ -118,14 +118,14 @@
> + 		if [ -n "$$SHLIB_COMPAT" ]; then \
> + 			for x in $$SHLIB_COMPAT; do \
> + 				( $(SET_X); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \
> +-				  ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
> ++				  ln -sf $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
> + 				prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
> + 			done; \
> + 		fi; \
> + 		if [ -n "$$SHLIB_SOVER" ]; then \
> + 			[ -e "$$SHLIB$$SHLIB_SUFFIX" ] || \
> + 			( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
> +-			  ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
> ++			  ln -sf $$prev $$SHLIB$$SHLIB_SUFFIX ); \
> + 		fi; \
> + 	fi
> +
> +--
> +2.9.3
> +
> diff --git a/meta/recipes-connectivity/openssl/openssl_1.0.2l.bb b/meta/recipes-connectivity/openssl/openssl_1.0.2l.bb
> index 8c34ea6..c537aa4 100644
> --- a/meta/recipes-connectivity/openssl/openssl_1.0.2l.bb
> +++ b/meta/recipes-connectivity/openssl/openssl_1.0.2l.bb
> @@ -41,6 +41,7 @@ SRC_URI += "file://find.pl;subdir=openssl-${PV}/util/ \
>               file://openssl-util-perlpath.pl-cwd.patch \
>               file://Use-SHA256-not-MD5-as-default-digest.patch \
>               file://0001-Fix-build-with-clang-using-external-assembler.patch \
> +            file://0001-openssl-force-soft-link-to-avoid-rare-race.patch  \
>               "
>   SRC_URI[md5sum] = "f85123cd390e864dfbe517e7616e6566"
>   SRC_URI[sha256sum] = "ce07195b659e75f4e1db43552860070061f156a98bb37b672b101ba6e3ddf30c"
> 


-- 
# Randy MacLeod.  WR Linux
# Wind River an Intel Company



More information about the Openembedded-core mailing list