completion: Place the completion helper in libexec

This patch reorganize the bash completion scripts in order to install
the binary helper (gst-completion-helper) in libexec path rather then
share folder. Most Linux hierarchy compliance requires that no binary
executable are placed in share. We also cleanup the unused .pc entries
and remove copy pasted parts of the script. Note that other project
including the common helper, should now use $_GST_HELPER to read
the binary executable gst-completion-helper. This helper is not longer
version, as it is placed in a versionned subfolder
(libexec/gstreamer.10) just like the other helpers (scanner and ptp).
This commit is contained in:
Nicolas Dufresne 2017-04-04 13:42:50 -04:00
parent c361365890
commit bae1fe254a
10 changed files with 64 additions and 49 deletions

View file

@ -153,11 +153,14 @@ then
fi
PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
[BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"],
[BASH_COMPLETION_DIR="$datadir/bash-completion/completions"])
PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
[BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"],
[BASH_HELPERS_DIR="$datadir/bash-completion/helpers"])
[
BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"
BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"
],
[
BASH_COMPLETION_DIR="$datadir/bash-completion/completions"
BASH_HELPERS_DIR="$datadir/bash-completion/helpers"
])
else
BASH_COMPLETION_DIR="$with_bash_completion_dir/completions"
BASH_HELPERS_DIR="$with_bash_completion_dir/helpers"
@ -1013,6 +1016,12 @@ AC_DEFINE_UNQUOTED(GST_PLUGIN_SCANNER_INSTALLED,
"$GST_PLUGIN_SCANNER_INSTALLED", [location of the installed gst-plugin-scanner])
AC_SUBST(GST_PLUGIN_SCANNER_INSTALLED)
dnl completion helper locations
AS_AC_EXPAND(GST_COMPLETION_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-completion-helper)
AC_DEFINE_UNQUOTED(GST_COMPLETION_HELPER_INSTALLED,
"$GST_COMPLETION_HELPER_INSTALLED", [location of the installed gst-completion-helper])
AC_SUBST(GST_COMPLETION_HELPER_INSTALLED)
dnl ptp helper locations
AS_AC_EXPAND(GST_PTP_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-ptp-helper)
AC_DEFINE_UNQUOTED(GST_PTP_HELPER_INSTALLED,
@ -1026,6 +1035,7 @@ AG_GST_CHECK_CHECKS
AC_CONFIG_FILES(
Makefile
data/Makefile
data/bash-completion/helpers/gst
gst/Makefile
gst/gstconfig.h
gst/gstversion.h

View file

@ -1,4 +1,7 @@
if ENABLE_BASH_COMPLETION
bashhelpersdir = $(BASH_HELPERS_DIR)
dist_bashhelpers_DATA = bash-completion/helpers/gst
bashcompletiondir = $(BASH_COMPLETION_DIR)
dist_bashcompletion_DATA = completions/gst-inspect-1.0 completions/gst-launch-1.0
dist_bashcompletion_DATA = bash-completion/completions/gst-inspect-1.0 \
bash-completion/completions/gst-launch-1.0
endif

View file

@ -21,7 +21,7 @@
_GST_HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
if [[ ! -d "$_GST_HELPERDIR" ]]; then
_GST_HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
_GST_HELPERDIR="$(pkg-config --variable=bashhelpersdir gstreamer-1.0)"
else
_GST_HELPERDIR=`cd "$_GST_HELPERDIR"; pwd`
fi
@ -29,11 +29,9 @@ fi
# Common definitions
. "$_GST_HELPERDIR"/gst
_GST_HELPER="$_GST_HELPERDIR/gst-completion-helper-1.0"
_gst_inspect_all_arguments ()
{
COMPREPLY=( $(compgen -W "$(gst-inspect-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
_gst_all_arguments gst-inspect-1.0
}
_gst_inspect_all_elements ()
@ -41,7 +39,7 @@ _gst_inspect_all_elements ()
COMPREPLY=( $(compgen -W "$($_GST_HELPER -l)" -- $cur) )
}
_gstinspect___atleast_version () { _gst_mandatory_argument; }
_gstinspect___atleast_version () { _gst_mandatory_argument gst-inspect-1.0; }
_gstinspect___exists ()
{
@ -56,7 +54,7 @@ __inspect_main ()
do
local var
var="${COMP_WORDS[i]}"
if [[ "$var" == "--"* ]]
if [[ "$var" == "-"* ]]
then
command="$var"
fi
@ -73,7 +71,8 @@ __inspect_main ()
function_exists=$?
if [[ "$cur" == "--"* ]]; then
if [[ "$cur" == "-"* ]]
then
_gst_inspect_all_arguments
elif [ $function_exists -eq 0 ]
then

View file

@ -21,7 +21,7 @@
_GST_HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
if [[ ! -d "$_GST_HELPERDIR" ]]; then
_GST_HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
_GST_HELPERDIR="$(pkg-config --variable=bashhelpersdir gstreamer-1.0)"
else
_GST_HELPERDIR=`cd "$_GST_HELPERDIR"; pwd`
fi
@ -29,11 +29,9 @@ fi
# Common definitions
. "$_GST_HELPERDIR"/gst
_GST_HELPER="$_GST_HELPERDIR/gst-completion-helper-1.0"
_gst_launch_all_arguments ()
{
COMPREPLY=( $(compgen -W "$(gst-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
_gst_all_arguments gst-launch-1.0
}
_gst_complete_compatible_elements ()
@ -51,7 +49,7 @@ _gst_complete_element_properties ()
COMPREPLY=( $(compgen -W "$($_GST_HELPER --element-properties $previous_element)" -- $cur) )
}
_gstlaunch___exclude_ () { _gst_mandatory_argument; }
_gstlaunch___exclude_ () { _gst_mandatory_argument gst-launch-1.0; }
_gst_launch_main ()
{
@ -61,7 +59,7 @@ _gst_launch_main ()
do
local var
var="${COMP_WORDS[i]}"
if [[ "$var" == "--"* ]]
if [[ "$var" == "-"* ]]
then
command="$var"
fi
@ -74,7 +72,7 @@ _gst_launch_main ()
local var
var="${COMP_WORDS[i]}"
if [[ "$var" == "--"* ]]
if [[ "$var" == "-"* ]]
then
i=$(($i+1))
continue
@ -105,7 +103,7 @@ _gst_launch_main ()
function_exists=$?
if [[ "$cur" == "--"* ]]; then
if [[ "$cur" == "-"* ]]; then
_gst_launch_all_arguments
elif [ $function_exists -eq 0 ]
then

View file

@ -0,0 +1 @@
gst

View file

@ -18,17 +18,39 @@
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
_GST_HELPER="@GST_COMPLETION_HELPER_INSTALLED@"
if [[ ! -x "$_GST_HELPER" ]]
then
helper="$(pkg-config --variable=helpersdir gstreamer-@GST_API_VERSION@)/gst-completion-helper"
if [ -x "$helper" ]
then
_GST_HELPER=$helper
fi
fi
___gst_debug_level () { _gst_mandatory_argument; }
___gst_debug () { _gst_mandatory_argument; }
___gst_debug_color_mode () { _gst_mandatory_argument; }
___gst_plugin_path () { _gst_mandatory_argument; }
___gst_plugin_load () { _gst_mandatory_argument; }
_gst_all_arguments ()
{
COMPREPLY=( $(compgen -W "$($1 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*\|-[[:alpha:]],' | cut -d'=' -f1 | cut -d',' -f1)" -- $cur) )
}
_gst_mandatory_argument ()
{
__app=$1
if [[ -z $__app ]]
then
__app=gst-launch-1.0
fi
if [[ "$prev" != "$command" ]]
then
COMPREPLY=( $(compgen -W "$(gst-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
_gst_all_arguments $__app
else
COMPREPLY=("$cur")
fi

View file

@ -1,4 +1,4 @@
gst-plugin-scanner
gst-completion-helper-?.?*
gst-completion-helper
gst-ptp-helper
*.o

View file

@ -1,14 +1,3 @@
if ENABLE_BASH_COMPLETION
bin_PROGRAMS = gst-completion-helper-@GST_API_VERSION@
gst_completion_helper_@GST_API_VERSION@_SOURCES = gst-completion-helper.c
gst_completion_helper_@GST_API_VERSION@_CFLAGS = $(GST_OBJ_CFLAGS)
gst_completion_helper_@GST_API_VERSION@_LDADD = $(GST_OBJ_LIBS)
bashhelpersdir = $(BASH_HELPERS_DIR)
dist_bashhelpers_DATA = gst
endif
helpers_PROGRAMS = gst-plugin-scanner
helpersdir=$(libexecdir)/gstreamer-$(GST_API_VERSION)
@ -16,6 +5,13 @@ gst_plugin_scanner_SOURCES = gst-plugin-scanner.c
gst_plugin_scanner_CFLAGS = $(GST_OBJ_CFLAGS)
gst_plugin_scanner_LDADD = $(GST_OBJ_LIBS)
if ENABLE_BASH_COMPLETION
helpers_PROGRAMS += gst-completion-helper
gst_completion_helper_SOURCES = gst-completion-helper.c
gst_completion_helper_CFLAGS = $(GST_OBJ_CFLAGS)
gst_completion_helper_LDADD = $(GST_OBJ_LIBS)
endif
if HAVE_PTP
helpers_PROGRAMS += gst-ptp-helper
gst_ptp_helper_SOURCES = gst-ptp-helper.c
@ -23,18 +19,6 @@ gst_ptp_helper_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
gst_ptp_helper_LDADD = $(GST_OBJ_LIBS) $(GIO_LIBS) $(CAP_LIBS)
endif
if ENABLE_BASH_COMPLETION
install-exec-hook:
$(MKDIR_P) $(DESTDIR)$(BASH_HELPERS_DIR) && \
cd $(DESTDIR)$(bindir) && \
$(INSTALL) `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT) \
$(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT) && \
rm `echo "gst-completion-helper-" | sed '$(transform)'`@GST_API_VERSION@$(EXEEXT)
uninstall-hook:
rm -f $(DESTDIR)$(BASH_HELPERS_DIR)/gst-completion-helper-@GST_API_VERSION@$(EXEEXT)
endif
install-data-hook:
if HAVE_PTP
if HAVE_PTP_HELPER_SETUID

View file

@ -7,7 +7,7 @@ includedir=@abs_top_builddir@
toolsdir=@abs_top_builddir@/tools
pluginsdir=@abs_top_builddir@
girdir=@abs_top_builddir@/gst
completionsdir=@abs_top_builddir@/data/completions
bashhelpersdir=@abs_top_builddir@/data/bash-completion/helpers
helpersdir=@abs_top_builddir@/libs/gst/helpers
typelibdir=@abs_top_builddir@/gst

View file

@ -7,8 +7,6 @@ pluginsdir=@libdir@/gstreamer-@GST_API_VERSION@
datarootdir=${prefix}/share
datadir=${datarootdir}
girdir=${datadir}/gir-1.0
completionsdir=@BASH_COMPLETION_DIR@
helpersdir=@BASH_HELPERS_DIR@
typelibdir=${libdir}/girepository-1.0
Name: GStreamer