diff --git a/nvme-cli.spec b/nvme-cli.spec index 688a6d7..d2516c4 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -1,6 +1,6 @@ Name: nvme-cli Version: 2.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: NVMe management command line interface License: GPLv2+ @@ -24,6 +24,13 @@ BuildRequires: python3-isort BuildRequires: asciidoc BuildRequires: xmlto +# https://bugzilla.redhat.com/show_bug.cgi?id=2115983 +# backport of bash completion fixes from git master +Patch0: nvme-cli_2.1-completions_Collapse_declaration_and_attribute_assignment.patch +Patch1: nvme-cli_2.1-bash-nvme-completion.sh_fixed_error_when_sourced_twice.patch +Patch2: nvme-cli_2.1-bash-nvme-completion.sh_fixed_typo_with_seagate_plugin.patch +Patch3: nvme-cli_2.1-bash-nvme-completion.sh_a_better_fix_for_readonly_with_bash_5x.patch + %description nvme-cli provides NVM-Express user space tooling for Linux. @@ -85,6 +92,9 @@ fi %changelog +* Fri Aug 19 2022 Tomas Bzatek - 2.0-2 +- Fix bash completion (#2115983) + * Mon Apr 11 2022 Tomas Bzatek - 2.0-1 - Update to 2.0 diff --git a/nvme-cli_2.1-bash-nvme-completion.sh_a_better_fix_for_readonly_with_bash_5x.patch b/nvme-cli_2.1-bash-nvme-completion.sh_a_better_fix_for_readonly_with_bash_5x.patch new file mode 100644 index 0000000..60eca5a --- /dev/null +++ b/nvme-cli_2.1-bash-nvme-completion.sh_a_better_fix_for_readonly_with_bash_5x.patch @@ -0,0 +1,33 @@ +From 86b73b3136ec96dd3eefd5a721744ed2d6d7bd41 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: a better fix for "readonly" with + bash 5.x + +The error with one-line "readonly" with assignment on bash 5.x was fixed +by 25fd8c707b106ca0763402566ad657ef710bf09e. This commit restores "readonly" +functionality and adds some uniformity. +--- + completions/bash-nvme-completion.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index 00593b96a..e8177018a 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -55,6 +55,7 @@ typeset -Ar _plugin_subcmds=( + [nvidia]="id-ctrl" + [ymtc]="smart-log-add" + ) ++readonly _plugin_subcmds + + # Associative array mapping plugins to coresponding option completions + typeset -Ar _plugin_funcs=( +@@ -75,6 +76,7 @@ typeset -Ar _plugin_funcs=( + [nvidia]="plugin_nvidia_opts" + [ymtc]="plugin_ymtc_opts" + ) ++readonly _plugin_funcs + + # Top level commands + _cmds="list list-subsys id-ctrl id-ns \ diff --git a/nvme-cli_2.1-bash-nvme-completion.sh_fixed_error_when_sourced_twice.patch b/nvme-cli_2.1-bash-nvme-completion.sh_fixed_error_when_sourced_twice.patch new file mode 100644 index 0000000..e513247 --- /dev/null +++ b/nvme-cli_2.1-bash-nvme-completion.sh_fixed_error_when_sourced_twice.patch @@ -0,0 +1,25 @@ +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 e5d9ff190..7b8a2121d 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 diff --git a/nvme-cli_2.1-bash-nvme-completion.sh_fixed_typo_with_seagate_plugin.patch b/nvme-cli_2.1-bash-nvme-completion.sh_fixed_typo_with_seagate_plugin.patch new file mode 100644 index 0000000..84bcd87 --- /dev/null +++ b/nvme-cli_2.1-bash-nvme-completion.sh_fixed_typo_with_seagate_plugin.patch @@ -0,0 +1,23 @@ +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 7b8a2121d..00593b96a 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="" + diff --git a/nvme-cli_2.1-completions_Collapse_declaration_and_attribute_assignment.patch b/nvme-cli_2.1-completions_Collapse_declaration_and_attribute_assignment.patch new file mode 100644 index 0000000..12268f9 --- /dev/null +++ b/nvme-cli_2.1-completions_Collapse_declaration_and_attribute_assignment.patch @@ -0,0 +1,66 @@ +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 5e0eb23bb..51931bc19 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"