diff --git a/.gitignore b/.gitignore index bc5dcae..6d1a9b5 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,8 @@ /v1.10.1.tar.gz /v1.11.tar.gz /v1.11.1.tar.gz +/nvme-cli-2.0-rc4.tar.gz +/nvme-cli-2.0-rc5.tar.gz +/nvme-cli-2.0-rc6.tar.gz +/nvme-cli-2.0-rc8.tar.gz +/nvme-cli-2.0.tar.gz diff --git a/nvme-cli.spec b/nvme-cli.spec index 4ba7af5..d2516c4 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -1,40 +1,51 @@ -#%%global commit0 bdbb4da0979fbdc079cf98410cdb31cf799e83b3 -#%%global shortcommit0 %%(c=%%{commit0}; echo ${c:0:7}) - Name: nvme-cli -Version: 1.11.1 -Release: 5%{?dist} +Version: 2.0 +Release: 2%{?dist} Summary: NVMe management command line interface License: GPLv2+ URL: https://github.com/linux-nvme/nvme-cli -#Source0: https://github.com/linux-nvme/%%{name}/archive/%%{commit0}.tar.gz -Source0: https://github.com/linux-nvme/%{name}/archive/v%{version}.tar.gz +Source0: %{url}/archive/v%{version_no_tilde}/%{name}-%{version_no_tilde}.tar.gz -BuildRequires: make +BuildRequires: meson >= 0.47.0 BuildRequires: libuuid-devel -BuildRequires: gcc +BuildRequires: gcc gcc-c++ BuildRequires: systemd-devel +BuildRequires: zlib-devel +BuildRequires: openssl-devel + +BuildRequires: libnvme-devel >= 1.0 +BuildRequires: json-c-devel >= 0.14 +BuildRequires: python3-nose2 +BuildRequires: python3-mypy +BuildRequires: python3-flake8 +BuildRequires: python3-autopep8 +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. %prep -#%%setup -qn %%{name}-%%{commit0} -%setup -q +%autosetup -p1 -n %{name}-%{version_no_tilde} %build - -# CFLAGS on the command line breaks the build. It works okay as an -# environment variable, though. See: -# https://github.com/linux-nvme/nvme-cli/pull/480 -CFLAGS="%{optflags}" make PREFIX=/usr LDFLAGS="%{__global_ldflags}" %{?_smp_mflags} +%meson -Dudevrulesdir=%{_udevrulesdir} -Dsystemddir=%{_unitdir} -Ddocs=all -Ddocs-build=true -Dhtmldir=%{_pkgdocdir} +%meson_build %install -%make_install PREFIX=/usr UDEVDIR="%{_udevrulesdir}/.." SYSTEMDDIR="%{_unitdir}/.." -mkdir -p %{buildroot}%{_sysconfdir}/nvme +%meson_install # hostid and hostnqn are supposed to be unique per machine. We obviously # can't package them. @@ -44,10 +55,15 @@ rm -f %{buildroot}%{_sysconfdir}/nvme/hostnqn # Do not install the dracut rule yet. See rhbz 1742764 rm -f %{buildroot}/usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf +# Move html docs into the right place +mv %{buildroot}%{_pkgdocdir}/nvme %{buildroot}%{_pkgdocdir}/html +rm -rf %{buildroot}%{_pkgdocdir}/nvme + %files %license LICENSE %doc README.md +%doc %{_pkgdocdir} %{_sbindir}/nvme %{_mandir}/man1/nvme*.gz %{_datadir}/bash-completion/completions/nvme @@ -64,7 +80,34 @@ rm -f %{buildroot}/usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf # /usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf +%post +if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then + if [ ! -s %{_sysconfdir}/nvme/hostnqn ]; then + echo $(nvme gen-hostnqn) > %{_sysconfdir}/nvme/hostnqn + fi + if [ ! -s %{_sysconfdir}/nvme/hostid ]; then + uuidgen > %{_sysconfdir}/nvme/hostid + fi +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 + +* Mon Apr 04 2022 Tomas Bzatek - 2.0~rc8-1 +- Update to 2.0-rc8 +- Added scriptlet to generate /etc/nvme/hostnqn and hostid files (#2065886) + +* Tue Mar 15 2022 Tomas Bzatek - 2.0~rc6-1 +- Update to 2.0-rc6 + +* Fri Mar 04 2022 Tomas Bzatek - 2.0~rc5-1 +- Update to 2.0-rc5 + * Thu Jan 20 2022 Fedora Release Engineering - 1.11.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild 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" diff --git a/sources b/sources index d9f6fa3..2b256e1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v1.11.1.tar.gz) = 467e327f45500d80cebd6e5e55d4e6d3731a754423e71180efa9d4f5e98f0774f7a31393fefc2794250b487446005dad8e7002a27aff1f2b285983d55ec0d0b3 +SHA512 (nvme-cli-2.0.tar.gz) = 24a00ee8e0fc963c1757797413ff5725cec18f821a714d6bbbf37906010d72934d6fdd7b466c085f13716a5279d1a7bd3254ee474e37a0ecd00a85ef23e12417