Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> --- configure.ac | 3 -- m4/virt-bash-completion.m4 | 70 -------------------------------------- meson.build | 30 ++++++++++++++++ meson_options.txt | 2 ++ 4 files changed, 32 insertions(+), 73 deletions(-) delete mode 100644 m4/virt-bash-completion.m4 diff --git a/configure.ac b/configure.ac index b822e862535..a8f838c0ccf 100644 --- a/configure.ac +++ b/configure.ac @@ -114,7 +114,6 @@ fi # Check for compiler and library settings. -LIBVIRT_ARG_BASH_COMPLETION LIBVIRT_ARG_BLKID LIBVIRT_ARG_CAPNG LIBVIRT_ARG_CURL @@ -146,7 +145,6 @@ LIBVIRT_ARG_VIRTUALPORT LIBVIRT_ARG_WIRESHARK LIBVIRT_ARG_YAJL -LIBVIRT_CHECK_BASH_COMPLETION LIBVIRT_CHECK_BLKID LIBVIRT_CHECK_CAPNG LIBVIRT_CHECK_CURL @@ -471,7 +469,6 @@ LIBVIRT_RESULT_DRIVER_MODULES AC_MSG_NOTICE([]) AC_MSG_NOTICE([Libraries]) AC_MSG_NOTICE([]) -LIBVIRT_RESULT_BASH_COMPLETION LIBVIRT_RESULT_BLKID LIBVIRT_RESULT_CAPNG LIBVIRT_RESULT_CURL diff --git a/m4/virt-bash-completion.m4 b/m4/virt-bash-completion.m4 deleted file mode 100644 index c8342176f8b..00000000000 --- a/m4/virt-bash-completion.m4 +++ /dev/null @@ -1,70 +0,0 @@ -dnl Bash completion support -dnl -dnl Copyright (C) 2017 Red Hat, Inc. -dnl -dnl This library is free software; you can redistribute it and/or -dnl modify it under the terms of the GNU Lesser General Public -dnl License as published by the Free Software Foundation; either -dnl version 2.1 of the License, or (at your option) any later version. -dnl -dnl This library is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl Lesser General Public License for more details. -dnl -dnl You should have received a copy of the GNU Lesser General Public -dnl License along with this library. If not, see -dnl <http://www.gnu.org/licenses/>. -dnl -dnl Inspired by libguestfs code. -dnl - -AC_DEFUN([LIBVIRT_ARG_BASH_COMPLETION],[ - LIBVIRT_ARG_WITH_FEATURE([BASH_COMPLETION], [bash-completion], [check], [2.0]) - LIBVIRT_ARG_WITH([BASH_COMPLETIONS_DIR], - [directory containing bash completions scripts], - [check]) -]) - -AC_DEFUN([LIBVIRT_CHECK_BASH_COMPLETION], [ - AC_REQUIRE([LIBVIRT_CHECK_READLINE]) - - if test "x$with_readline" != "xyes" ; then - if test "x$with_bash_completion" = "xyes" ; then - AC_MSG_ERROR([readline is required for bash completion support]) - else - with_bash_completion=no - fi - fi - - LIBVIRT_CHECK_PKG([BASH_COMPLETION], [bash-completion], [2.0]) - - if test "x$with_bash_completion" = "xyes" ; then - if test "x$with_bash_completions_dir" = "xcheck"; then - AC_MSG_CHECKING([for bash-completions directory]) - BASH_COMPLETIONS_DIR="$($PKG_CONFIG --variable=completionsdir bash-completion)" - AC_MSG_RESULT([$BASH_COMPLETIONS_DIR]) - - dnl Replace bash completions's exec_prefix with our own. - dnl Note that ${exec_prefix} is kept verbatim at this point in time, - dnl and will only be expanded later, when make is called: this makes - dnl it possible to override such prefix at compilation or installation - dnl time - bash_completions_prefix="$($PKG_CONFIG --variable=prefix bash-completion)" - if test "x$bash_completions_prefix" = "x" ; then - bash_completions_prefix="/usr" - fi - - BASH_COMPLETIONS_DIR='${exec_prefix}'"${BASH_COMPLETIONS_DIR#$bash_completions_prefix}" - elif test "x$with_bash_completions_dir" = "xno" || test "x$with_bash_completions_dir" = "xyes"; then - AC_MSG_ERROR([bash-completions-dir must be used only with valid path]) - else - BASH_COMPLETIONS_DIR=$with_bash_completions_dir - fi - AC_SUBST([BASH_COMPLETIONS_DIR]) - fi -]) - -AC_DEFUN([LIBVIRT_RESULT_BASH_COMPLETION],[ - LIBVIRT_RESULT_LIB([BASH_COMPLETION]) -]) diff --git a/meson.build b/meson.build index c30b14c1643..5cca3b7d5c2 100644 --- a/meson.build +++ b/meson.build @@ -965,6 +965,9 @@ if audit_dep.found() conf.set('WITH_AUDIT', 1) endif +bash_completion_version = '2.0' +bash_completion_dep = dependency('bash-completion', version: '>=' + bash_completion_version, required: get_option('bash_completion')) + # readline 7.0 is the first version which includes pkg-config support readline_version = '7.0' readline_dep = dependency('readline', version: '>=' + readline_version, required: false) @@ -1029,6 +1032,32 @@ if readline_dep.found() endif +# generic build dependencies checks + +if bash_completion_dep.found() and not readline_dep.found() + if get_option('bash_completion').enabled() + error('readline is required for bash completion support') + else + bash_completion_dep = dependency('', required: false) + endif +endif +if bash_completion_dep.found() + bash_completion_dir = get_option('bash_completion_dir') + if bash_completion_dir == '' + bash_completion_dir = bash_completion_dep.get_pkgconfig_variable('completionsdir') + bash_completion_prefix = bash_completion_dep.get_pkgconfig_variable('prefix') + rc = run_command( + 'python3', '-c', + 'print("@0@".replace("@1@", "@2@"))'.format( + bash_completion_dir, bash_completion_prefix, prefix, + ), + check: true, + ) + bash_completion_dir = rc.stdout().strip() + endif +endif + + # define top include directory top_inc_dir = include_directories('.') @@ -1052,6 +1081,7 @@ libs_summary = { 'apparmor': apparmor_dep.found(), 'attr': attr_dep.found(), 'audit': audit_dep.found(), + 'bash_completion': bash_completion_dep.found(), 'readline': readline_dep.found(), } summary(libs_summary, section: 'Libraries', bool_yn: true) diff --git a/meson_options.txt b/meson_options.txt index aafc694533a..5313b9bb5fb 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -12,4 +12,6 @@ option('test_coverage', type: 'boolean', value: false, description: 'turn on cod option('apparmor', type: 'feature', value: 'auto', description: 'apparmor support') option('attr', type: 'feature', value: 'auto', description: 'attr support') option('audit', type: 'feature', value: 'auto', description: 'audit support') +option('bash_completion', type: 'feature', value: 'auto', description: 'bash-completion support') +option('bash_completion_dir', type: 'string', value: '', description: 'directory containing bash completion scripts') option('readline', type: 'feature', value: 'auto', description: 'readline support') -- 2.26.2