mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH] apitrace: revive from staging
@ 2023-05-12 11:36 Lucas Stach
  2023-05-15  6:48 ` Michael Olbrich
  0 siblings, 1 reply; 2+ messages in thread
From: Lucas Stach @ 2023-05-12 11:36 UTC (permalink / raw)
  To: ptxdist

- update to version 11.1
- add option to enable replay utilities

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
 ...se-pkgconfig-to-find-waffle-on-Linux.patch |  37 ++++++
 ...the-ABI-specific-name-to-load-libEGL.patch |  26 ++++
 patches/apitrace-11.1/series                  |   5 +
 rules/apitrace.in                             |  22 ++--
 rules/apitrace.make                           | 121 ++++++++++++++++--
 5 files changed, 194 insertions(+), 17 deletions(-)
 create mode 100644 patches/apitrace-11.1/0001-cmake-use-pkgconfig-to-find-waffle-on-Linux.patch
 create mode 100644 patches/apitrace-11.1/0002-retrace-use-the-ABI-specific-name-to-load-libEGL.patch
 create mode 100644 patches/apitrace-11.1/series

diff --git a/patches/apitrace-11.1/0001-cmake-use-pkgconfig-to-find-waffle-on-Linux.patch b/patches/apitrace-11.1/0001-cmake-use-pkgconfig-to-find-waffle-on-Linux.patch
new file mode 100644
index 000000000000..ecaacb9aaf86
--- /dev/null
+++ b/patches/apitrace-11.1/0001-cmake-use-pkgconfig-to-find-waffle-on-Linux.patch
@@ -0,0 +1,37 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 12 May 2023 13:09:46 +0200
+Subject: [PATCH] cmake: use pkgconfig to find waffle on Linux
+
+Waffle doesn't install the cmake config files on Linux platforms
+anymore. Use pkgconfig to find the dependency instead.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ CMakeLists.txt | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a863b47cabcf..ccbcf05fbba6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -108,6 +108,7 @@ endif ()
+ # Find dependencies
+ 
+ include (CheckCXXSourceCompiles)
++INCLUDE (FindPkgConfig)
+ 
+ if (MSVC)
+     if (${MSVC_VERSION} LESS 1920)
+@@ -213,7 +214,11 @@ endif ()
+ 
+ if (ENABLE_EGL AND ENABLE_WAFFLE)
+     # Use Waffle for eglretrace
+-    find_package (Waffle REQUIRED)
++    if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
++        pkg_check_modules(Waffle REQUIRED waffle-1)
++    else ()
++        find_package (Waffle REQUIRED)
++    endif ()
+ endif ()
+ 
+ if (ENABLE_EGL AND NOT ENABLE_X11)
diff --git a/patches/apitrace-11.1/0002-retrace-use-the-ABI-specific-name-to-load-libEGL.patch b/patches/apitrace-11.1/0002-retrace-use-the-ABI-specific-name-to-load-libEGL.patch
new file mode 100644
index 000000000000..c758fe8e95b1
--- /dev/null
+++ b/patches/apitrace-11.1/0002-retrace-use-the-ABI-specific-name-to-load-libEGL.patch
@@ -0,0 +1,26 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 12 May 2023 13:14:48 +0200
+Subject: [PATCH] retrace: use the ABI specific name to load libEGL
+
+The libEGL.so symlink is mostly only present on systems with development
+packages installed. Use the ABI specific libEGL.so.1 name to load libEGL,
+so it can work on production systems.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ retrace/glproc_egl.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/retrace/glproc_egl.cpp b/retrace/glproc_egl.cpp
+index 0f0683f2275f..683e1e95f5b3 100644
+--- a/retrace/glproc_egl.cpp
++++ b/retrace/glproc_egl.cpp
+@@ -90,7 +90,7 @@ _getPublicProcAddress(const char *procName)
+     if (procName[0] == 'e' && procName[1] == 'g' && procName[2] == 'l') {
+         static void *libEGL = NULL;
+         if (!libEGL) {
+-            libEGL = dlopen("libEGL.so", RTLD_LOCAL | RTLD_LAZY);
++            libEGL = dlopen("libEGL.so.1", RTLD_LOCAL | RTLD_LAZY);
+             if (!libEGL) {
+                 return NULL;
+             }
diff --git a/patches/apitrace-11.1/series b/patches/apitrace-11.1/series
new file mode 100644
index 000000000000..25125972d7e5
--- /dev/null
+++ b/patches/apitrace-11.1/series
@@ -0,0 +1,5 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-cmake-use-pkgconfig-to-find-waffle-on-Linux.patch
+0002-retrace-use-the-ABI-specific-name-to-load-libEGL.patch
+# 62bf7d449b26b76cb97ba36f76a81487  - git-ptx-patches magic
diff --git a/rules/apitrace.in b/rules/apitrace.in
index a61ffb2c0775..dabca623e175 100644
--- a/rules/apitrace.in
+++ b/rules/apitrace.in
@@ -1,17 +1,23 @@
-## SECTION=staging
-## old section:
-### SECTION=debug_tools
+## SECTION=debug_tools
 
 config APITRACE
 	tristate
 	select HOST_CMAKE
 	select HOST_SYSTEM_PYTHON3
-	select ZLIB
-	select LIBPNG
+	select HOST_NINJA
+	select WAFFLE			if APITRACE_REPLAY
 	prompt "apitrace"
 	help
 	  Tools for tracing OpenGL, Direct3D, and other graphics APIs.
 
-	  STAGING: remove in PTXdist 2023.12.0
-	  Old version and fails to build with gcc 12. Needs updating to a
-	  new version.
+if APITRACE
+
+config APITRACE_REPLAY
+	tristate
+	prompt "apitrace replay"
+	help
+	  Build apitrace tools to replay a captured trace on the target
+	  system.
+
+endif
+
diff --git a/rules/apitrace.make b/rules/apitrace.make
index d98771d4b8f3..f58d72fc59ef 100644
--- a/rules/apitrace.make
+++ b/rules/apitrace.make
@@ -14,16 +14,112 @@ PACKAGES-$(PTXCONF_APITRACE) += apitrace
 #
 # Paths and names
 #
-APITRACE_VERSION	:= 9.0
-APITRACE_MD5		:= 83bacfb35f4f339571702099d283f571
+APITRACE_VERSION	:= 11.1
+APITRACE_MD5		:= 28a1eb4a7b69dd7c419378cd00d73e2b
 APITRACE		:= apitrace-$(APITRACE_VERSION)
 APITRACE_SUFFIX		:= tar.gz
 APITRACE_URL		:= https://github.com/apitrace/apitrace/archive/$(APITRACE_VERSION).$(APITRACE_SUFFIX)
 APITRACE_SOURCE		:= $(SRCDIR)/$(APITRACE).$(APITRACE_SUFFIX)
 APITRACE_DIR		:= $(BUILDDIR)/$(APITRACE)
-APITRACE_LICENSE	:= MIT AND BSD-3-CLAUSE
-APITRACE_LICENSE_FILES	:= file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50 \
-			   file://thirdparty/snappy/COPYING;md5=f62f3080324a97b3159a7a7e61812d0c
+APITRACE_LICENSE	:= MIT
+APITRACE_LICENSE_FILES	:= file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50
+
+# use tarballs instead of git submodules
+APITRACE_BROTLI_VERSION		:= d6d98957ca8ccb1ef45922e978bb10efca0ea541
+APITRACE_BROTLI_MD5		:= 038366c75eae41bc826f0badbd03a574
+APITRACE_BROTLI			:= apitrace-brotli-$(APITRACE_BROTLI_VERSION)
+APITRACE_BROTLI_SUFFIX		:= tar.gz
+APITRACE_BROTLI_URL		:= https://github.com/google/brotli/archive/$(APITRACE_BROTLI_VERSION).$(APITRACE_BROTLI_SUFFIX)
+APITRACE_BROTLI_SOURCE		:= $(SRCDIR)/$(APITRACE_BROTLI).$(APITRACE_BROTLI_SUFFIX)
+$(APITRACE_BROTLI_SOURCE)	:= APITRACE_BROTLI
+APITRACE_BROTLI_DIR		:= $(APITRACE_DIR)/thirdparty/brotli
+APITRACE_BROTLI_LICENSE		:= MIT
+APITRACE_BROTLI_LICENSE_FILES	:= file://LICENSE;md5=941ee9cd1609382f946352712a319b4b
+
+APITRACE_GTEST_VERSION		:= ec44c6c1675c25b9827aacd08c02433cccde7780
+APITRACE_GTEST_MD5		:= da766d6fb0e69436862593051607786b
+APITRACE_GTEST			:= apitrace-gtest-$(APITRACE_GTEST_VERSION)
+APITRACE_GTEST_SUFFIX		:= tar.gz
+APITRACE_GTEST_URL		:= https://github.com/google/googletest/archive/$(APITRACE_GTEST_VERSION).$(APITRACE_GTEST_SUFFIX)
+APITRACE_GTEST_SOURCE		:= $(SRCDIR)/$(APITRACE_GTEST).$(APITRACE_GTEST_SUFFIX)
+$(APITRACE_GTEST_SOURCE)	:= APITRACE_GTEST
+APITRACE_GTEST_DIR		:= $(APITRACE_DIR)/thirdparty/gtest
+APITRACE_GTEST_LICENSE		:= BSD-3-Clause
+APITRACE_GTEST_LICENSE_FILES	:= file://googletest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a
+
+APITRACE_LIBBACKTRACE_VERSION	:= dedbe13fda00253fe5d4f2fb812c909729ed5937
+APITRACE_LIBBACKTRACE_MD5	:= d3fa1299e74dba1c129d9fcee235c5d3
+APITRACE_LIBBACKTRACE		:= apitrace-libbacktrace-$(APITRACE_LIBBACKTRACE_VERSION)
+APITRACE_LIBBACKTRACE_SUFFIX	:= tar.gz
+APITRACE_LIBBACKTRACE_URL	:= https://github.com/ianlancetaylor/libbacktrace/archive/$(APITRACE_LIBBACKTRACE_VERSION).$(APITRACE_LIBBACKTRACE_SUFFIX)
+APITRACE_LIBBACKTRACE_SOURCE	:= $(SRCDIR)/$(APITRACE_LIBBACKTRACE).$(APITRACE_LIBBACKTRACE_SUFFIX)
+$(APITRACE_LIBBACKTRACE_SOURCE)	:= APITRACE_LIBBACKTRACE
+APITRACE_LIBBACKTRACE_DIR	:= $(APITRACE_DIR)/thirdparty/libbacktrace
+APITRACE_LIBBACKTRACE_LICENSE	:= BSD-3-Clause
+APITRACE_LIBBACKTRACE_LICENSE_FILES := file://LICENSE;md5=24b5b3feec63c4be0975e1fea5100440
+
+APITRACE_LIBPNG_VERSION		:= d42e88d5b39bf964d4aa4b360655cfa2524e7736
+APITRACE_LIBPNG_MD5		:= 0a6ba5e490c32414bb6fc7f6e4d7c0da
+APITRACE_LIBPNG			:= apitrace-libpng-$(APITRACE_LIBPNG_VERSION)
+APITRACE_LIBPNG_SUFFIX		:= tar.gz
+APITRACE_LIBPNG_URL		:= https://github.com/apitrace/libpng/archive/$(APITRACE_LIBPNG_VERSION).$(APITRACE_LIBPNG_SUFFIX)
+APITRACE_LIBPNG_SOURCE		:= $(SRCDIR)/$(APITRACE_LIBPNG).$(APITRACE_LIBPNG_SUFFIX)
+$(APITRACE_LIBPNG_SOURCE)	:= APITRACE_LIBPNG
+APITRACE_LIBPNG_DIR		:= $(APITRACE_DIR)/thirdparty/libpng
+APITRACE_LIBPNG_LICENSE		:= Libpng
+APITRACE_LIBPNG_LICENSE_FILES	:= file://LICENSE;md5=f9acafc1325f8f8da80aeee94dbc1bda
+
+APITRACE_SNAPPY_VERSION		:= 537f4ad6240e586970fe554614542e9717df7902
+APITRACE_SNAPPY_MD5		:= ac7cc4b35483ae055b6396ebcc34af01
+APITRACE_SNAPPY			:= apitrace-snappy-$(APITRACE_SNAPPY_VERSION)
+APITRACE_SNAPPY_SUFFIX		:= tar.gz
+APITRACE_SNAPPY_URL		:= https://github.com/google/snappy/archive/$(APITRACE_SNAPPY_VERSION).$(APITRACE_SNAPPY_SUFFIX)
+APITRACE_SNAPPY_SOURCE		:= $(SRCDIR)/$(APITRACE_SNAPPY).$(APITRACE_SNAPPY_SUFFIX)
+$(APITRACE_SNAPPY_SOURCE)	:= APITRACE_SNAPPY
+APITRACE_SNAPPY_DIR		:= $(APITRACE_DIR)/thirdparty/snappy
+APITRACE_SNAPPY_LICENSE		:= BSD-3-Clause
+APITRACE_SNAPPY_LICENSE_FILES	:= file://COPYING;md5=f62f3080324a97b3159a7a7e61812d0c
+
+APITRACE_ZLIB_VERSION		:= cacf7f1d4e3d44d871b605da3b647f07d718623f
+APITRACE_ZLIB_MD5		:= 4df8ccfbd8f637d556f56da8ad348c19
+APITRACE_ZLIB			:= apitrace-zlib-$(APITRACE_ZLIB_VERSION)
+APITRACE_ZLIB_SUFFIX		:= tar.gz
+APITRACE_ZLIB_URL		:= https://github.com/madler/zlib/archive/$(APITRACE_ZLIB_VERSION).$(APITRACE_ZLIB_SUFFIX)
+APITRACE_ZLIB_SOURCE		:= $(SRCDIR)/$(APITRACE_ZLIB).$(APITRACE_ZLIB_SUFFIX)
+$(APITRACE_ZLIB_SOURCE)		:= APITRACE_ZLIB
+APITRACE_ZLIB_DIR		:= $(APITRACE_DIR)/thirdparty/zlib
+APITRACE_ZLIB_LICENSE		:= Zlib
+APITRACE_ZLIB_LICENSE_FILES	:= file://README;;startline=85;endline=116;md5=0ff45db88393c3152e458a047bba0ff1
+
+APITRACE_SOURCES	:= \
+	$(APITRACE_SOURCE) \
+	$(APITRACE_BROTLI_SOURCE) \
+	$(APITRACE_GTEST_SOURCE) \
+	$(APITRACE_LIBBACKTRACE_SOURCE) \
+	$(APITRACE_LIBPNG_SOURCE) \
+	$(APITRACE_SNAPPY_SOURCE) \
+	$(APITRACE_ZLIB_SOURCE)
+
+# disable var-tracking-assignments to avoid:
+# retrace/glstate_params.cpp: note: variable tracking size limit exceeded
+# with '-fvar-tracking-assignments', retrying without
+APITRACE_CXXFLAGS	:= -fno-var-tracking-assignments
+
+# ----------------------------------------------------------------------------
+# Extract
+# ----------------------------------------------------------------------------
+$(STATEDIR)/apitrace.extract:
+	@$(call targetinfo)
+	@$(call clean, $(APITRACE_DIR))
+	@$(call extract, APITRACE)
+	@$(call extract, APITRACE_BROTLI)
+	@$(call extract, APITRACE_GTEST)
+	@$(call extract, APITRACE_LIBBACKTRACE)
+	@$(call extract, APITRACE_LIBPNG)
+	@$(call extract, APITRACE_SNAPPY)
+	@$(call extract, APITRACE_ZLIB)
+	@$(call patchin, APITRACE)
+	@$(call touch)
 
 # ----------------------------------------------------------------------------
 # Prepare
@@ -32,12 +128,14 @@ APITRACE_LICENSE_FILES	:= file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50 \
 APITRACE_CONF_TOOL	:= cmake
 APITRACE_CONF_OPT	:=  \
 	$(CROSS_CMAKE_USR) \
-	-DCMAKE_BUILD_TYPE=Release \
-	-DCMAKE_INSTALL_LIBDIR=/usr/lib \
+	-DCMAKE_INSTALL_LIBDIR=lib \
+	-G Ninja \
+	-DBUILD_TESTING=OFF \
 	-DENABLE_ASAN=OFF \
 	-DENABLE_CLI=ON \
 	-DENABLE_EGL=ON \
 	-DENABLE_FRAME_POINTER=ON \
+	-DENABLE_GLTRIM_TESTS=OFF \
 	-DENABLE_GUI=OFF \
 	-DENABLE_SSE42=OFF \
 	-DENABLE_STATIC_EXE=OFF \
@@ -45,8 +143,9 @@ APITRACE_CONF_OPT	:=  \
 	-DENABLE_STATIC_LIBSTDCXX=OFF \
 	-DENABLE_STATIC_SNAPPY=SNAPPY \
 	-DENABLE_TESTS=OFF \
-	-DENABLE_WAFFLE=OFF \
-	-DENABLE_X11=OFF
+	-DENABLE_WAFFLE=$(call ptx/onoff, PTXCONF_APITRACE_REPLAY) \
+	-DENABLE_X11=OFF \
+	-DPROCPS_LIBRARY=PROCPS_LIBRARY-NOTFOUND
 
 # ----------------------------------------------------------------------------
 # Target-Install
@@ -65,6 +164,10 @@ $(STATEDIR)/apitrace.targetinstall:
 
 	@$(call install_lib, apitrace, 0, 0, 0644, apitrace/wrappers/egltrace)
 
+#ifdef PTXCONFIG_APITRACE_REPLAY
+	@$(call install_copy, apitrace, 0, 0, 0755, -, /usr/bin/eglretrace)
+#endif
+
 	@$(call install_finish, apitrace)
 
 	@$(call touch)
-- 
2.39.2




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-05-15  6:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-12 11:36 [ptxdist] [PATCH] apitrace: revive from staging Lucas Stach
2023-05-15  6:48 ` Michael Olbrich

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