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 |

Reply via email to