linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Wagner <dwagner@suse.de>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-devel@vger.kernel.org
Subject: Re: [PATCH v5] libtracefs: Add initial support for meson
Date: Thu, 5 Jan 2023 08:18:51 +0100	[thread overview]
Message-ID: <20230105071851.24okzoqun6ednbmr@carbon.lan> (raw)
In-Reply-To: <20230104124414.727545d4@gandalf.local.home>

On Wed, Jan 04, 2023 at 12:44:14PM -0500, Steven Rostedt wrote:
> On Wed, 4 Jan 2023 18:19:39 +0100
> Daniel Wagner <dwagner@suse.de> wrote:
 > setup. Basically with
> > 
> > 
> >   'meson setup .build --wrap-mode=forcefallback'
> > 
> > in trace-cmd meson would download, setup and build libtraceevent and libtracefs
> > within the trace-cmd build. This is makes the whole development process
> > between these project way smoother. And if you would configure the build
> > with
> 
> I'm not sure that would make it easier for me. I work on each separately.
> And I don't always want them linked together, but sometimes I do!

Meson doesn't force you here how you prefer you workflow. If you want to
stick with your development steps all should be fine. I just recommend to give
those subproject a try. IMO it makes things simpler, e.g. building all code in
debug mode and being able to single step through is nice. And if you find a bug
or want to change a line in the libraries, just change the line recompile the
main project and that's all. No installing or fiddling with some $PATHs. All works
out of the box.

> To
> control what gets linked to trace-cmd, I use dynamic libraries, and only
> install what I want to use there. That is, they really are three different
> projects! I use libtracefs on several other tools, not just trace-cmd.

Depending on the default settings, the libraries are either dynamically or
statically linked. Meson takes care of all those path issues. For example for
the nmve-cli project I have following linking situation:

$ ldd .build/nvme
        linux-vdso.so.1 (0x00007ffd9975f000)
        libnvme.so.1 => /home/wagi/work/nvme-cli/.build/subprojects/libnvme/src/libnvme.so.1 (0x00007fb934141000)
        libnvme-mi.so.1 => /home/wagi/work/nvme-cli/.build/subprojects/libnvme/src/libnvme-mi.so.1 (0x00007fb934135000)
        libjson-c.so.5 => /lib64/libjson-c.so.5 (0x00007fb9340fe000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fb9340e2000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fb933ee7000)
        libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007fb933a00000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fb933e94000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb934169000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fb93392e000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007fb933e88000)
        libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007fb9337e5000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fb933e54000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fb933733000)
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007fb93370f000)
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fb9336e9000)

In this scenario libnvme is linked in as dynamic library.

> >   'meson setup .build --wrap-mode=forcefallback --default-library=static'
> > 
> > would staticly link all subprojects into the trace-cmd binary.
> > 
> > I haven't added this part to the initial mesonizing of the projects. Keep
> > things simple to begin with.
> 
> For the environment that we require a static build, that isn't really
> needed. It would only make the initial setup easier, but that's a one time
> deal. After that, everything is automated.

Before you spend too much time in writing scripts aroudn Meson, you should
really have a look at subproject. You get the dependencies management for little
costs.

  reply	other threads:[~2023-01-05  7:18 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-28  8:29 [PATCH v5] libtracefs: Add initial support for meson Daniel Wagner
2023-01-04 16:09 ` Steven Rostedt
2023-01-04 17:19   ` Daniel Wagner
2023-01-04 17:44     ` Steven Rostedt
2023-01-05  7:18       ` Daniel Wagner [this message]
2023-01-05 13:51         ` Steven Rostedt
2023-01-05 14:41           ` Daniel Wagner

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=20230105071851.24okzoqun6ednbmr@carbon.lan \
    --to=dwagner@suse.de \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=rostedt@goodmis.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;
as well as URLs for NNTP newsgroup(s).