From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 12 May 2023 13:37:09 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pxR5C-00F3Yy-A2 for lore@lore.pengutronix.de; Fri, 12 May 2023 13:37:09 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1pxR5A-00018X-Km; Fri, 12 May 2023 13:37:08 +0200 Received: from dude02.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::28]) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1pxR4i-000186-Ba for ptxdist@pengutronix.de; Fri, 12 May 2023 13:36:40 +0200 From: Lucas Stach To: ptxdist@pengutronix.de Date: Fri, 12 May 2023 13:36:40 +0200 Message-Id: <20230512113640.1404877-1-l.stach@pengutronix.de> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [ptxdist] [PATCH] apitrace: revive from staging X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false - update to version 11.1 - add option to enable replay utilities Signed-off-by: Lucas Stach --- ...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 +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 +--- + 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 +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 +--- + 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