* Fri Aug 19 2022 Tomas Bzatek <tbzatek@redhat.com> - 2.0-2

- Fix bash completion (#2115983)
This commit is contained in:
Tomas Bzatek 2022-08-19 18:02:26 +02:00
commit 6b68767989
5 changed files with 158 additions and 1 deletions

View file

@ -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 <tbzatek@redhat.com> - 2.0-2
- Fix bash completion (#2115983)
* Mon Apr 11 2022 Tomas Bzatek <tbzatek@redhat.com> - 2.0-1
- Update to 2.0

View file

@ -0,0 +1,33 @@
From 86b73b3136ec96dd3eefd5a721744ed2d6d7bd41 Mon Sep 17 00:00:00 2001
From: Evgeny Grin <k2k@narod.ru>
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 \

View file

@ -0,0 +1,25 @@
From eac9f9b70081ff2df2e2ea11efb8fc6ec3754f64 Mon Sep 17 00:00:00 2001
From: Evgeny Grin <k2k@narod.ru>
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

View file

@ -0,0 +1,23 @@
From 4284d4cc299e8604f898856bdd38fc4979e56586 Mon Sep 17 00:00:00 2001
From: Evgeny Grin <k2k@narod.ru>
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=""

View file

@ -0,0 +1,66 @@
From 25fd8c707b106ca0763402566ad657ef710bf09e Mon Sep 17 00:00:00 2001
From: Brad Mouring <brad@the-bradlands.net>
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 <bmouring@gmail.com>
---
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"