Message ID | 20201124091241.3c0dbbc4@gandalf.local.home (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v2] libtracevent: Build libtraceevent.pc via "make" not "make install" | expand |
On Tue, Nov 24, 2020 at 4:12 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> > > "make install" copies libtraceevent.pc.template to libtraceevent.pc and then > modifies it for the installation. This command is usually executed as root, > and when finished, it leaves behind the libtraceevent.pc file owned by root > and that may not be modified by the owner of the directory. > > Instead, have the libtraceevent.pc file created via normal "make" and then > have the "make install" copy it to the system location. > > Link: https://lore.kernel.org/linux-trace-devel/20201123184940.031517790@goodmis.org > > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > --- > Changes since v1: > - Have libtraceevent.pc created by "make" and not simply remove > it after creation from the "make install". This allows us to be > able to debug it, if it was not created properly. > (Tzvetomir Stoyanov) > > Makefile | 25 ++++++++++++++++--------- > 1 file changed, 16 insertions(+), 9 deletions(-) > > diff --git a/Makefile b/Makefile > index 2a6bfcc..318ec55 100644 > --- a/Makefile > +++ b/Makefile > @@ -52,6 +52,9 @@ includedir_relative = traceevent > includedir = $(prefix)/include/$(includedir_relative) > includedir_SQ = '$(subst ','\'',$(includedir))' > > +PKG_CONFIG_SOURCE_FILE = libtraceevent.pc > +PKG_CONFIG_FILE := $(addprefix $(OUTPUT),$(PKG_CONFIG_SOURCE_FILE)) > + > export man_dir man_dir_SQ INSTALL > export DESTDIR DESTDIR_SQ > export EVENT_PARSE_VERSION > @@ -126,7 +129,7 @@ build := -f $(srctree)/build/Makefile.build dir=. obj > TE_IN := $(OUTPUT)libtraceevent-in.o > LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET)) > > -CMD_TARGETS = $(LIB_TARGET) > +CMD_TARGETS = $(LIB_TARGET) $(PKG_CONFIG_FILE) > > TARGETS = $(CMD_TARGETS) > > @@ -208,15 +211,19 @@ define do_install > $(INSTALL) $(if $3,-m $3,) $1 '$(DESTDIR_SQ)$2' > endef > > -PKG_CONFIG_SOURCE_FILE = libtraceevent.pc > -PKG_CONFIG_FILE := $(addprefix $(OUTPUT),$(PKG_CONFIG_SOURCE_FILE)) > +define do_make_pkgconfig_file > + cp -f ${PKG_CONFIG_SOURCE_FILE}.template ${PKG_CONFIG_FILE}; \ > + sed -i "s|INSTALL_PREFIX|${1}|g" ${PKG_CONFIG_FILE}; \ > + sed -i "s|LIB_VERSION|${EVENT_PARSE_VERSION}|g" ${PKG_CONFIG_FILE}; \ > + sed -i "s|LIB_DIR|${libdir}|g" ${PKG_CONFIG_FILE}; \ > + sed -i "s|HEADER_DIR|$(includedir)|g" ${PKG_CONFIG_FILE}; > +endef > + > +$(PKG_CONFIG_FILE) : ${PKG_CONFIG_SOURCE_FILE}.template > + $(QUIET_GEN) $(call do_make_pkgconfig_file,$(prefix)) > + > define do_install_pkgconfig_file > if [ -n "${pkgconfig_dir}" ]; then \ > - cp -f ${PKG_CONFIG_SOURCE_FILE}.template ${PKG_CONFIG_FILE}; \ > - sed -i "s|INSTALL_PREFIX|${1}|g" ${PKG_CONFIG_FILE}; \ > - sed -i "s|LIB_VERSION|${EVENT_PARSE_VERSION}|g" ${PKG_CONFIG_FILE}; \ > - sed -i "s|LIB_DIR|${libdir}|g" ${PKG_CONFIG_FILE}; \ > - sed -i "s|HEADER_DIR|$(includedir)|g" ${PKG_CONFIG_FILE}; \ > $(call do_install,$(PKG_CONFIG_FILE),$(pkgconfig_dir),644); \ > else \ > (echo Failed to locate pkg-config directory) 1>&2; \ > @@ -228,7 +235,7 @@ install_lib: all_cmd install_plugins install_headers install_pkgconfig > $(call do_install_mkdir,$(libdir_SQ)); \ > cp -fpR $(LIB_INSTALL) $(DESTDIR)$(libdir_SQ) > > -install_pkgconfig: > +install_pkgconfig: $(PKG_CONFIG_FILE) > $(call QUIET_INSTALL, $(PKG_CONFIG_FILE)) \ > $(call do_install_pkgconfig_file,$(prefix)) > > -- > 2.25.4 > Thanks Steven! Acked-by: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
diff --git a/Makefile b/Makefile index 2a6bfcc..318ec55 100644 --- a/Makefile +++ b/Makefile @@ -52,6 +52,9 @@ includedir_relative = traceevent includedir = $(prefix)/include/$(includedir_relative) includedir_SQ = '$(subst ','\'',$(includedir))' +PKG_CONFIG_SOURCE_FILE = libtraceevent.pc +PKG_CONFIG_FILE := $(addprefix $(OUTPUT),$(PKG_CONFIG_SOURCE_FILE)) + export man_dir man_dir_SQ INSTALL export DESTDIR DESTDIR_SQ export EVENT_PARSE_VERSION @@ -126,7 +129,7 @@ build := -f $(srctree)/build/Makefile.build dir=. obj TE_IN := $(OUTPUT)libtraceevent-in.o LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET)) -CMD_TARGETS = $(LIB_TARGET) +CMD_TARGETS = $(LIB_TARGET) $(PKG_CONFIG_FILE) TARGETS = $(CMD_TARGETS) @@ -208,15 +211,19 @@ define do_install $(INSTALL) $(if $3,-m $3,) $1 '$(DESTDIR_SQ)$2' endef -PKG_CONFIG_SOURCE_FILE = libtraceevent.pc -PKG_CONFIG_FILE := $(addprefix $(OUTPUT),$(PKG_CONFIG_SOURCE_FILE)) +define do_make_pkgconfig_file + cp -f ${PKG_CONFIG_SOURCE_FILE}.template ${PKG_CONFIG_FILE}; \ + sed -i "s|INSTALL_PREFIX|${1}|g" ${PKG_CONFIG_FILE}; \ + sed -i "s|LIB_VERSION|${EVENT_PARSE_VERSION}|g" ${PKG_CONFIG_FILE}; \ + sed -i "s|LIB_DIR|${libdir}|g" ${PKG_CONFIG_FILE}; \ + sed -i "s|HEADER_DIR|$(includedir)|g" ${PKG_CONFIG_FILE}; +endef + +$(PKG_CONFIG_FILE) : ${PKG_CONFIG_SOURCE_FILE}.template + $(QUIET_GEN) $(call do_make_pkgconfig_file,$(prefix)) + define do_install_pkgconfig_file if [ -n "${pkgconfig_dir}" ]; then \ - cp -f ${PKG_CONFIG_SOURCE_FILE}.template ${PKG_CONFIG_FILE}; \ - sed -i "s|INSTALL_PREFIX|${1}|g" ${PKG_CONFIG_FILE}; \ - sed -i "s|LIB_VERSION|${EVENT_PARSE_VERSION}|g" ${PKG_CONFIG_FILE}; \ - sed -i "s|LIB_DIR|${libdir}|g" ${PKG_CONFIG_FILE}; \ - sed -i "s|HEADER_DIR|$(includedir)|g" ${PKG_CONFIG_FILE}; \ $(call do_install,$(PKG_CONFIG_FILE),$(pkgconfig_dir),644); \ else \ (echo Failed to locate pkg-config directory) 1>&2; \ @@ -228,7 +235,7 @@ install_lib: all_cmd install_plugins install_headers install_pkgconfig $(call do_install_mkdir,$(libdir_SQ)); \ cp -fpR $(LIB_INSTALL) $(DESTDIR)$(libdir_SQ) -install_pkgconfig: +install_pkgconfig: $(PKG_CONFIG_FILE) $(call QUIET_INSTALL, $(PKG_CONFIG_FILE)) \ $(call do_install_pkgconfig_file,$(prefix))