Re: [RFC] tools lib traceevent: How to do library versioning being in the Linux kernel source?

From: Masami Hiramatsu
Date: Fri Jan 03 2020 - 07:17:51 EST


On Thu, 2 Jan 2020 12:20:04 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> First, I hope everyone had a Happy New Year!

Hope you to have a Happy New Year too!

>
> Next, Sudip has been working to get the libtraceevent library into
> Debian. As this has been happening, I've been working at how to get all
> the projects that use this, to use the library installed on the system
> if it does exist. I'm hoping that once it's in Debian, the other
> distros will follow suit.
>
> Currently, the home of libtraceevent lives in the Linux kernel source
> tree under tools/lib/traceevent. This was because perf uses it to parse
> the events, and it seemed logical (at the time) to use this location as
> the main source tree for the distributions.
>
> The problem I'm now having is that I'm looking at fixing and updating
> some of the code in this library, and since library versioning is
> critical for applications that depend on it, we need to have a way to
> update the versions, and this does not correspond with the Linux
> versions.
>
> For example, we currently have:
>
> libtraceevent.so.1.1.0
>
> If I make some bug fixes, I probably want to change it to:
>
> libtraceevent.so.1.1.1 or libtraceevent.so.1.2.0
>
> But if I change the API, which I plan on doing soon, I would probably
> need to update the major version.
>
> libtraceevent.so.2.0.0
>
> The thing is, we shouldn't be making these changes for every update
> that we send to the main kernel. I would like to have a minimum of tags
> to state what the version should be, and perhaps even branches for
> working on a development version.
>
> This is a problem with living in the Linux source tree as tags and
> branches in Linus's tree are for only the Linux kernel source itself.
> This may work fine for perf, as it's not a library and there's not
> tools depending on the version of it. But it is a problem when it comes
> to shared libraries.
>
> Should we move libtraceevent into a stand alone git repo (on
> kernel.org), that can have tags and branches specifically for it? We
> can keep a copy in the Linux source tree for perf to use till it
> becomes something that is reliably in all distributions. It's not like
> perf doesn't depend on other libraries today anyway.

+1. It sounds reasonable to move the main part of libtraceevent out
of kernel tree. BTW, the plugins seems depending on the kernel. Maybe
we can provide it under
/lib/modules/<kversion>/shared/libtraceevent/plugins/ ? :)

Thank you,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>