<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>57107</bug_id>
          
          <creation_ts>2025-12-03 14:39:20 +0300</creation_ts>
          <short_desc>/usr/lib/rpm/grub.filetrigger не всегда обновляет меню при обновлении grub</short_desc>
          <delta_ts>2026-03-13 22:00:53 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>grub</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="Николай Костригин">nickel</assigned_to>
          <cc>egori</cc>
    
    <cc>mike</cc>
    
    <cc>nickel</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>278363</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-12-03 14:39:20 +0300</bug_when>
    <thetext>Обноружил при тестировании нового memtest86+ на loongarch64.

При одновременном обновлении grub и memtest86+ *иногда* не обновляется /boot/grub/grub.cfg, в результате чего в меню остаётся неработующая строка от старого memtest86+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278370</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-12-03 15:31:29 +0300</bug_when>
    <thetext>Исследовал проблему и пришёл к такому выводу: проблема в конструкции

if grep [...]; then
 ...
fi | if grep -Eqs [...]; then
 ...
fi

`grep -Eqs [...]` выходит, как только обнаруживает match; если первый grep при этом продолжает писать, он получает SIGPIPE, завершается ошибкой, и в первое условие оказыватся ложным.


Упростим grub.filetrigger вот до такого:

$ cat ./a.sh
#!/bin/sh

if grep -E &apos;^/boot/(vmlinuz|xen|memtest)|^/usr/lib(64|)/grub&apos;; then
 echo &gt;&amp;2 &quot;regenerating&quot;
fi | if grep -Eqs &apos;^/usr/lib(64|)/grub&apos;; then
 echo &gt;&amp;2 &quot;grub updated&quot;
fi


В простейшем случае всё работает:

$ echo &quot;/usr/lib64/grub&quot; | ./a.sh
grub updated
regenerating

Однако можно подобрать входные данные, при которых первый grep упадёт, и regenerating выдаваться не будет. У меня на локалхосте это стабильно вот так:

$ yes &quot;/usr/lib64/grub&quot; | head -n 100000 | ./a.sh
grub updated

То есть, будет ли вызван grub-mkconfig зависит от количества обновляемых пакетов и порядка, в котором имена файлов из этих пакетов подаются на вход файлтригерру. Особенно возрастают шансы воспроизвести проблему, если в одной транзакции обновляется много пакетов или большие пакеты, и grub.filetrigger должен сработать на несколько из них.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278437</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-12-04 13:30:58 +0300</bug_when>
    <thetext>Пока сделал так:

https://git.altlinux.org/people/iv/packages/grub.git?a=commitdiff;h=d458c1e4364fa8ab9b5338737952137a92f2f189

Хотя по-моему логичнее и проще сделать два отдельных файлтриггера.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283840</commentid>
    <comment_count>3</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-03-13 22:00:53 +0300</bug_when>
    <thetext>grub-2.14-alt1 -&gt; sisyphus:

Fri Feb 27 2026 Egor Ignatov &lt;egori@altlinux&gt; 2.14-alt1
- update to grub 2.14
- add grub-efi-install utility for EFI installation with Secure Boot support and
  proper NVRAM management (closes: #52976)
- add probe module to efi image (closes: #54496)
- align with upstream usage for GRUB_CMDLINE_LINUX variable (closes: #53710)
- replace &apos;failsafe&apos; with &apos;single&apos; default for recovery boot entries (closes: #44269)
- add GRUB_BTRFS_USE_DEFAULT_SUBVOL option (closes: #56881)
- new subpackage grub-common-extra (closes: #38715, #51394, #51395)
- add ALT Linux distro name translation (closes: #36004)
- add &quot;UEFI Firmware settings&quot; translation (closes: #48768)
- read distro name from /etc/os-release (closes: #55546)
- add btrfs savedefault support (closes: #50525)
- disable savedefault for f2fs (closes: #52193)
- refactor grub filetriggers (closes: #57107)
- enhance grub-efi-autoupdate UX (closes: #56960)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>