From d3cb36d296a7ffded035d5a1f7a8e4ab8ca1ef81 Mon Sep 17 00:00:00 2001 From: Maurizio Lombardi Date: Mon, 29 Aug 2022 18:59:36 +0200 Subject: [PATCH] Fix tab completion Resolves: #2104945 Signed-off-by: Maurizio Lombardi --- ...apse-declaration-and-attribute-assig.patch | 69 +++++++++++++++++++ ...tion.sh-fixed-error-when-sourced-twi.patch | 28 ++++++++ ...tion.sh-fixed-typo-with-seagate-plug.patch | 26 +++++++ nvme-cli.spec | 12 +++- 4 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 0002-completions-Collapse-declaration-and-attribute-assig.patch create mode 100644 0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch create mode 100644 0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch diff --git a/0002-completions-Collapse-declaration-and-attribute-assig.patch b/0002-completions-Collapse-declaration-and-attribute-assig.patch new file mode 100644 index 0000000..3640ba9 --- /dev/null +++ b/0002-completions-Collapse-declaration-and-attribute-assig.patch @@ -0,0 +1,69 @@ +From 25fd8c707b106ca0763402566ad657ef710bf09e Mon Sep 17 00:00:00 2001 +From: Brad Mouring +Date: Mon, 2 May 2022 22:38:24 -0500 +Subject: [PATCH] completions: Collapse declaration and attribute assignment + +Previously, the associative arrays for the vendor/subcommands and +vendor/functions listings were split into a declaration of type +(using "typeset") and attribute definition (using "readonly"). On +bash 5.1.16 (at least), this lead to the following error (reported +after enabling -xv to expand and print shell inputs) + + ... + + . /usr/share/bash-completion/completions/nvme + # bash tab completion for the nvme command line utility + # (unfortunately, bash won't let me add descriptions to cmds) + # Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015 + + # Constant to indicate command has no options + readonly NO_OPTS="" + ++ readonly NO_OPTS= + ++ NO_OPTS= + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile + typeset -A _plugin_subcmds + ++ typeset -A _plugin_subcmds + readonly _plugin_subcmds=( + [intel]="id-ctrl internal-log lat-stats \ + ... + ++ _plugin_subcmds=(['intel']='id-ctrl internal-log lat-stats... + bash: 'intel': syntax error: operand expected (error token is "'intel'") + ... + +Using the available flags for "typeset" to declare the variables as +readonly arrays resolved the issue (and allows for bash completion +to work as-expected) + +Signed-off-by: Brad Mouring +--- + completions/bash-nvme-completion.sh | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index 5e0eb23b..51931bc1 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -7,8 +7,7 @@ readonly NO_OPTS="" + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile +-typeset -A _plugin_subcmds +-readonly _plugin_subcmds=( ++typeset -Ar _plugin_subcmds=( + [intel]="id-ctrl internal-log lat-stats \ + set-bucket-thresholds lat-stats-tracking \ + market-name smart-log-add temp-stats" +@@ -55,8 +54,7 @@ readonly _plugin_subcmds=( + ) + + # Associative array mapping plugins to coresponding option completions +-typeset -A _plugin_funcs +-readonly _plugin_funcs=( ++typeset -Ar _plugin_funcs=( + [intel]="plugin_intel_opts" + [amzn]="plugin_amzn_opts" + [memblaze]="plugin_memblaze_opts" +-- +2.31.1 + diff --git a/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch b/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch new file mode 100644 index 0000000..54d30ef --- /dev/null +++ b/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch @@ -0,0 +1,28 @@ +From eac9f9b70081ff2df2e2ea11efb8fc6ec3754f64 Mon Sep 17 00:00:00 2001 +From: Evgeny Grin +Date: Fri, 17 Jun 2022 15:00:39 +0300 +Subject: [PATCH] bash-nvme-completion.sh: fixed error when sourced twice + +One-line "readonly" with assignment produce error if completion file +is sourced for the second time (/etc/profile reload, su etc.) +--- + completions/bash-nvme-completion.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index e5d9ff19..7b8a2121 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -5,7 +5,8 @@ + # Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015 + + # Constant to indicate command has no options +-readonly NO_OPTS="" ++NO_OPTS="" ++readonly NO_OPTS + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile +-- +2.31.1 + diff --git a/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch b/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch new file mode 100644 index 0000000..fea56be --- /dev/null +++ b/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch @@ -0,0 +1,26 @@ +From 4284d4cc299e8604f898856bdd38fc4979e56586 Mon Sep 17 00:00:00 2001 +From: Evgeny Grin +Date: Fri, 17 Jun 2022 15:08:02 +0300 +Subject: [PATCH] bash-nvme-completion.sh: fixed typo with seagate plugin + +Obvious typo resulted in broken completion for seagete plugin +--- + completions/bash-nvme-completion.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index 7b8a2121..00593b96 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -940,7 +940,7 @@ plugin_micron_opts () { + return 0 + } + +-lugin_seagate_opts () { ++plugin_seagate_opts () { + local opts="" + local compargs="" + +-- +2.31.1 + diff --git a/nvme-cli.spec b/nvme-cli.spec index cf073d2..5207252 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -3,7 +3,7 @@ Name: nvme-cli Version: 2.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: NVMe management command line interface License: GPLv2+ @@ -12,6 +12,9 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz #Patch0: nvme-cli-makefile-dont-install-host-params-patch Patch0: 0001-nvme-Return-status-error-code-for-effects-log-comman.patch +Patch1: 0002-completions-Collapse-declaration-and-attribute-assig.patch +Patch2: 0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch +Patch3: 0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch BuildRequires: meson >= 0.47.0 BuildRequires: gcc gcc-c++ @@ -33,7 +36,9 @@ nvme-cli provides NVM-Express user space tooling for Linux. %setup -q %patch0 -p1 - +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %meson -Dudevrulesdir=%{_udevrulesdir} -Dsystemddir=%{_unitdir} -Ddocs=all -Ddocs-build=true -Dhtmldir=%{_pkgdocdir} @@ -90,6 +95,9 @@ if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then fi %changelog +* Fri Aug 29 2022 Maurizio Lombardi - 2.0-4 +- Fix BZ2104945 + * Fri Jul 15 2022 Maurizio Lombardi - 2.0-3 - Fix BZ2105742