plugins: Fix paths to match WSUG

The Wireshark User Guide seems to say:

Global lua plugins are in $pkglibdir/plugins
Personal lua plugins are in XDG_CONFIG_HOME/plugins

Global binary plugins are in $pkglibdir/plugins/$version
Personal binary plugins are in XDG_CONFIG_HOME/plugins/$version

Fix code to match that. This is a backward-incompatible change
for global lua plugins and personal binary plugins.

Adds a version subfolder to the personal plugin folder for binary plugins.

This allows for safe upgrades and side-by-side installations
with different prefixes (they no longer use the same personal dir).

Change-Id: Ie0f039113628a257625a9a9fb2cb30e532f5dd47
Reviewed-on: https://code.wireshark.org/review/23516
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
This commit is contained in:
João Valverde 2017-09-12 10:51:46 +01:00 committed by João Valverde
parent e8e8b0d0b4
commit 978f6b4e1a
6 changed files with 16 additions and 8 deletions

View File

@ -1362,6 +1362,7 @@ endif()
# Directory where plugins and Lua dissectors can be found.
set(PLUGIN_VERSION_DIR "plugins/${CPACK_PACKAGE_VERSION}")
set(PLUGIN_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/${CPACK_PACKAGE_NAME}/${PLUGIN_VERSION_DIR}")
# Used by the WiresharkConfig.cmake.in module
if (WIN32)
set(PLUGIN_INSTALL_DIR "${PLUGIN_VERSION_DIR}")
else ()

View File

@ -401,9 +401,6 @@
/* Support for pcap-ng */
#cmakedefine PCAP_NG_DEFAULT 1
/* Plugin installation directory */
#cmakedefine PLUGIN_INSTALL_DIR "${PLUGIN_INSTALL_DIR}"
/* Define if we are using version of of the Portaudio library API */
#cmakedefine PORTAUDIO_API_1 1

View File

@ -21,6 +21,10 @@
include(UseABICheck)
if(NOT WIN32)
add_definitions(-DPLUGIN_DIR=\"${CMAKE_INSTALL_FULL_LIBDIR}/wireshark/plugins\")
endif()
set(WSUTIL_PUBLIC_HEADERS
adler32.h
base32.h

View File

@ -24,7 +24,7 @@ AM_CPPFLAGS = $(INCLUDEDIRS) $(WS_CPPFLAGS) -DWS_BUILD_DLL \
-DTOP_SRCDIR=\"$(abs_top_srcdir)\" \
-DDATAFILE_DIR=\"$(pkgdatadir)\" \
-DEXTCAP_DIR=\"$(extcapdir)\" \
-DPLUGIN_INSTALL_DIR=\"$(plugindir)\" \
-DPLUGIN_DIR=\"$(pkglibdir)/plugins\" \
-DJSMN_STRICT \
$(GLIB_CFLAGS) $(LIBGCRYPT_CFLAGS) \
$(LIBGNUTLS_CFLAGS)

View File

@ -955,7 +955,7 @@ get_datafile_dir(void)
* otherwise, if we're running from an app bundle in macOS, we
* use the Contents/PlugIns/wireshark subdirectory of the app bundle;
*
* otherwise, we use the PLUGIN_INSTALL_DIR value supplied by the
* otherwise, we use the PLUGIN_DIR value supplied by the
* configure script.
*/
static char *plugin_dir = NULL;
@ -1028,7 +1028,7 @@ init_plugin_dir(void)
}
#endif
else {
plugin_dir = g_strdup(PLUGIN_INSTALL_DIR);
plugin_dir = g_strdup(PLUGIN_DIR);
}
}
#endif

View File

@ -340,7 +340,11 @@ scan_plugins(plugin_load_failure_mode mode)
}
}
else
plugins_scan_dir(plugin_dir, mode);
{
plugin_dir_path = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", get_plugin_dir(), VERSION);
plugins_scan_dir(plugin_dir_path, mode);
g_free(plugin_dir_path);
}
/*
* If the program wasn't started with special privileges,
@ -352,7 +356,9 @@ scan_plugins(plugin_load_failure_mode mode)
*/
if (!started_with_special_privs())
{
plugins_scan_dir(get_plugins_pers_dir(), mode);
plugin_dir_path = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", get_plugins_pers_dir(), VERSION);
plugins_scan_dir(plugin_dir_path, mode);
g_free(plugin_dir_path);
}
}
}