commit:     fa95f99841d31852f79c71475b2ac9b1cb3e337d
Author:     Jernej Jakob <jernej.jakob <AT> gmail <DOT> com>
AuthorDate: Sat Jul  5 16:35:24 2025 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 19:32:35 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fa95f998

sys-boot/grub: fix bash completion bug

Closes: https://bugs.gentoo.org/959593
Bug: https://savannah.gnu.org/bugs/index.php?65493
Signed-off-by: Jernej Jakob <jernej.jakob <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/42888
Closes: https://github.com/gentoo/gentoo/pull/42888
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 ...12-fix-for-bash-completion-_split_longopt.patch | 191 +++++++++++++++++++++
 .../{grub-2.12-r9.ebuild => grub-2.12-r10.ebuild}  |   1 +
 2 files changed, 192 insertions(+)

diff --git 
a/sys-boot/grub/files/grub-2.12-fix-for-bash-completion-_split_longopt.patch 
b/sys-boot/grub/files/grub-2.12-fix-for-bash-completion-_split_longopt.patch
new file mode 100644
index 000000000000..4496135c6603
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.12-fix-for-bash-completion-_split_longopt.patch
@@ -0,0 +1,191 @@
+From 0876fdf215292a06ad087f862ae7677c85ae444f Mon Sep 17 00:00:00 2001
+From: Gary Lin <[email protected]>
+Date: Mon, 25 Mar 2024 10:11:34 +0800
+Subject: util/bash-completion: Fix for bash-completion 2.12
+
+_split_longopt() was the bash-completion private API and removed since
+bash-completion 2.12. This commit initializes the bash-completion
+general variables with _init_completion() to avoid the potential
+"command not found" error.
+
+Although bash-completion 2.12 introduces _comp_initialize() to deprecate
+_init_completion(), _init_completion() is still chosen for the better
+backward compatibility.
+
+Signed-off-by: Gary Lin <[email protected]>
+Reviewed-by: Daniel Kiper <[email protected]>
+---
+ util/bash-completion.d/grub-completion.bash.in | 61 ++++++++++----------------
+ 1 file changed, 22 insertions(+), 39 deletions(-)
+
+(limited to 'util/bash-completion.d/grub-completion.bash.in')
+
+diff --git a/util/bash-completion.d/grub-completion.bash.in 
b/util/bash-completion.d/grub-completion.bash.in
+index 4c88ee901..749a5d3cf 100644
+--- a/util/bash-completion.d/grub-completion.bash.in
++++ b/util/bash-completion.d/grub-completion.bash.in
+@@ -151,13 +151,10 @@ __grub_list_modules () {
+ # grub-set-default & grub-reboot
+ #
+ __grub_set_entry () {
+-    local cur prev split=false
++    local cur prev words cword split
++    _init_completion -s || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+-
+-    _split_longopt && split=true
+ 
+     case "$prev" in
+         --boot-directory)
+@@ -180,11 +177,10 @@ __grub_set_entry () {
+ # grub-editenv
+ #
+ __grub_editenv () {
+-    local cur prev
++    local cur prev words cword
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+ 
+     case "$prev" in
+         create|list|set|unset)
+@@ -201,10 +197,10 @@ __grub_editenv () {
+ # grub-mkconfig
+ #
+ __grub_mkconfig () {
+-    local cur prev
++    local cur prev words cword
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+ 
+     if [[ "$cur" == -* ]]; then
+         __grubcomp "$(__grub_get_options_from_help)"
+@@ -217,13 +213,10 @@ __grub_mkconfig () {
+ # grub-setup
+ #
+ __grub_setup () {
+-    local cur prev split=false
++    local cur prev words cword split
++    _init_completion -s || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+-
+-    _split_longopt && split=true
+ 
+     case "$prev" in
+         -d|--directory)
+@@ -246,15 +239,12 @@ __grub_setup () {
+ # grub-install
+ #
+ __grub_install () {
+-    local cur prev last split=false
++    local cur prev words cword split last
++    _init_completion -s || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+     last=$(__grub_get_last_option)
+ 
+-    _split_longopt && split=true
+-
+     case "$prev" in
+         --boot-directory)
+             _filedir -d
+@@ -287,10 +277,10 @@ __grub_install () {
+ # grub-mkfont
+ #
+ __grub_mkfont () {
+-    local cur
++    local cur prev words cword
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+ 
+     if [[ "$cur" == -* ]]; then
+         __grubcomp "$(__grub_get_options_from_help)"
+@@ -304,11 +294,10 @@ __grub_mkfont () {
+ # grub-mkrescue
+ #
+ __grub_mkrescue () {
+-    local cur prev last
++    local cur prev words cword last
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+     last=$(__grub_get_last_option)
+ 
+     if [[ "$cur" == -* ]]; then
+@@ -330,13 +319,10 @@ __grub_mkrescue () {
+ # grub-mkimage
+ #
+ __grub_mkimage () {
+-    local cur prev split=false
++    local cur prev words cword split
++    _init_completion -s || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+-
+-    _split_longopt && split=true
+ 
+     case "$prev" in
+         -d|--directory|-p|--prefix)
+@@ -367,10 +353,10 @@ __grub_mkimage () {
+ # grub-mkpasswd-pbkdf2
+ #
+ __grub_mkpasswd_pbkdf2 () {
+-    local cur
++    local cur prev words cword
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+ 
+     if [[ "$cur" == -* ]]; then
+         __grubcomp "$(__grub_get_options_from_help)"
+@@ -384,13 +370,10 @@ __grub_mkpasswd_pbkdf2 () {
+ # grub-probe
+ #
+ __grub_probe () {
+-    local cur prev split=false
++    local cur prev words cword split
++    _init_completion -s || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+-    prev=${COMP_WORDS[COMP_CWORD-1]}
+-
+-    _split_longopt && split=true
+ 
+     case "$prev" in
+         -t|--target)
+@@ -417,10 +400,10 @@ __grub_probe () {
+ # grub-script-check
+ #
+ __grub_script_check () {
+-    local cur
++    local cur prev words cword
++    _init_completion || return
+ 
+     COMPREPLY=()
+-    cur=`_get_cword`
+ 
+     if [[ "$cur" == -* ]]; then
+         __grubcomp "$(__grub_get_options_from_help)"
+-- 
+cgit v1.2.3
+

diff --git a/sys-boot/grub/grub-2.12-r9.ebuild 
b/sys-boot/grub/grub-2.12-r10.ebuild
similarity index 99%
rename from sys-boot/grub/grub-2.12-r9.ebuild
rename to sys-boot/grub/grub-2.12-r10.ebuild
index 30f94c041ace..148322f6dca4 100644
--- a/sys-boot/grub/grub-2.12-r9.ebuild
+++ b/sys-boot/grub/grub-2.12-r10.ebuild
@@ -66,6 +66,7 @@ PATCHES=(
        "${FILESDIR}"/grub-2.12-fwsetup.patch
        "${WORKDIR}"/grub-2.12-bash-completion.patch
        "${FILESDIR}"/grub-2.12-zfs-zstd-compression-support.patch
+       "${FILESDIR}"/grub-2.12-fix-for-bash-completion-_split_longopt.patch
 )
 
 DEJAVU=dejavu-sans-ttf-2.37

Reply via email to