Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libtracefs for openSUSE:Factory 
checked in at 2023-01-02 15:02:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libtracefs (Old)
 and      /work/SRC/openSUSE:Factory/.libtracefs.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libtracefs"

Mon Jan  2 15:02:07 2023 rev:11 rq:1046050 version:1.6.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/libtracefs/libtracefs.changes    2022-12-16 
21:26:10.399810815 +0100
+++ /work/SRC/openSUSE:Factory/.libtracefs.new.1563/libtracefs.changes  
2023-01-02 15:02:09.869349641 +0100
@@ -1,0 +2,6 @@
+Tue Dec 27 09:22:13 UTC 2022 - Daniel Wagner <[email protected]>
+
+- Use meson to build package
+  * add 0001-libtracefs-Add-initial-support-for-meson.patch
+
+-------------------------------------------------------------------

New:
----
  0001-libtracefs-Add-initial-support-for-meson.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libtracefs.spec ++++++
--- /var/tmp/diff_new_pack.18kqvS/_old  2023-01-02 15:02:10.477353058 +0100
+++ /var/tmp/diff_new_pack.18kqvS/_new  2023-01-02 15:02:10.481353080 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libtracefs
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,15 @@
 Group:          Development/Libraries/C and C++
 URL:            https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
 Source:         
https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot/%name-%version.tar.gz
+Patch1:         0001-libtracefs-Add-initial-support-for-meson.patch
+BuildRequires:  asciidoc
+BuildRequires:  bison
+BuildRequires:  fdupes
+BuildRequires:  flex
+BuildRequires:  meson
 BuildRequires:  pkg-config
+BuildRequires:  source-highlight
+BuildRequires:  xmlto
 BuildRequires:  xz
 BuildRequires:  pkgconfig(libtraceevent) >= 1.3
 
@@ -39,6 +47,16 @@
 %description -n %lname
 This library provides C APIs to access the kernel trace file system.
 
+%package tools
+Summary:        Tools for libtracefs
+Group:          Development/Libraries/C and C++
+Requires:       %lname = %version
+
+%description tools
+This library provides C APIs to access the kernel trace file system.
+
+This subpackage contains tools.
+
 %package devel
 Summary:        Development files for libtracefs
 Group:          Development/Libraries/C and C++
@@ -53,18 +71,15 @@
 %autosetup -p1
 
 %build
-%make_build V=1 prefix="%_prefix"
+%meson \
+    -Ddocs-build=true \
+    -Dhtmldir="%_docdir/%name"
+%meson_build
 
 %install
-%make_install V=1 prefix="%_prefix" \
-       pkgconfig_dir=%{_libdir}/pkgconfig \
-        %nil
-# always the same issues
-find "%buildroot/%_includedir" -type f -name "*.h" -exec chmod a-x {} +
-rm -f "%buildroot/%_libdir"/*.a
-if ldd -r "%buildroot/%_libdir/libtracefs.so" 2>&1 | grep -q undefined; then
-       exit 1
-fi
+%meson_install
+
+%fdupes %buildroot/%_prefix
 
 %post   -n %lname -p /sbin/ldconfig
 %postun -n %lname -p /sbin/ldconfig
@@ -73,9 +88,15 @@
 %_libdir/libtracefs.so.1*
 %license LICENSES/LGPL-2.1
 
+%files tools
+%_bindir/sqlhist
+%_mandir/man1/*
+
 %files devel
 %_includedir/*
 %_libdir/libtracefs.so
 %_libdir/pkgconfig/*.pc
+%_mandir/man3/*
+%_docdir/%name/
 
 %changelog

++++++ 0001-libtracefs-Add-initial-support-for-meson.patch ++++++
>From 376e39f8d2f45709fdee46fc2f97b3f56c767ce9 Mon Sep 17 00:00:00 2001
From: Daniel Wagner <[email protected]>
Date: Thu, 7 Jul 2022 14:05:49 +0200
Subject: [PATCH] libtracefs: Add initial support for meson

Introduce Meson as build framework for building libtracefs. This
lives besides the Makefiles until all the expected initial fallouts
have been dealed with.

The build steps are:

  # configure using .build as build directory and install destination
  # /tmp/test
  meson --prefix=/tmp/libtracefs .build

  # trigger the build
  ninja -C .build

  # install the library
  ninja -C .build install

In case you want to build/install the documentation the setup is

  meson -Ddocs-build=true .build

Signed-off-by: Daniel Wagner <[email protected]>
---
 Documentation/install-man.sh.in |  15 +++
 Documentation/list-txt.sh       |  11 ++
 Documentation/meson.build       | 177 ++++++++++++++++++++++++++++++++
 include/meson.build             |   9 ++
 meson.build                     |  50 +++++++++
 meson_options.txt               |  18 ++++
 samples/extract-example.sh      |   3 +
 samples/meson.build             |  46 +++++++++
 src/meson.build                 |  65 ++++++++++++
 utest/meson.build               |  17 +++
 10 files changed, 411 insertions(+)
 create mode 100755 Documentation/install-man.sh.in
 create mode 100644 Documentation/list-txt.sh
 create mode 100644 Documentation/meson.build
 create mode 100644 include/meson.build
 create mode 100644 meson.build
 create mode 100644 meson_options.txt
 create mode 100644 samples/extract-example.sh
 create mode 100644 samples/meson.build
 create mode 100644 src/meson.build
 create mode 100644 utest/meson.build

diff --git a/Documentation/install-man.sh.in b/Documentation/install-man.sh.in
new file mode 100755
index 000000000000..8ab2cb982e1d
--- /dev/null
+++ b/Documentation/install-man.sh.in
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+for man in $(find @SRCDIR@ -name '*\.1' -type f); do
+    [ ! -d ${DESTDIR}/@MANDIR@/man1/ ] && install -d ${DESTDIR}/@MANDIR@/man1/
+
+    echo Installing $man to ${DESTDIR}/@MANDIR@/man1/
+    install -m 0644 $man ${DESTDIR}/@MANDIR@/man1/
+done
+
+for man in $(find @SRCDIR@ -name '*\.3' -type f); do
+    [ ! -d ${DESTDIR}/@MANDIR@/man3/ ] && install -d ${DESTDIR}/@MANDIR@/man3/
+
+    echo Installing $man to ${DESTDIR}/@MANDIR@/man3/
+    install -m 0644 $man ${DESTDIR}/@MANDIR@/man3/
+done
diff --git a/Documentation/list-txt.sh b/Documentation/list-txt.sh
new file mode 100644
index 000000000000..89c3bceff14c
--- /dev/null
+++ b/Documentation/list-txt.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+SECTION=$1
+TXT_PATH=$2
+
+if [ "$SECTION" = "1" ] ; then
+  ls -1 ${TXT_PATH}/libtracefs-*.txt.1
+elif [ "$SECTION" = "3" ] ; then
+  ls -1 ${TXT_PATH}/libtracefs-*.txt
+  ls -1 ${TXT_PATH}/libtracefs.txt
+fi
diff --git a/Documentation/meson.build b/Documentation/meson.build
new file mode 100644
index 000000000000..07ac222201b8
--- /dev/null
+++ b/Documentation/meson.build
@@ -0,0 +1,177 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+# input text file: man page section
+sources = {
+    'libtracefs-sqlhist.txt.1': '1',
+    'libtracefs-cpu-open.txt': '3',
+    'libtracefs-cpu.txt': '3',
+    'libtracefs-dynevents.txt': '3',
+    'libtracefs-eprobes.txt': '3',
+    'libtracefs-error.txt': '3',
+    'libtracefs-events-file.txt': '3',
+    'libtracefs-events-tep.txt': '3',
+    'libtracefs-events.txt': '3',
+    'libtracefs-files.txt': '3',
+    'libtracefs-filter.txt': '3',
+    'libtracefs-function-filter.txt': '3',
+    'libtracefs-hist-cont.txt': '3',
+    'libtracefs-hist-mod.txt': '3',
+    'libtracefs-hist.txt': '3',
+    'libtracefs-instances-affinity.txt': '3',
+    'libtracefs-instances-file-manip.txt': '3',
+    'libtracefs-instances-files.txt': '3',
+    'libtracefs-instances-manage.txt': '3',
+    'libtracefs-instances-utils.txt': '3',
+    'libtracefs-iterator.txt': '3',
+    'libtracefs-kprobes.txt': '3',
+    'libtracefs-log.txt': '3',
+    'libtracefs-marker_raw.txt': '3',
+    'libtracefs-marker.txt': '3',
+    'libtracefs-option-get.txt': '3',
+    'libtracefs-option-misc.txt': '3',
+    'libtracefs-options.txt': '3',
+    'libtracefs-sql.txt': '3',
+    'libtracefs-stream.txt': '3',
+    'libtracefs-synth2.txt': '3',
+    'libtracefs-synth-info.txt': '3',
+    'libtracefs-synth.txt': '3',
+    'libtracefs-traceon.txt': '3',
+    'libtracefs-tracer.txt': '3',
+    'libtracefs.txt': '3',
+    'libtracefs-uprobes.txt': '3',
+    'libtracefs-utils.txt': '3',
+}
+
+#
+# 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', meson.current_source_dir() + '/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 = meson.current_source_dir() + '/manpage-normal.xsl'
+
+if get_option('docbook-xls-172')
+    asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff']
+    manpage_xsl = meson.current_source_dir() + '/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 ', meson.current_source_dir() + 
'/manpage-bold-literal.xsl']
+endif
+
+if get_option('docbook-suppress-sp')
+    xmlto_extra += ['-m ',  meson.current_source_dir() + 
'/manpage-suppress-sp.xsl']
+endif
+
+gen = generator(asciidoc,
+                output: '@[email protected]',
+                arguments: [
+                    '-b', 'docbook',
+                    '-d', 'manpage',
+                    '-a', 'libtraceevent_version=' + meson.project_version(),
+                    '-o', '@OUTPUT@']
+                    + asciidoc_extra
+                    + ['@INPUT@'])
+
+foreach txt, section : sources
+    # build man page(s)
+    xml = gen.process(txt)
+    man = custom_target(txt.underscorify() + '_man',
+                        input: xml,
+                        output: '@BASENAME@.' + section,
+                        command: [xmlto,
+                        '-m', manpage_xsl,
+                        'man',
+                        '-o', '@OUTPUT@']
+                        + xmlto_extra
+                        + ['@INPUT@'],
+                        build_by_default : true)
+
+    # build html pages
+    custom_target(
+       txt.underscorify() + '_html',
+       input: txt,
+       output: '@[email protected]',
+       command: [asciidoc,
+                '-b', asciidoc_html,
+                '-d', 'manpage',
+               '-a', 'libtraceevent_version=' + meson.project_version(),
+                '-o', '@OUTPUT@']
+                + asciidoc_extra
+                + ['@INPUT@'],
+       install: true,
+       install_dir: htmldir)
+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)
+#
+# 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)
+configure_file(
+    input:         'install-man.sh.in',
+    output:        'install-man.sh',
+    configuration: conf,
+)
+
+meson.add_install_script(
+    join_paths(meson.current_build_dir(), 'install-man.sh'))
diff --git a/include/meson.build b/include/meson.build
new file mode 100644
index 000000000000..1bbfe8afb280
--- /dev/null
+++ b/include/meson.build
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: LGPL-2.1
+
+headers = [
+   'tracefs.h',
+]
+
+foreach h : headers
+       install_headers(h, subdir : 'libtracefs')
+endforeach
diff --git a/meson.build b/meson.build
new file mode 100644
index 000000000000..1ef7969d655a
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+project(
+    'libtracefs', ['c'],
+    meson_version: '>= 0.50.0',
+    license: 'LGPL-2.1',
+    version: '1.6.3',
+    default_options: [
+      'c_std=gnu99',
+      'buildtype=debug',
+      'prefix=/usr/local',
+      'warning_level=1',
+    ]
+)
+
+library_version = meson.project_version()
+
+libtraceevent_dep = dependency('libtraceevent', version: '>= 1.7.0', required: 
true)
+cunit_dep = dependency('cunit', required : false)
+
+prefixdir = get_option('prefix')
+bindir    = join_paths(prefixdir, get_option('bindir'))
+mandir    = join_paths(prefixdir, get_option('mandir'))
+htmldir   = join_paths(prefixdir, get_option('htmldir'))
+
+add_project_arguments(
+    [
+      '-D_GNU_SOURCE',
+    ],
+    language : 'c',
+)
+
+incdir = include_directories(['include'])
+
+subdir('src')
+subdir('include')
+if cunit_dep.found()
+    subdir('utest')
+endif
+subdir('samples')
+if get_option('docs-build')
+    custom_target('check-doc',
+                   output: 'dummy',
+                   command : ['check-manpages.sh',
+                              meson.current_source_dir() + '/Documentation'],
+                  build_by_default : true)
+    subdir('Documentation')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 000000000000..9bcd66f49f06
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+option('docs-build', type : 'boolean', value : false,
+       description : 'build documentation')
+option('htmldir', type : 'string', value : '',
+       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/samples/extract-example.sh b/samples/extract-example.sh
new file mode 100644
index 000000000000..c5c0f702e7f0
--- /dev/null
+++ b/samples/extract-example.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+cat $1 | sed -ne '/^EXAMPLE/,/FILES/ { /EXAMPLE/,+2d ; /^FILES/d ;  /^--/d ; 
p}' > $2
diff --git a/samples/meson.build b/samples/meson.build
new file mode 100644
index 000000000000..0c36231ef29a
--- /dev/null
+++ b/samples/meson.build
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+examples = [
+    'dynevents',
+    'kprobes',
+    'eprobes',
+    'uprobes',
+    'synth',
+    'error',
+    'filter',
+    'function-filter',
+    'hist',
+    'hist-cont',
+    'tracer',
+    'stream',
+    'instances-affinity',
+    'cpu',
+]
+
+extract_examples = find_program('extract-example.sh')
+gen = generator(extract_examples,
+                output: '@[email protected]',
+                arguments: ['@INPUT@', '@OUTPUT@'])
+
+foreach ex : examples
+    src = gen.process(meson.current_source_dir() + 
'/../Documentation/libtracefs-@[email protected]'.format(ex))
+    executable(
+        ex.underscorify(),
+        src,
+        dependencies: [libtracefs_dep, libtraceevent_dep],
+        include_directories: [incdir]
+     )
+endforeach
+
+# sqlhist is unique and stands on its own
+src = gen.process(meson.current_source_dir() + 
'/../Documentation/libtracefs-sql.txt')
+executable(
+   'sqlhist',
+   src,
+   dependencies: [libtracefs_dep, libtraceevent_dep],
+   include_directories: [incdir],
+   install: true,
+   install_dir: bindir,
+)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 000000000000..43139b6de268
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,65 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+sources= [
+   'tracefs-dynevents.c',
+   'tracefs-eprobes.c',
+   'tracefs-events.c',
+   'tracefs-filter.c',
+   'tracefs-hist.c',
+   'tracefs-instance.c',
+   'tracefs-kprobes.c',
+   'tracefs-marker.c',
+   'tracefs-record.c',
+   'tracefs-sqlhist.c',
+   'tracefs-tools.c',
+   'tracefs-uprobes.c',
+   'tracefs-utils.c',
+]
+
+flex = find_program('flex', required: true)
+bison = find_program('bison', required: true)
+
+lgen = generator(flex,
+output : '@[email protected]',
+arguments : ['-o', '@OUTPUT@', '@INPUT@'])
+
+pgen = generator(bison,
+output : ['@[email protected]', '@[email protected]'],
+arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
+
+lfiles = lgen.process('sqlhist.l')
+pfiles = pgen.process('sqlhist.y')
+
+libtracefs = library(
+    'tracefs',
+    sources, lfiles, pfiles,
+    version: library_version,
+    dependencies: [libtraceevent_dep],
+    include_directories: [incdir],
+    install: true,
+)
+
+libtracefs_static = static_library(
+    'tracefs_static',
+    sources, lfiles, pfiles,
+    dependencies: [libtraceevent_dep],
+    include_directories: [incdir],
+    install: false,
+)
+
+pkg = import('pkgconfig')
+pkg.generate(libtracefs,
+    subdirs: 'libtracefs',
+    filebase: meson.project_name(),
+    name: meson.project_name(),
+    version: meson.project_version(),
+    description: 'Manage trace fs',
+    url: 'https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/',
+)
+
+libtracefs_dep = declare_dependency(
+    include_directories: ['.'],
+    link_with: libtracefs,
+)
diff --git a/utest/meson.build b/utest/meson.build
new file mode 100644
index 000000000000..8c8caf37803d
--- /dev/null
+++ b/utest/meson.build
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: LGPL-2.1
+#
+# Copyright (c) 2022 Daniel Wagner, SUSE LLC
+
+source = [
+    'trace-utest.c',
+    'tracefs-utest.c',
+]
+
+e = executable(
+   'trace-utest',
+   source,
+   include_directories: [incdir],
+   dependencies: [libtraceevent_dep, cunit_dep],
+   link_with: libtracefs_static)
+
+test('trace-utest', e)
-- 
2.39.0

Reply via email to