Initial kernelshark

Signed-off-by: Zamir SUN <sztsian@gmail.com>
This commit is contained in:
Zamir SUN 2020-09-28 22:09:05 +08:00
parent 0c6a6fab8c
commit adc8398447
7 changed files with 260 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/trace-cmd-kernelshark-v1.1.tar.gz

View File

@ -0,0 +1,26 @@
From a0a28e0b5161203c7576a430ca12d11a16a88e74 Mon Sep 17 00:00:00 2001
From: Zamir SUN <sztsian@gmail.com>
Date: Thu, 24 Sep 2020 21:19:00 +0800
Subject: [PATCH] Do not install trace-cmd when only building kernelshark
Signed-off-by: Zamir SUN <sztsian@gmail.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index bbdf15e..a489fe8 100644
--- a/Makefile
+++ b/Makefile
@@ -338,7 +338,7 @@ install: install_cmd
@echo "Note: to install the gui, type \"make install_gui\""
@echo " to install man pages, type \"make install_doc\""
-install_gui: install_cmd gui
+install_gui: gui
$(Q)$(MAKE) $(S) -C $(kshark-dir)/build install
install_libs: libs
--
2.26.2

View File

@ -0,0 +1,32 @@
From afa8362e1b11a892a27e436d13616c7851f6e6d5 Mon Sep 17 00:00:00 2001
From: Zamir SUN <sztsian@gmail.com>
Date: Thu, 24 Sep 2020 21:13:12 +0800
Subject: [PATCH] kernel-shark: Fix dependency (symbol resolving) issue
Backport of
https://lore.kernel.org/linux-trace-devel/20200916065007.9755-4-y.karadz@gmail.com/raw
Signed-off-by: Zamir SUN <sztsian@gmail.com>
---
kernel-shark/src/CMakeLists.txt | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel-shark/src/CMakeLists.txt b/kernel-shark/src/CMakeLists.txt
index e20a030..7b47b92 100644
--- a/kernel-shark/src/CMakeLists.txt
+++ b/kernel-shark/src/CMakeLists.txt
@@ -7,8 +7,9 @@ add_library(kshark SHARED libkshark.c
libkshark-configio.c
libkshark-collection.c)
-target_link_libraries(kshark ${TRACEEVENT_LIBRARY}
- ${TRACECMD_LIBRARY}
+target_link_libraries(kshark ${TRACECMD_LIBRARY}
+ ${TRACEFS_LIBRARY}
+ ${TRACEEVENT_LIBRARY}
${JSONC_LIBRARY}
${CMAKE_DL_LIBS})
--
2.26.2

View File

@ -0,0 +1,98 @@
From 64adcc34f992e87500e96d8f692ce8b6b339cc9a Mon Sep 17 00:00:00 2001
From: "Ziqian SUN (Zamir)" <sztsian@gmail.com>
Date: Fri, 21 Feb 2020 21:57:13 +0800
Subject: KernelShark: Inherit libdir from Makefile
The trace-cmd makefile supports install lib into a different name like
lib64. Now this patch implemented the same in kernel-shark.
Link: http://lore.kernel.org/linux-trace-devel/20200221135713.323958-1-sztsian@gmail.com
Reviewed-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
Signed-off-by: Ziqian SUN (Zamir) <sztsian@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
Makefile | 2 +-
kernel-shark/CMakeLists.txt | 8 ++++++--
kernel-shark/src/CMakeLists.txt | 6 +++---
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index a3facaa..2f9620e 100644
--- a/Makefile
+++ b/Makefile
@@ -297,7 +297,7 @@ CMAKE_COMMAND = /usr/bin/cmake
BUILD_TYPE ?= RelWithDebInfo
$(kshark-dir)/build/Makefile: $(kshark-dir)/CMakeLists.txt
- $(Q) cd $(kshark-dir)/build && $(CMAKE_COMMAND) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -D_INSTALL_PREFIX=$(prefix) ..
+ $(Q) cd $(kshark-dir)/build && $(CMAKE_COMMAND) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -D_INSTALL_PREFIX=$(prefix) -D_LIBDIR=$(libdir) ..
gui: force $(CMD_TARGETS) $(kshark-dir)/build/Makefile
$(Q)$(MAKE) $(S) -C $(kshark-dir)/build
diff --git a/kernel-shark/CMakeLists.txt b/kernel-shark/CMakeLists.txt
index 8786b83..1c9ac2e 100644
--- a/kernel-shark/CMakeLists.txt
+++ b/kernel-shark/CMakeLists.txt
@@ -17,6 +17,10 @@ if (NOT _INSTALL_PREFIX)
set(_INSTALL_PREFIX "/usr/local")
endif (NOT _INSTALL_PREFIX)
+if (NOT _LIBDIR)
+ set(_LIBDIR "${_INSTALL_PREFIX}/lib")
+endif (NOT _LIBDIR)
+
include(${KS_DIR}/build/FindTraceCmd.cmake)
include(${KS_DIR}/build/FindJSONC.cmake)
@@ -54,14 +58,14 @@ if (NOT CMAKE_CXX_FLAGS_PACKAGE)
set(CMAKE_CXX_FLAGS_PACKAGE "-O3")
endif (NOT CMAKE_CXX_FLAGS_PACKAGE)
-set(KS_PLUGIN_INSTALL_PREFIX ${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/plugins/)
+set(KS_PLUGIN_INSTALL_PREFIX ${_LIBDIR}/${KS_APP_NAME}/plugins/)
set(KS_ICON KS_icon_shark.svg)
set(KS_ICON_FIN KS_icon_fin.svg)
set(KS_LOGO KS_logo_symbol.svg)
set(KS_LOGO_LABEL KS_logo_horizontal.svg)
-set(CMAKE_INSTALL_RPATH "${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/")
+set(CMAKE_INSTALL_RPATH "${_LIBDIR}/${KS_APP_NAME}/")
if (CMAKE_BUILD_TYPE MATCHES Package)
diff --git a/kernel-shark/src/CMakeLists.txt b/kernel-shark/src/CMakeLists.txt
index 33b5db8..9666b18 100644
--- a/kernel-shark/src/CMakeLists.txt
+++ b/kernel-shark/src/CMakeLists.txt
@@ -15,7 +15,7 @@ target_link_libraries(kshark ${TRACEEVENT_LIBRARY}
set_target_properties(kshark PROPERTIES SUFFIX ".so.${KS_VERSION_STRING}")
-install(TARGETS kshark LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/${KS_APP_NAME})
+install(TARGETS kshark LIBRARY DESTINATION ${_LIBDIR}/${KS_APP_NAME})
if (OPENGL_FOUND AND GLUT_FOUND)
@@ -29,7 +29,7 @@ if (OPENGL_FOUND AND GLUT_FOUND)
set_target_properties(kshark-plot PROPERTIES SUFFIX ".so.${KS_VERSION_STRING}")
- install(TARGETS kshark-plot LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/${KS_APP_NAME})
+ install(TARGETS kshark-plot LIBRARY DESTINATION ${_LIBDIR}/${KS_APP_NAME})
endif (OPENGL_FOUND AND GLUT_FOUND)
@@ -85,7 +85,7 @@ if (Qt5Widgets_FOUND AND Qt5Network_FOUND)
install(TARGETS ${KS_APP_NAME} kshark-record kshark-gui
RUNTIME DESTINATION ${_INSTALL_PREFIX}/bin/
- LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/)
+ LIBRARY DESTINATION ${_LIBDIR}/${KS_APP_NAME}/)
install(FILES "${KS_DIR}/${KS_APP_NAME}.desktop"
DESTINATION ${_INSTALL_PREFIX}/share/applications/)
--
cgit 1.2.3-1.el7

16
kernelshark.appdata.xml Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>kernelshark.desktop</id>
<metadata_license>GPL-2.0+</metadata_license>
<project_license>GPL-2.0 and LGPL-2.0</project_license>
<name>kernelsharl</name>
<summary>GUI analysis for Ftrace data captured by trace-cmd</summary>
<description>
<p>
KernelShark is a front end reader of trace-cmd output. "trace-cmd record" and "trace-cmd extract" create a trace.dat (trace-cmd.dat) file. kernelshark can read this file and produce a graph and list view of its data.
</p>
</description>
<url type="homepage">https://kernelshark.org/</url>
</component>

86
kernelshark.spec Normal file
View File

@ -0,0 +1,86 @@
Name: kernelshark
Version: 1.1
Release: 1%{?dist}
# As of 1.1, only kernelshark.cpp, kshark-record.cpp and examples are GPL-2.0. The rest of kernel-shark is LGPL-2.1.
# See SPDX identifier for most accurate info
License: GPLv2 and LGPLv2
Summary: GUI analysis for Ftrace data captured by trace-cmd
URL: https://kernelshark.org
Source0: https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/trace-cmd-kernelshark-v%{version}.tar.gz
Source1: %{name}.appdata.xml
# Patch0: https://lore.kernel.org/linux-trace-devel/20200916065007.9755-4-y.karadz@gmail.com/
Patch0: 0001-kernel-shark-Fix-dependency-symbol-resolving-issue.patch
# Patch1: Fedora only as of Sep 26, 2020. To be submitted in bulks to upstream later.
Patch1: 0001-Do-not-install-trace-cmd-when-only-building-kernelsh.patch
# Apply patch 2 to inherit libdir from Makefile, see https://lore.kernel.org/linux-trace-devel/20200221135713.323958-1-sztsian@gmail.com/
Patch2: 64adcc34f992e87500e96d8f692ce8b6b339cc9a.patch
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: doxygen
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: graphviz
BuildRequires: libappstream-glib
BuildRequires: pkgconf
BuildRequires: pkgconfig(glut)
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: trace-cmd-devel
BuildRequires: trace-cmd-libs
BuildRequires: xmlto
Requires: polkit
%description
KernelShark is a front end reader of trace-cmd output. "trace-cmd
record" and "trace-cmd extract" create a trace.dat (trace-cmd.dat)
file. kernelshark can read this file and produce a graph and list
view of its data.
%prep
%setup -q -n trace-cmd-%{name}-v%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%build
# MANPAGE_DOCBOOK_XSL define is hack to avoid using locate
# -z muldefs to workaround the enforcing multi definition check of gcc10.
# and it need to be removed once upstream fixed the variable name
# Do not use parallel compile because it makes compiling fail
MANPAGE_DOCBOOK_XSL=`rpm -ql docbook-style-xsl | grep manpages/docbook.xsl`
CFLAGS="%{optflags} -D_GNU_SOURCE" LDFLAGS="%{build_ldflags} -z muldefs" BUILD_TYPE=Release \
make -p V=9999999999 MANPAGE_DOCBOOK_XSL=$MANPAGE_DOCBOOK_XSL \
prefix=%{_prefix} libdir=%{_libdir} gui
%install
make libdir=%{_libdir} prefix=%{_prefix} V=1 DESTDIR=%{buildroot}/ CFLAGS="%{optflags} -D_GNU_SOURCE" LDFLAGS="%{build_ldflags} -z muldefs " BUILD_TYPE=Release install_gui
find %{buildroot}%{_datadir} -type f | xargs chmod u-x,g-x,o-x
find %{buildroot}%{_libdir} -type f -iname "*.so" | xargs chmod 0755
sed -i '/Version/d' %{buildroot}/%{_datadir}/applications/kernelshark.desktop
desktop-file-validate %{buildroot}/%{_datadir}/applications/kernelshark.desktop
mkdir -p %{buildroot}%{_metainfodir}/
cp %{SOURCE1} %{buildroot}%{_metainfodir}/
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdata.xml
%files
%license COPYING
%doc COPYING.LIB README
%{_bindir}/kernelshark
%{_bindir}/kshark-record
%{_bindir}/kshark-su-record
%dir %{_libdir}/kernelshark
%{_libdir}/kernelshark/*
%{_datadir}/applications/kernelshark.desktop
%dir %{_datadir}/icons/kernelshark
%{_datadir}/icons/kernelshark/*
%{_datadir}/polkit-1/actions/org.freedesktop.kshark-record.policy
%{_metainfodir}/%{name}.appdata.xml
%changelog
* Thu Sep 24 2020 Zamir SUN <sztsian@gmail.com> - 1.1-1
- Package kernelshark in a standalone package with 1.1

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (trace-cmd-kernelshark-v1.1.tar.gz) = b26ad1d07018682194d74fc1f39471d2bb3fe135974333157cc884a858c1146f2e42b49d74d5e654f1b8f018811e3e648780ac08a3e93d03e2a07f0a115a38dd