completion: Place the completion helper in libexec
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 4 Apr 2017 17:42:50 +0000 (13:42 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 4 Apr 2017 18:46:48 +0000 (14:46 -0400)
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).

configure.ac
data/Makefile.am
data/bash-completion/completions/gst-inspect-1.0 [moved from data/completions/gst-inspect-1.0 with 86% similarity]
data/bash-completion/completions/gst-launch-1.0 [moved from data/completions/gst-launch-1.0 with 89% similarity]
data/bash-completion/helpers/.gitignore [new file with mode: 0644]
data/bash-completion/helpers/gst.in [moved from libs/gst/helpers/gst with 69% similarity]
libs/gst/helpers/.gitignore
libs/gst/helpers/Makefile.am
pkgconfig/gstreamer-uninstalled.pc.in
pkgconfig/gstreamer.pc.in

index 34a7979..47401f9 100644 (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
index 7098492..16214fc 100644 (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
similarity index 86%
rename from data/completions/gst-inspect-1.0
rename to data/bash-completion/completions/gst-inspect-1.0
index 980e140..667e503 100644 (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
similarity index 89%
rename from data/completions/gst-launch-1.0
rename to data/bash-completion/completions/gst-launch-1.0
index 941cf84..80ad34c 100644 (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
diff --git a/data/bash-completion/helpers/.gitignore b/data/bash-completion/helpers/.gitignore
new file mode 100644 (file)
index 0000000..446b11b
--- /dev/null
@@ -0,0 +1 @@
+gst
similarity index 69%
rename from libs/gst/helpers/gst
rename to data/bash-completion/helpers/gst.in
index bd34abf..0acca06 100644 (file)
 # 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
index b6c1ed6..2a86569 100644 (file)
@@ -1,4 +1,4 @@
 gst-plugin-scanner
-gst-completion-helper-?.?*
+gst-completion-helper
 gst-ptp-helper
 *.o
index 0067779..66b19ca 100644 (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
index 8f69dd5..b8dcdf8 100644 (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
 
index 78b8aa9..b949d6c 100644 (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