summaryrefslogtreecommitdiff
path: root/sys-apps/usbguard/files/usbguard-1.0.0-bash-completion-configure.patch
blob: c63a85f23a50957c6b0d4fd407ff4e96911ddfa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
https://github.com/USBGuard/usbguard/pull/483

From b3bb39e0e5de61e1c713cb98ebca5e4c6529e2b9 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Sun, 18 Jul 2021 03:42:21 +0100
Subject: [PATCH] configure.ac: Use standard --with-bash-completion-dir option

Rationale:
This makes it a lot easier to enable/disable installation
of bash completion files rather than it being based on
a certain package being installed (or not). It's useful
in Gentoo Linux for example where we may want to always
install Bash completion files to the right location, even
if the user isn't using it yet, to save rebuilds.

This makes a few changes to the current Bash completion logic, mainly:
* Falls back gracefully to a standard directory if bash-completion
  itself is not installed (in that case, we can't ask it via pkgconfig
  where to place files).

* So the behaviour is now:
  * no argument / --with-bash-completion-dir=yes:

    Asks pkgconfig, but falls back to standard directory.

  * --with-bash-completion-dir=dir:

    Use the given directory with no detection.

  * --without-bash-completion-dir:

    No installation of Bash completion files.

Signed-off-by: Sam James <sam@gentoo.org>
---
 Makefile.am  |  2 +-
 configure.ac | 32 ++++++++++++++------------------
 2 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 34a2e96..910c3c5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -438,7 +438,7 @@ usbguard_LDADD=\
 	$(top_builddir)/libusbguard.la \
 	${PTHREAD_LIBS}
 
-if BASH_COMPLETION_ENABLED
+if ENABLE_BASH_COMPLETION
 bashcompletiondir = $(BASH_COMPLETION_DIR)
 dist_bashcompletion_DATA = $(top_srcdir)/scripts/bash_completion/usbguard
 endif
diff --git a/configure.ac b/configure.ac
index 73021b6..4207ae2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -663,11 +663,18 @@ AC_ARG_ENABLE([systemd],
        *) AC_MSG_ERROR([bad value ${enableval} for --enable-systemd]) ;;
      esac], [systemd=no])
 
-
-PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
-  [bash_completion_dir="`$PKG_CONFIG --variable=completionsdir bash-completion`"
-   bash_completion=yes],
-  [bash_completion=no])
+AC_ARG_WITH([bash-completion-dir],
+	AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
+		[Enable bash auto-completion. Uses pkgconfig if no path given. @<:@default=yes@:>@]),
+	[], [with_bash_completion_dir=yes])
+
+if test "x$with_bash_completion_dir" = "xyes"; then
+	PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
+		[BASH_COMPLETION_DIR=$($PKG_CONFIG --variable=completionsdir bash-completion)],
+		[BASH_COMPLETION_DIR="$datadir/bash-completion/completions"])
+else
+	BASH_COMPLETION_DIR="$with_bash_completion_dir"
+fi
 
 if test "x$debug" = xyes; then
    CXXFLAGS="$CXXFLAGS $CXXFLAGS_DEBUG_ENABLED"
@@ -706,19 +713,8 @@ fi
 
 AC_SUBST([ANALYZE_CONFIGURE_ARGS], $ac_configure_args)
 
-case "$bash_completion_dir" in
-  /usr/share/*|/usr/local/share/*)
-    bash_completion_dir=$(echo "$bash_completion_dir" | sed -r 's,^(/usr/share|/usr/local/share),${datadir},')
-    ;;
-  /usr/*|/usr/local/*)
-    bash_completion_dir=$(echo "$bash_completion_dir" | sed -r 's,^(/usr|/usr/local),${prefix},')
-    ;;
-  /*)
-    bash_completion_dir='${prefix}'"$bash_completion_dir"
-    ;;
-esac
-
-AC_SUBST([BASH_COMPLETION_DIR], $bash_completion_dir)
+AC_SUBST([BASH_COMPLETION_DIR])
+AM_CONDITIONAL([ENABLE_BASH_COMPLETION], [test "x$with_bash_completion_dir" != "xno"])
 
 AM_CONDITIONAL([SYSTEMD_SUPPORT_ENABLED], [test "x$systemd" = xyes ])
 AM_CONDITIONAL([DBUS_ENABLED], [test "x$with_dbus" = xyes ])
-- 
2.32.0