[DTrace-devel] [PATCH v2 2/9] build: initial pkg-config support

Kris Van Hees kris.van.hees at oracle.com
Fri Aug 2 05:24:41 UTC 2024


On Thu, Aug 01, 2024 at 02:21:49PM +0100, Nick Alcock wrote:
> This initial pkg-config file, dtrace_sdt.pc, points at the location
> of the sdt.h include file.  We immediately use it in make check in the
> installed testsuite, compensating for any install-time changes in the
> location of the dtrace libdir.
> 
> Further changes will be forthcoming to properly support relocatable
> installation.
> 
> Signed-off-by: Nick Alcock <nick.alcock at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  GNUmakefile          |  2 ++
>  configure            |  2 ++
>  dtrace.spec          |  1 +
>  runtest.sh           |  2 +-
>  uts/Build            | 14 +++++++++++++-
>  uts/dtrace_sdt.pc.in |  6 ++++++
>  6 files changed, 25 insertions(+), 2 deletions(-)
>  create mode 100644 uts/dtrace_sdt.pc.in
> 
> diff --git a/GNUmakefile b/GNUmakefile
> index b1109727dc66..0fc9b3b5e85c 100644
> --- a/GNUmakefile
> +++ b/GNUmakefile
> @@ -100,6 +100,8 @@ DOCDIR = $(prefix)/share/doc/dtrace-$(VERSION)
>  INSTDOCDIR = $(DESTDIR)$(DOCDIR)
>  MANDIR = $(prefix)/share/man/man8
>  INSTMANDIR = $(DESTDIR)$(MANDIR)
> +PKGCONFIGDIR = $(prefix)/share/pkgconfig
> +INSTPKGCONFIGDIR = $(DESTDIR)$(PKGCONFIGDIR)
>  TESTDIR = $(prefix)/lib$(BITNESS)/dtrace/testsuite
>  INSTTESTDIR = $(DESTDIR)$(TESTDIR)
>  TARGETS =
> diff --git a/configure b/configure
> index c423bc82b763..462548bcc69c 100755
> --- a/configure
> +++ b/configure
> @@ -60,6 +60,7 @@ Installation paths:
>  --sbindir=PREFIX/sbin				Alias for --bindir
>  --includedir=PREFIX/include			#include directory
>  --mandir=PREFIX/share/man/man8			Manpage directory
> +--pkg-config-dir=PREFIX/share/pkgconfig		Pkg-config directory
>  --udevdir=PREFIX/lib/udev/rules.d		udev rules directory
>  --systemd-unit-dir=PREFIX/lib/systemd/system	systemd unit directory
>  --docdir=PREFIX/share/doc/dtrace		Documentation directory
> @@ -130,6 +131,7 @@ for option in "$@"; do
>          --systemd-unit-dir=*) write_make_var SYSTEMDUNITDIR "$option";;
>          --docdir=*) write_make_var DOCDIR "$option";;
>          --mandir=*) write_make_var MANDIR "$option";;
> +        --pkg-config-dir=*) write_make_var PKGCONFIGDIR "$option";;
>          --testdir=*) write_make_var TESTDIR "$option";;
>          CC=*) write_make_var CC "$option";;
>          CPP=*) write_make_var PREPROCESS "$option";;
> diff --git a/dtrace.spec b/dtrace.spec
> index 28eeaa478376..1887fcadaed6 100644
> --- a/dtrace.spec
> +++ b/dtrace.spec
> @@ -246,6 +246,7 @@ systemctl start dtprobed || :
>  %{_libdir}/libdtrace.so.*
>  %{_sbindir}/dtrace
>  %{_sbindir}/dtprobed
> +%{_datadir}/pkgconfig/dtrace_sdt.pc
>  %{_mandir}/man8/dtrace.8.gz
>  %doc %{_docdir}/dtrace-%{version}/*
>  %{_unitdir}/dtprobed.service
> diff --git a/runtest.sh b/runtest.sh
> index 3bcd676ea788..cc9703e12c16 100755
> --- a/runtest.sh
> +++ b/runtest.sh
> @@ -579,7 +579,7 @@ else
>      dtrace="/usr/sbin/dtrace"
>      test_libdir="installed"
>      test_ldflags=""
> -    test_cppflags="-DARCH_$arch -I/usr/lib64/dtrace/include"
> +    test_cppflags="-DARCH_$arch $(pkg-config --cflags dtrace_sdt)"
>  
>      if [[ ! -x $dtrace ]]; then
>          echo "$dtrace not available." >&2
> diff --git a/uts/Build b/uts/Build
> index 864b2dfdacbf..feafa21369f2 100644
> --- a/uts/Build
> +++ b/uts/Build
> @@ -14,11 +14,16 @@ SYS_HEADERS_INSTALL := common/sys/dtrace.h \
>  
>  # sdt*.h are used by programs that contain USDT probes that want to define
>  # probes by hand rather than using dtrace -h.  SystemTap has another header
> -# with the same name, so we install these out of the way.
> +# with the same name, so we install these out of the way and provide a
> +# pkg-config file to pull them in.
>  
>  PROBE_HEADERS_INSTALL := common/sys/sdt.h \
>                           common/sys/sdt_internal.h
>  
> +# The pkg-config files undergo a few translations with sed before installation.
> +
> +SHARE_PKG_CONFIG_INSTALL := dtrace_sdt.pc
> +
>  install::
>  	mkdir -p $(INSTINCLUDEDIR)/sys
>  	$(call describe-install-target,$(INSTINCLUDEDIR)/sys,$(notdir $(SYS_HEADERS_INSTALL)))
> @@ -26,3 +31,10 @@ install::
>  	mkdir -p $(INSTSDTINCLUDEDIR)/sys
>  	$(call describe-install-target,$(INSTSDTINCLUDEDIR)/sys,$(notdir $(PROBE_HEADERS_INSTALL)))
>  	cd $(uts_DIR) && install -m 644 $(PROBE_HEADERS_INSTALL) $(INSTSDTINCLUDEDIR)/sys
> +	mkdir -p $(INSTPKGCONFIGDIR)
> +	$(call describe-install-target,$(INSTPKGCONFIGDIR),$(SHARE_PKG_CONFIG_INSTALL))
> +	for name in $(SHARE_PKG_CONFIG_INSTALL); do \
> +		cd $(uts_DIR) && \
> +		    sed 's, at SDTINCLUDEDIR@,$(SDTINCLUDEDIR),g; s, at VERSION@,$(VERSION),g' < \
> +			$${name}.in > $(INSTPKGCONFIGDIR)/$$name; \
> +	done
> diff --git a/uts/dtrace_sdt.pc.in b/uts/dtrace_sdt.pc.in
> new file mode 100644
> index 000000000000..c5506f9355d9
> --- /dev/null
> +++ b/uts/dtrace_sdt.pc.in
> @@ -0,0 +1,6 @@
> +sdtincludedir = @SDTINCLUDEDIR@
> +
> +Name: DTrace SDT
> +Description: DTrace raw SDT headers
> +Version: @VERSION@
> +Cflags: -I${sdtincludedir}
> -- 
> 2.46.0.277.ge12b8151ed



More information about the DTrace-devel mailing list