Openembedded Devel Discussions
 help / color / mirror / Atom feed
* [meta-oe][PATCH] vk-gl-cts: fix soname linking
@ 2021-09-24  2:10 Trevor Woerner
  0 siblings, 0 replies; only message in thread
From: Trevor Woerner @ 2021-09-24  2:10 UTC (permalink / raw)
  To: openembedded-devel

The code/build explicitly links to the GL library names instead of their
sonames. Update the names that are used for linking so the libraries are
found at runtime.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
 ...0001-use-library-sonames-for-linking.patch | 126 ++++++++++++++++++
 .../vk-gl-cts/khronos-cts.inc                 |   1 +
 2 files changed, 127 insertions(+)
 create mode 100644 meta-oe/recipes-graphics/vk-gl-cts/files/0001-use-library-sonames-for-linking.patch

diff --git a/meta-oe/recipes-graphics/vk-gl-cts/files/0001-use-library-sonames-for-linking.patch b/meta-oe/recipes-graphics/vk-gl-cts/files/0001-use-library-sonames-for-linking.patch
new file mode 100644
index 000000000..cb396c37d
--- /dev/null
+++ b/meta-oe/recipes-graphics/vk-gl-cts/files/0001-use-library-sonames-for-linking.patch
@@ -0,0 +1,126 @@
+From acd25c4b8d5b7e420a7a89bdfd6551c70de828b3 Mon Sep 17 00:00:00 2001
+From: Trevor Woerner <twoerner@gmail.com>
+Date: Thu, 23 Sep 2021 19:36:43 -0400
+Subject: [PATCH] use library sonames for linking
+
+The recommended "best practices" for applications is to link to library
+sonames (e.g. libGL.so.1) instead of library names (e.g. libGL.so). This
+ensures that applications don't try to use libraries if an incompatible ABI
+change occurs.
+
+Upstream-Status: Submitted [https://github.com/KhronosGroup/VK-GL-CTS/pull/288]
+Signed-off-by: Trevor Woerner <twoerner@gmail.com>
+---
+ framework/egl/egluGLContextFactory.cpp                      | 4 ++--
+ framework/egl/wrapper/eglwLibrary.cpp                       | 2 +-
+ framework/platform/android/tcuAndroidPlatform.cpp           | 2 +-
+ framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp   | 2 +-
+ .../platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp | 2 +-
+ framework/platform/surfaceless/tcuSurfacelessPlatform.cpp   | 6 +++---
+ 6 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/framework/egl/egluGLContextFactory.cpp b/framework/egl/egluGLContextFactory.cpp
+index 8fbea2af1..8d42f19eb 100644
+--- a/framework/egl/egluGLContextFactory.cpp
++++ b/framework/egl/egluGLContextFactory.cpp
+@@ -63,7 +63,7 @@ using std::vector;
+ #	if (DE_OS == DE_OS_WIN32)
+ #		define DEQP_GLES2_LIBRARY_PATH "libGLESv2.dll"
+ #	else
+-#		define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so"
++#		define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so.2"
+ #	endif
+ #endif
+ 
+@@ -75,7 +75,7 @@ using std::vector;
+ #	if (DE_OS == DE_OS_WIN32)
+ #		define DEQP_OPENGL_LIBRARY_PATH "opengl32.dll"
+ #	else
+-#		define DEQP_OPENGL_LIBRARY_PATH "libGL.so"
++#		define DEQP_OPENGL_LIBRARY_PATH "libGL.so.1"
+ #	endif
+ #endif
+ 
+diff --git a/framework/egl/wrapper/eglwLibrary.cpp b/framework/egl/wrapper/eglwLibrary.cpp
+index d7e07fe18..ebdf68b14 100644
+--- a/framework/egl/wrapper/eglwLibrary.cpp
++++ b/framework/egl/wrapper/eglwLibrary.cpp
+@@ -148,7 +148,7 @@ DefaultLibrary::~DefaultLibrary (void)
+ const char* DefaultLibrary::getLibraryFileName (void)
+ {
+ #if (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_UNIX)
+-	return "libEGL.so";
++	return "libEGL.so.1";
+ #elif (DE_OS == DE_OS_WIN32)
+ 	return "libEGL.dll";
+ #else
+diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
+index b9a4c716f..05cec0b49 100644
+--- a/framework/platform/android/tcuAndroidPlatform.cpp
++++ b/framework/platform/android/tcuAndroidPlatform.cpp
+@@ -57,7 +57,7 @@ static const eglu::NativeWindow::Capability		WINDOW_CAPABILITIES		= (eglu::Nativ
+ class NativeDisplay : public eglu::NativeDisplay
+ {
+ public:
+-									NativeDisplay			(void) : eglu::NativeDisplay(DISPLAY_CAPABILITIES), m_library("libEGL.so") {}
++									NativeDisplay			(void) : eglu::NativeDisplay(DISPLAY_CAPABILITIES), m_library("libEGL.so.1") {}
+ 	virtual							~NativeDisplay			(void) {}
+ 
+ 	virtual EGLNativeDisplayType	getLegacyNative			(void)			{ return EGL_DEFAULT_DISPLAY;	}
+diff --git a/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp b/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp
+index 009c05e18..237c5e16f 100644
+--- a/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp
++++ b/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp
+@@ -75,7 +75,7 @@ class Library : public eglw::DefaultLibrary
+ {
+ public:
+ 	Library (void)
+-		: eglw::DefaultLibrary("libEGL.so")
++		: eglw::DefaultLibrary("libEGL.so.1")
+ 	{
+ 	}
+ 
+diff --git a/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp b/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp
+index 97bc3a0ed..3a20d63d3 100644
+--- a/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp
++++ b/framework/platform/lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp
+@@ -66,7 +66,7 @@ public:
+ 													 EGL_PLATFORM_WAYLAND_KHR,
+ 													 "EGL_KHR_platform_wayland")
+ 									, m_display		(waylandDisplay)
+-									, m_library		("libEGL.so") {}
++									, m_library		("libEGL.so.1") {}
+ 
+ 	~Display(void) {}
+ 	wayland::Display&			getWaylandDisplay	(void)	{ return *m_display; }
+diff --git a/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp b/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp
+index 9783eaeab..a1d8ac667 100644
+--- a/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp
++++ b/framework/platform/surfaceless/tcuSurfacelessPlatform.cpp
+@@ -69,7 +69,7 @@ using std::vector;
+ 
+ // Default library names
+ #if !defined(DEQP_GLES2_LIBRARY_PATH)
+-#	define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so"
++#	define DEQP_GLES2_LIBRARY_PATH "libGLESv2.so.2"
+ #endif
+ 
+ #if !defined(DEQP_GLES3_LIBRARY_PATH)
+@@ -77,7 +77,7 @@ using std::vector;
+ #endif
+ 
+ #if !defined(DEQP_OPENGL_LIBRARY_PATH)
+-#	define DEQP_OPENGL_LIBRARY_PATH "libGL.so"
++#	define DEQP_OPENGL_LIBRARY_PATH "libGL.so.1"
+ #endif
+ 
+ namespace tcu
+@@ -238,7 +238,7 @@ glu::RenderContext* ContextFactory::createContext(const glu::RenderConfig& confi
+ }
+ 
+ EglRenderContext::EglRenderContext(const glu::RenderConfig& config, const tcu::CommandLine& cmdLine)
+-	: m_egl("libEGL.so")
++	: m_egl("libEGL.so.1")
+ 	, m_contextType(config.type)
+ 	, m_eglDisplay(EGL_NO_DISPLAY)
+ 	, m_eglContext(EGL_NO_CONTEXT)
diff --git a/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc b/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
index 881d6ca82..1faee4d3a 100644
--- a/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
+++ b/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
@@ -25,6 +25,7 @@ DEPENDS += "libpng zlib virtual/libgles2"
 SRC_URI += "file://0001-Workaround-for-GCC-11-uninit-variable-warnings-946.patch;patchdir=external/amber/src \
             file://0001-Include-limits-header-for-numeric_limits.patch;patchdir=external/vulkancts \
             file://0001-vulkancts.patch \
+            file://0001-use-library-sonames-for-linking.patch \
 "
 
 SRC_URI:append:libc-musl = "\
-- 
2.30.0.rc0


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-09-24  2:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-24  2:10 [meta-oe][PATCH] vk-gl-cts: fix soname linking Trevor Woerner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox