From dd3de3d81ba1f2284b5b70a5aeca80ec52bdddc1 Mon Sep 17 00:00:00 2001 From: jengelh <> Date: Nov 09 2023 20:51:11 +0000 Subject: Update libtracecmd to version 1.4.0 / rev 6 via SR 1124723 https://build.opensuse.org/request/show/1124723 by user jengelh + anag+factory - Update to release 1.4.0 --- diff --git a/.files b/.files index 60c598b..4c1c84c 100644 Binary files a/.files and b/.files differ diff --git a/.rev b/.rev index 11142cd..2c0ce42 100644 --- a/.rev +++ b/.rev @@ -39,4 +39,12 @@ - Sync meson build patch with latest upstream version 1063769 + + c8871a28564ec2d978e2bebe96cb1cbe + 1.4.0 + + anag+factory + - Update to release 1.4.0 + 1124723 + diff --git a/0001-libtracecmd-Add-initial-support-for-meson.patch b/0001-libtracecmd-Add-initial-support-for-meson.patch deleted file mode 100644 index 782672a..0000000 --- a/0001-libtracecmd-Add-initial-support-for-meson.patch +++ /dev/null @@ -1,527 +0,0 @@ -From 65c293138541c3c59e4d9be4912303f2584db8ba Mon Sep 17 00:00:00 2001 -From: Daniel Wagner -Date: Wed, 21 Dec 2022 11:54:17 +0100 -Subject: [PATCH v7 1/2] libtracecmd: Add initial support for meson - -Add support for building the project with meson. - -As libtracecmd lives in the same source tree as trace-cmd, we have -to place the 'top' meson.builld file under lib but we can't reference -it from the root meson.build which controlling the main trace-cmd -build. - -This implies we can't access resources/path which are not below the -library's main meson.build directly. Thus, to be able to build the -documentation we have to use the symlink as workaround. - -Signed-off-by: Daniel Wagner ---- - Documentation/libtracecmd/install-docs.sh.in | 20 +++ - Documentation/libtracecmd/meson.build | 168 +++++++++++++++++++ - lib/Documentation | 1 + - lib/check-manpages.sh | 1 + - lib/meson.build | 114 +++++++++++++ - lib/meson_options.txt | 19 +++ - lib/trace-cmd/include/meson.build | 5 + - lib/trace-cmd/include/private/meson.build | 14 ++ - lib/trace-cmd/meson.build | 88 ++++++++++ - 9 files changed, 430 insertions(+) - create mode 100755 Documentation/libtracecmd/install-docs.sh.in - create mode 100644 Documentation/libtracecmd/meson.build - create mode 120000 lib/Documentation - create mode 120000 lib/check-manpages.sh - create mode 100644 lib/meson.build - create mode 100644 lib/meson_options.txt - create mode 100644 lib/trace-cmd/include/meson.build - create mode 100644 lib/trace-cmd/include/private/meson.build - create mode 100644 lib/trace-cmd/meson.build - -diff --git a/Documentation/libtracecmd/install-docs.sh.in b/Documentation/libtracecmd/install-docs.sh.in -new file mode 100755 -index 000000000000..eca9b1f42dcc ---- /dev/null -+++ b/Documentation/libtracecmd/install-docs.sh.in -@@ -0,0 +1,20 @@ -+#!/bin/bash -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+for section in 1 3 5; do -+ while IFS= read -r -d '' man; do -+ [ ! -d "${DESTDIR}@MANDIR@/man${section}" ] && install -d "${DESTDIR}@MANDIR@/man${section}" -+ -+ echo Installing "${man}" to "${DESTDIR}@MANDIR@/man${section}" -+ install -m 0644 "${man}" "${DESTDIR}@MANDIR@/man${section}/" -+ done< <(find "@SRCDIR@" -name "*\.${section}" -type f -print0) -+done -+ -+while IFS= read -r -d '' html; do -+ [ ! -d "${DESTDIR}@HTMLDIR@" ] && install -d "${DESTDIR}@HTMLDIR@" -+ -+ echo Installing "${html}" to "${DESTDIR}@HTMLDIR@" -+ install -m 0644 "${html}" "${DESTDIR}@HTMLDIR@" -+done< <(find "@SRCDIR@" -name "*\.html" -type f -print0) -diff --git a/Documentation/libtracecmd/meson.build b/Documentation/libtracecmd/meson.build -new file mode 100644 -index 000000000000..c9fb16676812 ---- /dev/null -+++ b/Documentation/libtracecmd/meson.build -@@ -0,0 +1,168 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+# input text file: man page section -+ -+sources = { -+ 'libtracecmd-files.txt': '3', -+ 'libtracecmd-instances.txt': '3', -+ 'libtracecmd-iterate.txt': '3', -+ 'libtracecmd-log.txt': '3', -+ 'libtracecmd-maps.txt': '3', -+ 'libtracecmd-peer.txt': '3', -+ 'libtracecmd-record.txt': '3', -+ 'libtracecmd-timestamp.txt': '3', -+ 'libtracecmd.txt': '3', -+} -+ -+confdir = meson.current_source_dir() + '/../' -+top_source_dir = meson.current_source_dir() + '/../../' -+ -+# -+# For asciidoc ... -+# -7.1.2, no extra settings are needed. -+# 8.0-, set ASCIIDOC8. -+# -+ -+# -+# For docbook-xsl ... -+# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0) -+# 1.69.0, no extra settings are needed? -+# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? -+# 1.71.1, no extra settings are needed? -+# 1.72.0, set DOCBOOK_XSL_172. -+# 1.73.0-, set ASCIIDOC_NO_ROFF -+# -+ -+# -+# If you had been using DOCBOOK_XSL_172 in an attempt to get rid -+# of 'the ".ft C" problem' in your generated manpages, and you -+# instead ended up with weird characters around callouts, try -+# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8). -+# -+ -+if get_option('asciidoctor') -+ asciidoc = find_program('asciidoctor') -+ asciidoc_extra = ['-a', 'compat-mode'] -+ asciidoc_extra += ['-I.'] -+ asciidoc_extra += ['-r', 'asciidoctor-extensions'] -+ asciidoc_extra += ['-a', 'mansource=libtraceevent'] -+ asciidoc_extra += ['-a', 'manmanual="libtraceevent Manual"'] -+ asciidoc_html = 'xhtml5' -+else -+ asciidoc = find_program('asciidoc') -+ asciidoc_extra = ['--unsafe'] -+ asciidoc_extra += ['-f', confdir + 'asciidoc.conf'] -+ asciidoc_html = 'xhtml11' -+ -+ r = run_command(asciidoc, '--version', check: true) -+ v = r.stdout().strip() -+ if v.version_compare('>=8.0') -+ asciidoc_extra += ['-a', 'asciidoc7compatible'] -+ endif -+endif -+ -+manpage_xsl = confdir + 'manpage-normal.xsl' -+ -+if get_option('docbook-xls-172') -+ asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] -+ manpage_xsl = confdir + 'manpage-1.72.xsl' -+elif get_option('asciidoc-no-roff') -+ # docbook-xsl after 1.72 needs the regular XSL, but will not -+ # pass-thru raw roff codes from asciidoc.conf, so turn them off. -+ asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] -+endif -+ -+xmlto = find_program('xmlto') -+xmlto_extra = [] -+ -+if get_option('man-bold-literal') -+ xmlto_extra += ['-m ', confdir + 'manpage-bold-literal.xsl'] -+endif -+ -+if get_option('docbook-suppress-sp') -+ xmlto_extra += ['-m ', confdir + 'manpage-suppress-sp.xsl'] -+endif -+ -+check_doc = custom_target( -+ 'check-doc', -+ output: 'dummy', -+ command : [ -+ top_source_dir + 'check-manpages.sh', -+ meson.current_source_dir()]) -+ -+gen = generator( -+ asciidoc, -+ output: '@BASENAME@.xml', -+ arguments: [ -+ '-b', 'docbook', -+ '-d', 'manpage', -+ '-a', 'libtraceevent_version=' + meson.project_version(), -+ '-o', '@OUTPUT@'] -+ + asciidoc_extra -+ + ['@INPUT@']) -+ -+man = [] -+html = [] -+foreach txt, section : sources -+ # build man page(s) -+ xml = gen.process(txt) -+ man += custom_target( -+ txt.underscorify() + '_man', -+ input: xml, -+ output: '@BASENAME@.' + section, -+ depends: check_doc, -+ command: [ -+ xmlto, -+ '-m', manpage_xsl, -+ 'man', -+ '-o', '@OUTPUT@'] -+ + xmlto_extra -+ + ['@INPUT@']) -+ -+ # build html pages -+ html += custom_target( -+ txt.underscorify() + '_html', -+ input: txt, -+ output: '@BASENAME@.html', -+ depends: check_doc, -+ command: [ -+ asciidoc, -+ '-b', asciidoc_html, -+ '-d', 'manpage', -+ '-a', 'libtraceevent_version=' + meson.project_version(), -+ '-o', '@OUTPUT@'] -+ + asciidoc_extra -+ + ['@INPUT@']) -+endforeach -+ -+# Install path workaround because: -+# -+# - xmlto might generate more than one file and we would to tell meson -+# about those output files. We could figure out which files are generated -+# (see sed match in check-manpages.sh). -+# -+# - The man page generation puts all the generated files under sub dirs -+# and it's not obvious how to tell Meson it should not do this without -+# causing the install step to fail (confusion where the generated files -+# are stored) -+# -+# - The documentation build is not part of the 'build' target. The user -+# has explicitly to trigger the doc build. Hence the documentation is -+# not added to the 'install' target. -+# -+# Thus just use a plain old shell script to move the generated files to the -+# right location. -+ -+conf = configuration_data() -+conf.set('SRCDIR', meson.current_build_dir()) -+conf.set('MANDIR', mandir) -+conf.set('HTMLDIR', htmldir) -+configure_file( -+ input: 'install-docs.sh.in', -+ output: 'install-docs.sh', -+ configuration: conf) -+ -+meson.add_install_script( -+ join_paths(meson.current_build_dir(), 'install-docs.sh')) -diff --git a/lib/Documentation b/lib/Documentation -new file mode 120000 -index 000000000000..fb996f28ab31 ---- /dev/null -+++ b/lib/Documentation -@@ -0,0 +1 @@ -+../Documentation -\ No newline at end of file -diff --git a/lib/check-manpages.sh b/lib/check-manpages.sh -new file mode 120000 -index 000000000000..d9416662eaed ---- /dev/null -+++ b/lib/check-manpages.sh -@@ -0,0 +1 @@ -+../check-manpages.sh -\ No newline at end of file -diff --git a/lib/meson.build b/lib/meson.build -new file mode 100644 -index 000000000000..3906b3d27f24 ---- /dev/null -+++ b/lib/meson.build -@@ -0,0 +1,114 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+project( -+ 'libtracecmd', ['c'], -+ meson_version: '>= 0.50.0', -+ license: 'GPL-2.0', -+ version: '1.3.0', -+ default_options: [ -+ 'c_std=gnu99', -+ 'buildtype=debug', -+ 'default_library=both', -+ 'prefix=/usr/local', -+ 'warning_level=1']) -+ -+cc = meson.get_compiler('c') -+ -+prefixdir = get_option('prefix') -+mandir = join_paths(prefixdir, get_option('mandir')) -+htmldir = join_paths(prefixdir, get_option('htmldir')) -+ -+libtracecmd_standalone_build = true -+ -+library_version = meson.project_version() -+ -+conf = configuration_data() -+ -+libtraceevent_dep = dependency('libtraceevent', version: '>= 1.5.0', required: true) -+libtracefs_dep = dependency('libtracefs', version: '>= 1.6.0', required: true) -+ -+zlib_dep = dependency('zlib', required: false) -+conf.set('HAVE_ZLIB', zlib_dep.found(), description: 'Is zlib avialable?') -+ -+libzstd_dep = dependency('libzstd', version: '>= 1.4.0', required: false) -+conf.set('HAVE_ZSTD', libzstd_dep.found(), description: 'Is libzstd available?') -+ -+cunit_dep = dependency('cunit', required : false) -+ -+vsock_defined = get_option('vsock') and cc.has_header('linux/vm_sockets.h') -+conf.set('VSOCK', vsock_defined, description: 'Is vsock available?') -+ -+perf_defined = cc.has_header('linux/perf_event.h') -+conf.set('PERF', perf_defined, description: 'Is perf available?') -+ -+have_ptrace = get_option('ptrace') and cc.compiles( -+ ''' -+ #include -+ #include -+ -+ int main (void) -+ { -+ int ret; -+ ret = ptrace(PTRACE_ATTACH, 0, NULL, 0); -+ ptrace(PTRACE_TRACEME, 0, NULL, 0); -+ ptrace(PTRACE_GETSIGINFO, 0, NULL, NULL); -+ ptrace(PTRACE_GETEVENTMSG, 0, NULL, NULL); -+ ptrace(PTRACE_SETOPTIONS, NULL, NULL, -+ PTRACE_O_TRACEFORK | -+ PTRACE_O_TRACEVFORK | -+ PTRACE_O_TRACECLONE | -+ PTRACE_O_TRACEEXIT); -+ ptrace(PTRACE_CONT, NULL, NULL, 0); -+ ptrace(PTRACE_DETACH, 0, NULL, NULL); -+ ptrace(PTRACE_SETOPTIONS, 0, NULL, -+ PTRACE_O_TRACEFORK | -+ PTRACE_O_TRACEVFORK | -+ PTRACE_O_TRACECLONE | -+ PTRACE_O_TRACEEXIT); -+ return ret; -+ } -+ ''', -+ name: 'ptrace') -+if not have_ptrace -+ conf.set10('NO_PTRACE', true, description: 'Is ptrace missing?') -+ conf.set('WARN_NO_PTRACE', true, description: 'Issue no ptrace warning?') -+endif -+ -+audit_dep = dependency('audit', required: false) -+if not audit_dep.found() -+ conf.set10('NO_AUDIT', true, description: 'Is audit missing?') -+ conf.set('WARN_NO_AUDIT', true, description: 'Issue no audit warning?') -+endif -+ -+add_project_arguments( -+ [ -+ '-D_GNU_SOURCE', -+ '-include', 'trace-cmd/include/private/config.h', -+ ], -+ language : 'c') -+ -+libtracecmd_ext_incdir = include_directories( -+ [ -+ '../include', -+ '../include/trace-cmd', -+ '../tracecmd/include' -+ ]) -+ -+subdir('trace-cmd/include') -+subdir('trace-cmd/include/private') -+subdir('trace-cmd') -+if libtracecmd_standalone_build -+ subdir('Documentation/libtracecmd') -+ -+ custom_target( -+ 'docs', -+ output: 'docs', -+ depends: [html, man], -+ command: ['echo']) -+endif -+ -+install_headers( -+ '../include/trace-cmd/trace-cmd.h', -+ subdir: 'trace-cmd') -diff --git a/lib/meson_options.txt b/lib/meson_options.txt -new file mode 100644 -index 000000000000..9f5ed6d486d8 ---- /dev/null -+++ b/lib/meson_options.txt -@@ -0,0 +1,19 @@ -+# -*- mode: meson -*- -+# SPDX-License-Identifier: LGPL-2.1 -+ -+option('vsock', type : 'boolean', value : true, -+ description : 'build with vsock support') -+option('ptrace', type : 'boolean', value : true, -+ description : 'build with ptrace support') -+option('htmldir', type : 'string', value : 'share/doc/libtracecmd-doc', -+ description : 'directory for HTML documentation') -+option('asciidoctor', type : 'boolean', value: false, -+ description : 'use asciidoctor instead of asciidoc') -+option('docbook-xls-172', type : 'boolean', value : false, -+ description : 'enable docbook XLS 172 workaround') -+option('asciidoc-no-roff', type : 'boolean', value : false, -+ description : 'enable no roff workaround') -+option('man-bold-literal', type : 'boolean', value : false, -+ description : 'enable bold literals') -+option('docbook-suppress-sp', type : 'boolean', value : false, -+ description : 'docbook suppress sp') -diff --git a/lib/trace-cmd/include/meson.build b/lib/trace-cmd/include/meson.build -new file mode 100644 -index 000000000000..c1c83884948f ---- /dev/null -+++ b/lib/trace-cmd/include/meson.build -@@ -0,0 +1,5 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+libtracecmd_incdir = include_directories(['.']) -diff --git a/lib/trace-cmd/include/private/meson.build b/lib/trace-cmd/include/private/meson.build -new file mode 100644 -index 000000000000..0f36339a9cc3 ---- /dev/null -+++ b/lib/trace-cmd/include/private/meson.build -@@ -0,0 +1,14 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+config_h = configure_file( -+ output: 'config.h', -+ configuration: conf -+) -+ -+libtracecmd_private_incdir = include_directories(['.']) -+ -+config_dep = declare_dependency( -+ include_directories : libtracecmd_private_incdir, -+ sources: config_h) -diff --git a/lib/trace-cmd/meson.build b/lib/trace-cmd/meson.build -new file mode 100644 -index 000000000000..8c00ca8f8ff7 ---- /dev/null -+++ b/lib/trace-cmd/meson.build -@@ -0,0 +1,88 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+sources = [ -+ 'trace-hash.c', -+ 'trace-hooks.c', -+ 'trace-input.c', -+ 'trace-output.c', -+ 'trace-recorder.c', -+ 'trace-util.c', -+ 'trace-filter-hash.c', -+ 'trace-filter.c', -+ 'trace-msg.c', -+ 'trace-plugin.c', -+ 'trace-maps.c', -+ 'trace-timesync.c', -+ 'trace-timesync-ptp.c', -+ 'trace-compress.c', -+ 'trace-blk-hack.c', -+ 'trace-ftrace.c', -+] -+ -+if perf_defined -+ sources += 'trace-perf.c' -+endif -+ -+if vsock_defined -+ sources += 'trace-timesync-kvm.c' -+endif -+ -+if zlib_dep.found() -+ sources += 'trace-compress-zlib.c' -+endif -+ -+if libzstd_dep.found() -+ sources += 'trace-compress-zstd.c' -+endif -+ -+if libtracecmd_standalone_build -+ libtracecmd = library( -+ 'tracecmd', -+ sources, -+ version: library_version, -+ dependencies: [ -+ libtraceevent_dep, -+ libtracefs_dep, -+ zlib_dep, -+ libzstd_dep, -+ audit_dep], -+ include_directories: [ -+ libtracecmd_incdir, -+ libtracecmd_private_incdir, -+ libtracecmd_ext_incdir], -+ install: true) -+ -+ pkg = import('pkgconfig') -+ pkg.generate( -+ libtracecmd, -+ subdirs: 'trace-cmd', -+ libraries: [ -+ libtracefs_dep, -+ libtraceevent_dep], -+ filebase: meson.project_name(), -+ name: meson.project_name(), -+ version: meson.project_version(), -+ description: 'Library for creating and reading trace-cmd data files', -+ url: 'https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/') -+ -+ libtracecmd_dep = declare_dependency( -+ include_directories: ['.'], -+ link_with: libtracecmd) -+else -+ static_libtracecmd = static_library( -+ 'tracecmd', -+ sources, -+ dependencies: [ -+ libtraceevent_dep, -+ libtracefs_dep, -+ zlib_dep, -+ libzstd_dep, -+ audit_dep], -+ include_directories: [ -+ libtracecmd_incdir, -+ libtracecmd_private_incdir, -+ libtracecmd_ext_incdir], -+ install: false) -+endif --- -2.39.1 - diff --git a/0002-trace-cmd-Add-initial-support-for-meson.patch b/0002-trace-cmd-Add-initial-support-for-meson.patch deleted file mode 100644 index d553574..0000000 --- a/0002-trace-cmd-Add-initial-support-for-meson.patch +++ /dev/null @@ -1,609 +0,0 @@ -From b3c6d850169425c2cc58c8455f6c560de4be3a47 Mon Sep 17 00:00:00 2001 -From: Daniel Wagner -Date: Wed, 21 Dec 2022 14:15:02 +0100 -Subject: [PATCH v7 2/2] trace-cmd: Add initial support for meson - -Add support for building the project with meson. - -trace-cmd depends on a statically linked libtracecmd -(e.g. trace_perf_open, trace_perf_close, trace_perf_init). - -Instead depending libtracecmd to be compiled and installed -separately add libtracecmd directly to trace-cmd build. This -avoids an additional step. - -We still are able to build libtracecmd as stand alone project. -The top meson.build file just lives in the lib directory. - -Signed-off-by: Daniel Wagner ---- - Documentation/trace-cmd/install-docs.sh.in | 20 +++ - Documentation/trace-cmd/meson.build | 187 +++++++++++++++++++++ - meson-vcs-tag.sh | 17 ++ - meson.build | 149 ++++++++++++++++ - meson_options.txt | 23 +++ - python/meson.build | 40 +++++ - tracecmd/meson.build | 59 +++++++ - utest/meson.build | 26 +++ - 8 files changed, 521 insertions(+) - create mode 100755 Documentation/trace-cmd/install-docs.sh.in - create mode 100644 Documentation/trace-cmd/meson.build - create mode 100755 meson-vcs-tag.sh - create mode 100644 meson.build - create mode 100644 meson_options.txt - create mode 100644 python/meson.build - create mode 100644 tracecmd/meson.build - create mode 100644 utest/meson.build - -diff --git a/Documentation/trace-cmd/install-docs.sh.in b/Documentation/trace-cmd/install-docs.sh.in -new file mode 100755 -index 000000000000..eca9b1f42dcc ---- /dev/null -+++ b/Documentation/trace-cmd/install-docs.sh.in -@@ -0,0 +1,20 @@ -+#!/bin/bash -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+for section in 1 3 5; do -+ while IFS= read -r -d '' man; do -+ [ ! -d "${DESTDIR}@MANDIR@/man${section}" ] && install -d "${DESTDIR}@MANDIR@/man${section}" -+ -+ echo Installing "${man}" to "${DESTDIR}@MANDIR@/man${section}" -+ install -m 0644 "${man}" "${DESTDIR}@MANDIR@/man${section}/" -+ done< <(find "@SRCDIR@" -name "*\.${section}" -type f -print0) -+done -+ -+while IFS= read -r -d '' html; do -+ [ ! -d "${DESTDIR}@HTMLDIR@" ] && install -d "${DESTDIR}@HTMLDIR@" -+ -+ echo Installing "${html}" to "${DESTDIR}@HTMLDIR@" -+ install -m 0644 "${html}" "${DESTDIR}@HTMLDIR@" -+done< <(find "@SRCDIR@" -name "*\.html" -type f -print0) -diff --git a/Documentation/trace-cmd/meson.build b/Documentation/trace-cmd/meson.build -new file mode 100644 -index 000000000000..d0cc3076d985 ---- /dev/null -+++ b/Documentation/trace-cmd/meson.build -@@ -0,0 +1,187 @@ -+# SPDX-License-Identifier: LGPL-2.1 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+# input text file: man page section -+ -+sources = { -+ 'trace-cmd.1.txt': '1', -+ 'trace-cmd-agent.1.txt': '1', -+ 'trace-cmd-check-events.1.txt': '1', -+ 'trace-cmd-clear.1.txt': '1', -+ 'trace-cmd-convert.1.txt': '1', -+ 'trace-cmd.dat.v6.5.txt': '5', -+ 'trace-cmd.dat.v7.5.txt': '5', -+ 'trace-cmd-dump.1.txt': '1', -+ 'trace-cmd-extract.1.txt': '1', -+ 'trace-cmd-hist.1.txt': '1', -+ 'trace-cmd-list.1.txt': '1', -+ 'trace-cmd-listen.1.txt': '1', -+ 'trace-cmd-mem.1.txt': '1', -+ 'trace-cmd-options.1.txt': '1', -+ 'trace-cmd-profile.1.txt': '1', -+ 'trace-cmd-record.1.txt': '1', -+ 'trace-cmd-report.1.txt': '1', -+ 'trace-cmd-reset.1.txt': '1', -+ 'trace-cmd-restore.1.txt': '1', -+ 'trace-cmd-set.1.txt': '1', -+ 'trace-cmd-show.1.txt': '1', -+ 'trace-cmd-snapshot.1.txt': '1', -+ 'trace-cmd-split.1.txt': '1', -+ 'trace-cmd-stack.1.txt': '1', -+ 'trace-cmd-start.1.txt': '1', -+ 'trace-cmd-stat.1.txt': '1', -+ 'trace-cmd-stop.1.txt': '1', -+ 'trace-cmd-stream.1.txt': '1', -+} -+ -+confdir = meson.current_source_dir() + '/../' -+top_source_dir = meson.current_source_dir() + '/../../' -+ -+# -+# For asciidoc ... -+# -7.1.2, no extra settings are needed. -+# 8.0-, set ASCIIDOC8. -+# -+ -+# -+# For docbook-xsl ... -+# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0) -+# 1.69.0, no extra settings are needed? -+# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? -+# 1.71.1, no extra settings are needed? -+# 1.72.0, set DOCBOOK_XSL_172. -+# 1.73.0-, set ASCIIDOC_NO_ROFF -+# -+ -+# -+# If you had been using DOCBOOK_XSL_172 in an attempt to get rid -+# of 'the ".ft C" problem' in your generated manpages, and you -+# instead ended up with weird characters around callouts, try -+# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8). -+# -+ -+if get_option('asciidoctor') -+ asciidoc = find_program('asciidoctor') -+ asciidoc_extra = ['-a', 'compat-mode'] -+ asciidoc_extra += ['-I.'] -+ asciidoc_extra += ['-r', 'asciidoctor-extensions'] -+ asciidoc_extra += ['-a', 'mansource=libtraceevent'] -+ asciidoc_extra += ['-a', 'manmanual="libtraceevent Manual"'] -+ asciidoc_html = 'xhtml5' -+else -+ asciidoc = find_program('asciidoc') -+ asciidoc_extra = ['--unsafe'] -+ asciidoc_extra += ['-f', confdir + 'asciidoc.conf'] -+ asciidoc_html = 'xhtml11' -+ -+ r = run_command(asciidoc, '--version', check: true) -+ v = r.stdout().strip() -+ if v.version_compare('>=8.0') -+ asciidoc_extra += ['-a', 'asciidoc7compatible'] -+ endif -+endif -+ -+manpage_xsl = confdir + 'manpage-normal.xsl' -+ -+if get_option('docbook-xls-172') -+ asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] -+ manpage_xsl = confdir + 'manpage-1.72.xsl' -+elif get_option('asciidoc-no-roff') -+ # docbook-xsl after 1.72 needs the regular XSL, but will not -+ # pass-thru raw roff codes from asciidoc.conf, so turn them off. -+ asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] -+endif -+ -+xmlto = find_program('xmlto') -+xmlto_extra = [] -+ -+if get_option('man-bold-literal') -+ xmlto_extra += ['-m ', confdir + 'manpage-bold-literal.xsl'] -+endif -+ -+if get_option('docbook-suppress-sp') -+ xmlto_extra += ['-m ', confdir + 'manpage-suppress-sp.xsl'] -+endif -+ -+check_doc = custom_target( -+ 'check-doc', -+ output: 'dummy', -+ command : [ -+ top_source_dir + 'check-manpages.sh', -+ meson.current_source_dir()]) -+ -+gen = generator( -+ asciidoc, -+ output: '@BASENAME@.xml', -+ arguments: [ -+ '-b', 'docbook', -+ '-d', 'manpage', -+ '-a', 'libtraceevent_version=' + meson.project_version(), -+ '-o', '@OUTPUT@'] -+ + asciidoc_extra -+ + ['@INPUT@']) -+ -+man = [] -+html = [] -+foreach txt, section : sources -+ # build man page(s) -+ xml = gen.process(txt) -+ man += custom_target( -+ txt.underscorify() + '_man', -+ input: xml, -+ output: '@BASENAME@.' + section, -+ depends: check_doc, -+ command: [ -+ xmlto, -+ '-m', manpage_xsl, -+ 'man', -+ '-o', '@OUTPUT@'] -+ + xmlto_extra -+ + ['@INPUT@']) -+ -+ # build html pages -+ html += custom_target( -+ txt.underscorify() + '_html', -+ input: txt, -+ output: '@BASENAME@.html', -+ depends: check_doc, -+ command: [ -+ asciidoc, -+ '-b', asciidoc_html, -+ '-d', 'manpage', -+ '-a', 'libtraceevent_version=' + meson.project_version(), -+ '-o', '@OUTPUT@'] -+ + asciidoc_extra -+ + ['@INPUT@']) -+endforeach -+ -+# Install path workaround because: -+# -+# - xmlto might generate more than one file and we would to tell meson -+# about those output files. We could figure out which files are generated -+# (see sed match in check-manpages.sh). -+# -+# - The man page generation puts all the generated files under sub dirs -+# and it's not obvious how to tell Meson it should not do this without -+# causing the install step to fail (confusion where the generated files -+# are stored) -+# -+# - The documentation build is not part of the 'build' target. The user -+# has explicitly to trigger the doc build. Hence the documentation is -+# not added to the 'install' target. -+# -+# Thus just use a plain old shell script to move the generated files to the -+# right location. -+ -+conf = configuration_data() -+conf.set('SRCDIR', meson.current_build_dir()) -+conf.set('MANDIR', mandir) -+conf.set('HTMLDIR', htmldir) -+configure_file( -+ input: 'install-docs.sh.in', -+ output: 'install-docs.sh', -+ configuration: conf) -+ -+meson.add_install_script( -+ join_paths(meson.current_build_dir(), 'install-docs.sh')) -diff --git a/meson-vcs-tag.sh b/meson-vcs-tag.sh -new file mode 100755 -index 000000000000..8ce692498ada ---- /dev/null -+++ b/meson-vcs-tag.sh -@@ -0,0 +1,17 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+set -eu -+set -o pipefail -+ -+dir="${1:?}" -+fallback="${2:?}" -+ -+# Apparently git describe has a bug where it always considers the work-tree -+# dirty when invoked with --git-dir (even though 'git status' is happy). Work -+# around this issue by cd-ing to the source directory. -+cd "$dir" -+# Check that we have either .git/ (a normal clone) or a .git file (a work-tree) -+# and that we don't get confused if a tarball is extracted in a higher-level -+# git repository. -+[ -e .git ] && git describe --abbrev=7 --dirty=+ 2>/dev/null | sed 's/^v//' || echo "$fallback" -diff --git a/meson.build b/meson.build -new file mode 100644 -index 000000000000..e537d6f25ea9 ---- /dev/null -+++ b/meson.build -@@ -0,0 +1,149 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+project( -+ 'trace-cmd', ['c'], -+ meson_version: '>= 0.50.0', -+ license: 'GPL-2.0', -+ version: '3.1.5', -+ default_options: [ -+ 'c_std=gnu99', -+ 'buildtype=debug', -+ 'default_library=both', -+ 'prefix=/usr/local', -+ 'warning_level=1']) -+ -+cc = meson.get_compiler('c') -+ -+prefixdir = get_option('prefix') -+datadir = join_paths(prefixdir, get_option('datadir')) -+bindir = join_paths(prefixdir, get_option('bindir')) -+mandir = join_paths(prefixdir, get_option('mandir')) -+htmldir = join_paths(prefixdir, get_option('htmldir')) -+ -+conf = configuration_data() -+ -+libtraceevent_dep = dependency('libtraceevent', version: '>= 1.5.0', required: true) -+libtracefs_dep = dependency('libtracefs', version: '>= 1.6.0', required: true) -+ -+zlib_dep = dependency('zlib', required: false) -+conf.set('HAVE_ZLIB', zlib_dep.found(), description: 'Is zlib avialable?') -+ -+libzstd_dep = dependency('libzstd', version: '>= 1.4.0', required: false) -+conf.set('HAVE_ZSTD', libzstd_dep.found(), description: 'Is libzstd available?') -+ -+cunit_dep = dependency('cunit', required : false) -+ -+vsock_defined = get_option('vsock') and cc.has_header('linux/vm_sockets.h') -+conf.set('VSOCK', vsock_defined, description: 'Is vsock available?') -+ -+perf_defined = cc.has_header('linux/perf_event.h') -+conf.set('PERF', perf_defined, description: 'Is perf available?') -+ -+have_ptrace = get_option('ptrace') and cc.compiles( -+ ''' -+ #include -+ #include -+ -+ int main (void) -+ { -+ int ret; -+ ret = ptrace(PTRACE_ATTACH, 0, NULL, 0); -+ ptrace(PTRACE_TRACEME, 0, NULL, 0); -+ ptrace(PTRACE_GETSIGINFO, 0, NULL, NULL); -+ ptrace(PTRACE_GETEVENTMSG, 0, NULL, NULL); -+ ptrace(PTRACE_SETOPTIONS, NULL, NULL, -+ PTRACE_O_TRACEFORK | -+ PTRACE_O_TRACEVFORK | -+ PTRACE_O_TRACECLONE | -+ PTRACE_O_TRACEEXIT); -+ ptrace(PTRACE_CONT, NULL, NULL, 0); -+ ptrace(PTRACE_DETACH, 0, NULL, NULL); -+ ptrace(PTRACE_SETOPTIONS, 0, NULL, -+ PTRACE_O_TRACEFORK | -+ PTRACE_O_TRACEVFORK | -+ PTRACE_O_TRACECLONE | -+ PTRACE_O_TRACEEXIT); -+ return ret; -+ } -+ ''', -+ name: 'ptrace') -+if not have_ptrace -+ conf.set10('NO_PTRACE', true, description: 'Is ptrace missing?') -+ conf.set('WARN_NO_PTRACE', true, description: 'Issue no ptrace warning?') -+endif -+ -+audit_dep = dependency('audit', required: false) -+if not audit_dep.found() -+ conf.set10('NO_AUDIT', true, description: 'Is audit missing?') -+ conf.set('WARN_NO_AUDIT', true, description: 'Issue no audit warning?') -+endif -+ -+config_h = configure_file( -+ output: 'config.h', -+ configuration: conf -+) -+ -+version = meson.project_version().split('.') -+ -+vconf = configuration_data() -+vconf.set('VERSION_CODE', version[0].to_int() * 256 + version[1].to_int()) -+vconf.set('EXTRAVERSION', '"@0@"'.format(version[2])) -+vconf.set('FILE_VERSION', '""') -+vconf.set('VERSION_STRING', '"@0@"'.format(meson.project_version())) -+ -+version_tag = get_option('version-tag') -+if version_tag != '' -+ vconf.set('VERSION_GIT', '"@0@"'.format(version_tag)) -+else -+ r = run_command( -+ 'meson-vcs-tag.sh', -+ meson.current_source_dir(), -+ meson.project_version(), -+ check: true) -+ vconf.set('VERSION_GIT', '"@0@"'.format(r.stdout().strip())) -+endif -+version_h = configure_file( -+ output: 'tc_version.h', -+ configuration: vconf) -+ -+add_project_arguments( -+ [ -+ '-D_GNU_SOURCE', -+ '-include', 'config.h', -+ ], -+ language : 'c') -+ -+incdir = include_directories(['.', 'include']) -+ -+# libtracecmd: trace-cmd currently depends on a statically linked -+# libtracecmd. libtracecmd is sill very strongly coupled with -+# trace-cmd (or the other way around). To reduce the development setup -+# complexity we add some of the 'top meson.build' from libtracecmd and -+# make it simpler to use. -+library_version = '1.3.0' -+libtracecmd_standalone_build = false -+libtracecmd_ext_incdir = include_directories( -+ [ -+ 'include', -+ 'include/trace-cmd', -+ 'tracecmd/include' -+ ]) -+subdir('lib/trace-cmd/include') -+subdir('lib/trace-cmd/include/private') -+subdir('lib/trace-cmd') -+ -+# trace-cmd -+subdir('tracecmd') -+subdir('python') -+if cunit_dep.found() -+ subdir('utest') -+endif -+subdir('Documentation/trace-cmd') -+ -+custom_target( -+ 'docs', -+ output: 'docs', -+ depends: [html, man], -+ command: ['echo']) -diff --git a/meson_options.txt b/meson_options.txt -new file mode 100644 -index 000000000000..2d5d7457bed5 ---- /dev/null -+++ b/meson_options.txt -@@ -0,0 +1,23 @@ -+# -*- mode: meson -*- -+# SPDX-License-Identifier: GPL-2.0 -+ -+option('version-tag', type : 'string', -+ description : 'override the git version string') -+option('vsock', type : 'boolean', value : true, -+ description : 'build with vsock support') -+option('ptrace', type : 'boolean', value : true, -+ description : 'build with ptrace support') -+option('htmldir', type : 'string', value : 'share/doc/trace-cmd-doc', -+ description : 'directory for HTML documentation') -+option('asciidoctor', type : 'boolean', value: false, -+ description : 'use asciidoctor instead of asciidoc') -+option('docbook-xls-172', type : 'boolean', value : false, -+ description : 'enable docbook XLS 172 workaround') -+option('asciidoc-no-roff', type : 'boolean', value : false, -+ description : 'enable no roff workaround') -+option('man-bold-literal', type : 'boolean', value : false, -+ description : 'enable bold literals') -+option('docbook-suppress-sp', type : 'boolean', value : false, -+ description : 'docbook suppress sp') -+option('python', type : 'combo', choices : ['auto', 'true', 'false'], -+ description : 'Generate trac-cmd Python bindings') -diff --git a/python/meson.build b/python/meson.build -new file mode 100644 -index 000000000000..5a91ff63a326 ---- /dev/null -+++ b/python/meson.build -@@ -0,0 +1,40 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+want_python = get_option('python') -+if want_python != 'false' -+ python3 = import('python').find_installation('python3') -+ py3_dep = python3.dependency(required: want_python == 'true') -+ swig = find_program('swig', required: want_python == 'true') -+ header_found = cc.has_header('Python.h', dependencies: py3_dep) -+ have_python_support = py3_dep.found() and swig.found() and header_found -+else -+ have_python_support = false -+endif -+ -+if have_python_support -+ pymod_swig = custom_target( -+ 'ctracecmd.py', -+ input: ['ctracecmd.i'], -+ output: ['ctracecmd.py', 'ctracecmd_wrap.c'], -+ command: [ -+ swig, -+ '-python', -+ '-I' + meson.current_source_dir() + '/../include/trace-cmd', -+ '-I' + libtraceevent_dep.get_pkgconfig_variable('prefix') + '/include/traceevent', -+ '-o', '@OUTPUT1@', -+ '@INPUT0@'], -+ install: true, -+ install_dir: [ python3.get_install_dir(pure: false, subdir: 'trace-cmd'), false]) -+ -+ incdir_py = include_directories(['.', '../include/trace-cmd']) -+ -+ pyctracecmd_clib = python3.extension_module( -+ '_ctracecmd', -+ pymod_swig[1], -+ dependencies : [libtraceevent_dep, libtracefs_dep, py3_dep], -+ include_directories: [incdir, incdir_py], -+ install: true, -+ subdir: 'trace-cmd') -+endif -diff --git a/tracecmd/meson.build b/tracecmd/meson.build -new file mode 100644 -index 000000000000..bb0b5ca547fb ---- /dev/null -+++ b/tracecmd/meson.build -@@ -0,0 +1,59 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+sources = [ -+ 'trace-agent.c', -+ 'trace-check-events.c', -+ 'trace-clear.c', -+ 'trace-cmd.c', -+ 'trace-convert.c', -+ 'trace-dump.c', -+ 'trace-hist.c', -+ 'trace-list.c', -+ 'trace-listen.c', -+ 'trace-mem.c', -+ 'trace-profile.c', -+ 'trace-read.c', -+ 'trace-record.c', -+ 'trace-restore.c', -+ 'trace-setup-guest.c', -+ 'trace-show.c', -+ 'trace-snapshot.c', -+ 'trace-split.c', -+ 'trace-stack.c', -+ 'trace-stat.c', -+ 'trace-stream.c', -+ 'trace-tsync.c', -+ 'trace-usage.c', -+ 'trace-vm.c', -+] -+ -+if vsock_defined -+ sources += 'trace-vsock.c' -+endif -+ -+trace_cmd_incdir = include_directories(['.', 'include']) -+ -+executable( -+ 'trace-cmd', -+ sources, -+ dependencies: [ -+ libtraceevent_dep, -+ libtracefs_dep, -+ zlib_dep, -+ libzstd_dep, -+ audit_dep], -+ include_directories: [ -+ incdir, -+ trace_cmd_incdir, -+ libtracecmd_incdir, -+ libtracecmd_private_incdir, -+ libtracecmd_ext_incdir], -+ link_with: [static_libtracecmd], -+ install: true, -+ install_dir: bindir) -+ -+install_data( -+ 'trace-cmd.bash', -+ install_dir: datadir + '/bash-completion/completions') -diff --git a/utest/meson.build b/utest/meson.build -new file mode 100644 -index 000000000000..c1cc837c7639 ---- /dev/null -+++ b/utest/meson.build -@@ -0,0 +1,26 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Copyright (c) 2023 Daniel Wagner, SUSE LLC -+ -+sources = [ -+ 'tracecmd-utest.c', -+ 'trace-utest.c', -+] -+ -+e = executable( -+ 'trace-utest', -+ sources, -+ include_directories: [ -+ incdir, -+ libtracecmd_incdir, -+ libtracecmd_private_incdir, -+ libtracecmd_ext_incdir], -+ dependencies: [ -+ libtraceevent_dep, -+ libtracefs_dep, -+ zlib_dep, -+ libzstd_dep, -+ cunit_dep], -+ link_with: [static_libtracecmd]) -+ -+test('trace-utest', e) --- -2.39.1 - diff --git a/libtracecmd.changes b/libtracecmd.changes index d358f66..740bbaa 100644 --- a/libtracecmd.changes +++ b/libtracecmd.changes @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Thu Nov 9 15:23:53 UTC 2023 - Jan Engelhardt + +- Update to release 1.4.0 + * trace-cmd extract: Do not extract top level unless told to +- Drop 0001-libtracecmd-Add-initial-support-for-meson.patch + 0002-trace-cmd-Add-initial-support-for-meson.patch (merged) + +------------------------------------------------------------------- Tue Feb 7 13:40:37 UTC 2023 - Daniel Wagner - Sync meson build patch with latest upstream version diff --git a/libtracecmd.spec b/libtracecmd.spec index e39637d..dfc9292 100644 --- a/libtracecmd.spec +++ b/libtracecmd.spec @@ -18,15 +18,13 @@ Name: libtracecmd %define lname libtracecmd1 -Version: 1.3.1 +Version: 1.4.0 Release: 0 Summary: Library for creating and reading trace-cmd data files License: LGPL-2.1-only Group: Development/Libraries/C and C++ URL: https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git Source: https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/trace-cmd-libtracecmd-%version.tar.gz -Patch1: 0001-libtracecmd-Add-initial-support-for-meson.patch -Patch2: 0002-trace-cmd-Add-initial-support-for-meson.patch BuildRequires: asciidoc BuildRequires: fdupes BuildRequires: libtraceevent-devel diff --git a/trace-cmd-libtracecmd-1.3.1.tar.gz b/trace-cmd-libtracecmd-1.3.1.tar.gz deleted file mode 120000 index 754734a..0000000 --- a/trace-cmd-libtracecmd-1.3.1.tar.gz +++ /dev/null @@ -1 +0,0 @@ -/ipfs/bafybeifw6ysa6ioiegcwuyrzsl35zzqaakufsl4gmkhiybkcrsnkoomcbq \ No newline at end of file diff --git a/trace-cmd-libtracecmd-1.4.0.tar.gz b/trace-cmd-libtracecmd-1.4.0.tar.gz new file mode 120000 index 0000000..10ac73c --- /dev/null +++ b/trace-cmd-libtracecmd-1.4.0.tar.gz @@ -0,0 +1 @@ +/ipfs/bafybeiexxpyns57lab3wruy4g72leeypx5lxjui6kiqwcjhpgkh4v5jgj4 \ No newline at end of file