openssl: force soft link to avoid rare race

This patch works around a rare parallel build race condition using
the force option when soft linking.

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.

(From OE-Core rev: c60288aba70635238094c6b813228b31e0715db9)

Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Randy MacLeod
2017-10-16 11:00:45 -04:00
committed by Richard Purdie
parent 452e524ac7
commit c8d5f75c87
2 changed files with 47 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
From 3d9199423d48766649a2b2ebb3924e892ed16fa4 Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@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@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

View File

@@ -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"