[DTrace-devel] [PATCH 0/9] relocatable DTrace
Nick Alcock
nick.alcock at oracle.com
Thu Aug 1 16:45:21 UTC 2024
On 31 Jul 2024, Kris Van Hees outgrape:
> On Wed, Jul 31, 2024 at 08:54:44PM +0100, Nick Alcock wrote:
>> On 31 Jul 2024, Kris Van Hees said:
>>
>> > General comments because my review covers the entire series...
>> >
>> > Why are there two pkg_config files being introduced when it seems like a
>> > single dtrace.pc one would be sufficient. The dtrace utility is used both
>> > for tracing and for the building of libraries and executables with USDT
>> > probes, I see no reason why a single dtrace.pc couldn't cover both.
>>
>> Simply because there are two distinct use cases here that require a
>> different set of libraries and headers from different places: "we want
>> to use USDT using <sdt.h>", and "we are a DTrace consumer". Almost
>> nothing wants both, only one wants a library, etc etc.
>>
>> Bear in mind that more-or-less universal usage of pkg-config (as in,
>> with CMake, Autoconf and Meson it is hard to impossible to do anything
>> else) has the caller appending $(pkg-config --cflags $pkg) to CFLAGS or
>> CPPFLAGS and $(pkg-config --libs $pkg) to LIBS. If we tried to use the
>> same pkg-config file, this would mean that *raw USDT probe users* would
>> find themselves linking with libdtrace! This is *surely* not what we
>> want.
>
> If people do that without actually checking whether it makes any sense, then
> that would be an argument (to me) to not use pkg-config at all. Using
> pkg-config to get --libs when there is no library to link with is pointless
> and merely shows that the person using this has no diea what they are doing.
Agreed. If someone is putting the pkg-config files somewhere unusual,
it's because they have *already* pointed pkg-config at that new place,
so we can rely on pkg-config still working.
We can handle people changing --prefix alone (the overwhelmingly common
case) by setting the pkg-config path to "../../../share/pkgconfig" :)
> The cflags argument I can accept, but then perhaps we need *3* pkg-config
> files?
No need.
> What exactly do we need this for? Testsuite needs to know where to
> find dtrace, so that could need a pkg-config file. Anyone wanting to use
> libdtrace would need to know where to find the library and what cflags to
> use (finding the include files), which would need a pkg-config file. And
> compiling code with SDT would need another pkg-config file.
We need two -- one for consumers (which need to know where dtrace.h and
libdtrace are) and one for sdt users (which need to know where sdt.h
is). We can just add the dtrace= variable pointing at the executable to
both: either might potentially find it useful to know that, and an
unused variable in a pkg-config file is harmless.
--
NULL && (void)
More information about the DTrace-devel
mailing list