mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Matt Turner <mattst88@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	James Clark <james.clark@linaro.org>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v8 0/3] perf tools: port UI from GTK2 to GTK4
Date: Wed, 9 Sep 2026 08:52:48 -0300	[thread overview]
Message-ID: <aqFIkFzVvCQqnzpy@x2> (raw)
In-Reply-To: <aqFGVejYb-kZ8o_I@x2>

On Wed, Sep 09, 2026 at 08:43:20AM -0300, Arnaldo Carvalho de Melo wrote:
> On Wed, Sep 09, 2026 at 08:35:20AM -0300, Arnaldo Carvalho de Melo wrote:
> > On Wed, Sep 09, 2026 at 08:29:52AM -0300, Arnaldo Carvalho de Melo wrote:
> > > On Wed, Sep 09, 2026 at 08:25:41AM -0300, Arnaldo Carvalho de Melo wrote:
> > > > patching file tools/perf/ui/setup.c
> > > > ⬢ [acme@toolbx perf-tools-next]$
> > > > 
> > > > I fixed it up quickly, now lets see the rest...
> > > 
> > > Trying to build with it with just the first patch in this series in it
> > > correctly discovers that the gtk4 devel files are not available but then
> > > proceed to try to include gtk code and thus fail, where it should just
> > > do what the feature detection states: disable gtk support but build
> > > successfully without it, I'm checking if this is a quick surgery.
> > 
> > This is a pre-existing condition, if I try without your series and
> > without gtk2 devel files, I get the same problem, so I'll now try to
> > build it with the required gtk4 devel files, we can fix this
> > pre-existing problem afterwards, its not a regression introduced by your
> > series.
> 
> Now, with GTK4=1 and trying to build the first patch after installing
> gtk4-devel on fedora 43 it fails to detect gtk4 support:
> 
> ⬢ [acme@toolbx perf-tools-next]$ m
> make: Entering directory '/home/acme/git/perf-tools-next/tools/perf'
>   BUILD:   Doing 'make -j32' parallel build
> 
> Auto-detecting system features:
> ...                                   libdw: [ on  ]
> ...                                   glibc: [ on  ]
> ...                                    gtk4: [ OFF ]
> ...                                  libelf: [ on  ]
> ...                                 libnuma: [ on  ]

I see, you do it with tools/perf being your cwd, I tried that and it
works now:

⬢ [acme@toolbx perf-tools-next]$ cd tools/perf/
⬢ [acme@toolbx perf]$ make GTK4=1
  BUILD:   Doing 'make -j32' parallel build

Auto-detecting system features:
...                                   libdw: [ on  ]
...                                   glibc: [ on  ]
...                                    gtk4: [ on  ]
...                                  libelf: [ on  ]
...                                 libnuma: [ on  ]
...                  numa_num_possible_cpus: [ on  ]
...                               libpython: [ on  ]
...                             libcapstone: [ on  ]
...                               llvm-perf: [ on  ]
...                                    zlib: [ on  ]
...                                    lzma: [ on  ]
...                                     bpf: [ on  ]
...                                  libaio: [ on  ]
...                                 libzstd: [ on  ]
...                              libopenssl: [ on  ]
...                                    rust: [ on  ]

  INSTALL libsubcmd_headers
  INSTALL libapi_headers
  PERF_VERSION = 7.3.rc2.g581f81a14c5c
  INSTALL libsymbol_headers
  GEN     perf-archive
  INSTALL libperf_headers
  GEN     perf-iostat
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/core.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/cpumap.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/threadmap.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/evsel.o
  INSTALL libbpf_headers
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/evlist.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/mmap.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/zalloc.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/xyarray.o
  CC      /home/acme/git/perf-tools-next/tools/perf/libperf/lib.o
  LD      /home/acme/git/perf-tools-next/tools/perf/libperf/libperf-in.o
  AR      /home/acme/git/perf-tools-next/tools/perf/libperf/libperf.a
  CC      ui/gtk/browser.o
  CC      jvmti/libjvmti.o
  CC      ui/gtk/hists.o
  CC      arch/common.o
  CC      ui/gtk/setup.o
  CC      trace/beauty/syscalltbl.o
  CC      ui/gtk/util.o
  CC      jvmti/jvmti_agent.o
  CC      ui/gtk/helpline.o
  CC      trace/beauty/arch_errno_names.o
  CC      jvmti/libstring.o
  CC      ui/gtk/progress.o
  CC      jvmti/libctype.o
  CC      ui/gtk/annotate.o
<SNIP>
  LD      perf-bench-in.o
  AR      libperf-bench.a
  LINK    perf
  LINK    libperf-gtk.so
⬢ [acme@toolbx perf]$

I don't think this was present before, lemme try...

My bad, I made a mistake and was trying to build with gtk4 while using
GTK2=1 on the make command line, that I had switched to test building
with gtk2 for that pre-existing problem and forgot to switch back to
GTK4=1 when returning to test your patches...

Now, with it it works as expected, using 'make GTK4=1 -C tools/perf',
building the first patch:

⬢ [acme@toolbx perf-tools-next]$ rm -rf /tmp/build/`basename $PWD` ; mkdir -p /tmp/build/`basename $PWD`
⬢ [acme@toolbx perf-tools-next]$ alias m='rm -rf ~/libexec/perf-core/ ; make -k GTK4=1 O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin && perf test import && cat /tmp/build/$(basename $PWD)/feature/test-all.make.output' ; export PYTHONPATH=/tmp/build/$(basename $PWD)/python
⬢ [acme@toolbx perf-tools-next]$ m
make: Entering directory '/home/acme/git/perf-tools-next/tools/perf'
  BUILD:   Doing 'make -j32' parallel build

Auto-detecting system features:
...                                   libdw: [ on  ]
...                                   glibc: [ on  ]
...                                    gtk4: [ on  ]
...                                  libelf: [ on  ]
...                                 libnuma: [ on  ]
...                  numa_num_possible_cpus: [ on  ]
...                               libpython: [ on  ]
...                             libcapstone: [ on  ]
...                               llvm-perf: [ on  ]
...                                    zlib: [ on  ]
...                                    lzma: [ on  ]
...                                     bpf: [ on  ]
...                                  libaio: [ on  ]
...                                 libzstd: [ on  ]
...                              libopenssl: [ on  ]
...                                    rust: [ on  ]

  CC      /tmp/build/perf-tools-next/dlfilters/dlfilter-test-api-v0.o
  CC      /tmp/build/perf-tools-next/dlfilters/dlfilter-test-api-v2.o
  CC      /tmp/build/perf-tools-next/dlfilters/dlfilter-show-cycles.o
  GEN     /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h
<SNIP>
  LINK    /tmp/build/perf-tools-next/perf
  LINK    /tmp/build/perf-tools-next/libperf-gtk.so
  GEN     /tmp/build/perf-tools-next/python/perf.cpython-314-x86_64-linux-gnu.so
  INSTALL GTK UI
  INSTALL binaries
  INSTALL tests
  INSTALL libperf-jvmti.so
  INSTALL libexec
  INSTALL perf-archive
  INSTALL perf-iostat
  INSTALL python-scripts
install: omitting directory 'scripts/python/Perf-Trace-Util/lib/Perf/Trace/__pycache__'
  INSTALL dlfilters
  INSTALL perf_completion-script
  INSTALL perf-tip
make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf'
104: 'import perf' in python                                                                                   : Ok

=== Test Summary ===
Passed main tests : 1
Passed subtests   : 0
Skipped tests     : 0
Failed tests      : 0
⬢ [acme@toolbx perf-tools-next]$ 

And, which makes me recall why we made t his a plugin :-)

⬢ [acme@toolbx perf-tools-next]$ ldd /tmp/build/perf-tools-next/libperf-gtk.so
	linux-vdso.so.1 (0x00007f8588fb8000)
	libgtk-4.so.1 => /lib64/libgtk-4.so.1 (0x00007f858854c000)
	libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x00007f8588539000)
	libpango-1.0.so.0 => /lib64/libpango-1.0.so.0 (0x00007f85884cd000)
	libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007f8588399000)
	libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x00007f858836b000)
	libcairo-gobject.so.2 => /lib64/libcairo-gobject.so.2 (0x00007f8588362000)
	libcairo.so.2 => /lib64/libcairo.so.2 (0x00007f8588222000)
	libvulkan.so.1 => /lib64/libvulkan.so.1 (0x00007f858819a000)
	libgraphene-1.0.so.0 => /lib64/libgraphene-1.0.so.0 (0x00007f858817d000)
	libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f8587faa000)
	libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f8587f4b000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f8587df4000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f8587c00000)
	libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f8587bfa000)
	libharfbuzz-subset.so.0 => /lib64/libharfbuzz-subset.so.0 (0x00007f8587ac5000)
	libfribidi.so.0 => /lib64/libfribidi.so.0 (0x00007f8587aa5000)
	libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f8587a55000)
	libepoxy.so.0 => /lib64/libepoxy.so.0 (0x00007f8587949000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f8587852000)
	libgstplay-1.0.so.0 => /lib64/libgstplay-1.0.so.0 (0x00007f858782e000)
	libgstvideo-1.0.so.0 => /lib64/libgstvideo-1.0.so.0 (0x00007f8587759000)
	libgstreamer-1.0.so.0 => /lib64/libgstreamer-1.0.so.0 (0x00007f8587600000)
	libgstgl-1.0.so.0 => /lib64/libgstgl-1.0.so.0 (0x00007f858756d000)
	libgstallocators-1.0.so.0 => /lib64/libgstallocators-1.0.so.0 (0x00007f8587564000)
	librsvg-2.so.2 => /lib64/librsvg-2.so.2 (0x00007f85870a0000)
	libXi.so.6 => /lib64/libXi.so.6 (0x00007f858708d000)
	libX11.so.6 => /lib64/libX11.so.6 (0x00007f8586f48000)
	libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x00007f8586f2c000)
	libtinysparql-3.0.so.0 => /lib64/libtinysparql-3.0.so.0 (0x00007f8586e58000)
	libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f8586e1c000)
	libtiff.so.6 => /lib64/libtiff.so.6 (0x00007f8586d83000)
	libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007f8586ce1000)
	libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007f8586c88000)
	libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x00007f8586c78000)
	libwayland-egl.so.1 => /lib64/libwayland-egl.so.1 (0x00007f8586c74000)
	libXext.so.6 => /lib64/libXext.so.6 (0x00007f8586c60000)
	libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007f8586c51000)
	libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007f8586c4d000)
	libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007f8586c46000)
	libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007f8586c39000)
	libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007f8586c35000)
	libcairo-script-interpreter.so.2 => /lib64/libcairo-script-interpreter.so.2 (0x00007f8586c12000)
	libcups.so.2 => /lib64/libcups.so.2 (0x00007f8586b7c000)
	libcolord.so.2 => /lib64/libcolord.so.2 (0x00007f8586b21000)
	libthai.so.0 => /lib64/libthai.so.0 (0x00007f8586b16000)
	libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f8586a4c000)
	libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007f8586a2d000)
	libglycin-2.so.0 => /lib64/libglycin-2.so.0 (0x00007f858660b000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f85865e3000)
	libXrender.so.1 => /lib64/libXrender.so.1 (0x00007f85865d7000)
	libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f85865ad000)
	libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007f858659e000)
	libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007f858659a000)
	libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007f85864e9000)
	libmount.so.1 => /lib64/libmount.so.1 (0x00007f8586493000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f8586462000)
	libffi.so.8 => /lib64/libffi.so.8 (0x00007f8586452000)
	libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f85863a5000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8588fba000)
	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f8586245000)
	libgsttag-1.0.so.0 => /lib64/libgsttag-1.0.so.0 (0x00007f8586206000)
	libgstpbutils-1.0.so.0 => /lib64/libgstpbutils-1.0.so.0 (0x00007f85861c1000)
	libgstbase-1.0.so.0 => /lib64/libgstbase-1.0.so.0 (0x00007f858613d000)
	liborc-0.4.so.0 => /lib64/liborc-0.4.so.0 (0x00007f8586099000)
	libunwind.so.8 => /lib64/libunwind.so.8 (0x00007f858607c000)
	libdw.so.1 => /lib64/libdw.so.1 (0x00007f8585fdf000)
	libEGL.so.1 => /lib64/libEGL.so.1 (0x00007f8585fce000)
	libGLX.so.0 => /lib64/libGLX.so.0 (0x00007f8585f9d000)
	libwayland-cursor.so.0 => /lib64/libwayland-cursor.so.0 (0x00007f8585f93000)
	libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007f8585f8f000)
	libgudev-1.0.so.0 => /lib64/libgudev-1.0.so.0 (0x00007f8585f80000)
	libdrm.so.2 => /lib64/libdrm.so.2 (0x00007f8585f69000)
	libgbm.so.1 => /lib64/libgbm.so.1 (0x00007f8585f63000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f8585f37000)
	libdav1d.so.7 => /lib64/libdav1d.so.7 (0x00007f8585d53000)
	libjson-glib-1.0.so.0 => /lib64/libjson-glib-1.0.so.0 (0x00007f8585d26000)
	libsqlite3.so.0 => /lib64/libsqlite3.so.0 (0x00007f8585bac000)
	libwebp.so.7 => /lib64/libwebp.so.7 (0x00007f8585b26000)
	libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f8585a63000)
	libLerc.so.4 => /lib64/libLerc.so.4 (0x00007f85859ce000)
	libjbig.so.2.1 => /lib64/libjbig.so.2.1 (0x00007f85859c0000)
	liblzo2.so.2 => /lib64/liblzo2.so.2 (0x00007f8585998000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f8585941000)
	libavahi-common.so.3 => /lib64/libavahi-common.so.3 (0x00007f8585932000)
	libavahi-client.so.3 => /lib64/libavahi-client.so.3 (0x00007f858591e000)
	libgnutls.so.30 => /lib64/libgnutls.so.30 (0x00007f8585679000)
	liblcms2.so.2 => /lib64/liblcms2.so.2 (0x00007f858560f000)
	libudev.so.1 => /lib64/libudev.so.1 (0x00007f85855c5000)
	libdatrie.so.1 => /lib64/libdatrie.so.1 (0x00007f85855bd000)
	libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f85855a9000)
	libbrotlidec.so.1 => /lib64/libbrotlidec.so.1 (0x00007f858559b000)
	libseccomp.so.2 => /lib64/libseccomp.so.2 (0x00007f858556f000)
	libXau.so.6 => /lib64/libXau.so.6 (0x00007f858556a000)
	libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f8585530000)
	liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f85854fb000)
	libgstaudio-1.0.so.0 => /lib64/libgstaudio-1.0.so.0 (0x00007f8585476000)
	libelf.so.1 => /lib64/libelf.so.1 (0x00007f8585457000)
	libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f85853df000)
	libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f85853b4000)
	libsharpyuv.so.0 => /lib64/libsharpyuv.so.0 (0x00007f85853ac000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f8585134000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f8585067000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f858504f000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f8585049000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f8585039000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f8585033000)
	libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f8584af1000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f8584adc000)
	libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f8584a88000)
	libp11-kit.so.0 => /lib64/libp11-kit.so.0 (0x00007f85848fb000)
	libidn2.so.0 => /lib64/libidn2.so.0 (0x00007f85848ab000)
	libunistring.so.5 => /lib64/libunistring.so.5 (0x00007f85846fe000)
	libtasn1.so.6 => /lib64/libtasn1.so.6 (0x00007f85846e6000)
	libhogweed.so.6 => /lib64/libhogweed.so.6 (0x00007f85846a3000)
	libnettle.so.8 => /lib64/libnettle.so.8 (0x00007f858464d000)
	libgmp.so.10 => /lib64/libgmp.so.10 (0x00007f85845a6000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f858459a000)
	libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1 (0x00007f8584577000)
	libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f858444d000)
⬢ [acme@toolbx perf-tools-next]$



  reply	other threads:[~2026-09-09 11:52 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-09  2:50 Matt Turner
2026-09-09  2:50 ` [PATCH v8 1/3] tools: port perf ui from GTK 2 to GTK 4 Matt Turner
2026-09-09  2:50 ` [PATCH v8 2/3] perf tools: make the GTK4 report browser actually loadable at runtime Matt Turner
2026-09-09  2:50 ` [PATCH v8 3/3] perf tools gtk: fix two hierarchy-view stack buffer overflows Matt Turner
2026-09-09 11:13 ` [PATCH v8 0/3] perf tools: port UI from GTK2 to GTK4 Arnaldo Carvalho de Melo
2026-09-09 11:25   ` Arnaldo Carvalho de Melo
2026-09-09 11:29     ` Arnaldo Carvalho de Melo
2026-09-09 11:35       ` Arnaldo Carvalho de Melo
2026-09-09 11:43         ` Arnaldo Carvalho de Melo
2026-09-09 11:52           ` Arnaldo Carvalho de Melo [this message]
2026-09-09 20:02             ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aqFIkFzVvCQqnzpy@x2 \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mattst88@gmail.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®