On Fri, May 12, 2023 at 01:36:40PM +0200, Lucas Stach wrote: > - update to version 11.1 > - add option to enable replay utilities > > Signed-off-by: Lucas Stach <l.st...@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.st...@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.st...@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.st...@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.st...@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
The system packages are (if available) and should still be used so keep this. > + 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 Please Patch this, so that zlib and libpng are not needed here. > + > +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 \ This is the default in PTXdist and should not be necessary. > + -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) On Debian, dpkg-architecture is used to determine an arch specific subdirectory. That needs to be patched, otherwise installing fails for me. Michael > > +#ifdef PTXCONFIG_APITRACE_REPLAY > + @$(call install_copy, apitrace, 0, 0, 0755, -, /usr/bin/eglretrace) > +#endif '#' is a comment in make. Just 'ifdef' / 'endif'. Michael > + > @$(call install_finish, apitrace) > > @$(call touch) > -- > 2.39.2 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |