[libvirt] [PATCH] virt-wireshark.m4: Defer $(prefix) substitution
Andrea Bolognani
abologna at redhat.com
Thu Oct 20 14:33:18 UTC 2016
On Thu, 2016-10-20 at 15:54 +0800, Michal Privoznik wrote:
> The problem with evaluating $(prefix) in configure phase is that
> autoconf does a lot of magic with this variable. Firstly, if the
> --prefix argument is not set for the configure script, the
> variable will have value "NONE". Wait, wat? Secondly, even
> autoconf scripts then have special cases for when variable is
> "NONE". It's even worse - whenever they need to construct new
> path based on prefix, they save its current value, substitute it
> with proper value (like /usr/local/), do what they need and then
> restore the original value. Le sigh.
> This mad behaviour is, however, suppressed if there's --prefix on
> the configure command line.
> Now, the problem is that we tried to construct path for wireshark
> plugin in the m4 file. Based on the knowledge described above, we
> shouldn't do it and just construct the full path in Makefile
> later where prefix has proper value.
I don't think we need to go into so much detail, we can just
point to the autoconf manual[1] which tells us *not* to use
these variables outside of Makefiles so that users still have
a chance to override $(prefix) at 'make' or 'make install'
time.
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> m4/virt-wireshark.m4 | 2 +-
> tools/Makefile.am | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/m4/virt-wireshark.m4 b/m4/virt-wireshark.m4
> index f383e2b..e1e4a59 100644
> --- a/m4/virt-wireshark.m4
> +++ b/m4/virt-wireshark.m4
> @@ -38,7 +38,7 @@ AC_DEFUN([LIBVIRT_CHECK_WIRESHARK],[
> if test "x$ws_prefix" = "x" ; then
> ws_prefix="/usr";
> fi
> - plugindir="${prefix}${plugindir#$ws_prefix}"
> + plugindir="${plugindir#$ws_prefix}"
This got me wondering: is what we're doing even correct?
If the plugindir for wireshark is eg.
/usr/lib64/wireshark/plugins, should we still install under
an arbitrary $(prefix)? Will wireshark pick up the plugin
then?
> fi
> elif test "x$with_ws_plugindir" = "xno" || test "x$with_ws_plugindir" = "xyes"; then
> AC_MSG_ERROR([ws-plugindir must be used only with valid path])
> diff --git a/tools/Makefile.am b/tools/Makefile.am
> index e7e42c3..08e1680 100644
> --- a/tools/Makefile.am
> +++ b/tools/Makefile.am
> @@ -398,7 +398,7 @@ EXTRA_DIST += \
>
> if WITH_WIRESHARK_DISSECTOR
>
> -ws_plugindir = $(plugindir)
> +ws_plugindir = $(prefix)$(plugindir)
> ws_plugin_LTLIBRARIES = wireshark/src/libvirt.la
> wireshark_src_libvirt_la_CPPFLAGS = \
> -I wireshark/src $(WIRESHARK_DISSECTOR_CFLAGS)
ACK
[1] https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Installation-Directory-Variables.html
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list