FS#64551 - [efivar] 37-2 breaks efibootmgr because of cherry-picked gcc9 support patches

Attached to Project: Arch Linux
Opened by Maciej Szeptuch (Neverous) - Sunday, 17 November 2019, 21:56 GMT
Last edited by Christian Hesse (eworm) - Monday, 25 November 2019, 11:57 GMT
Task Type Bug Report
Category Packages: Testing
Status Closed
Assigned To Tobias Powalowski (tpowa)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 4
Private No

Details

37-2 includes several patches to 37 that fix compilation under recent gcc 9, unfortunately those patches introduced at least one bug that was fixed later and it breaks efibootmgr:

```
>> efibootmgr -v10
[...]
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0000
Boot0000* Arch LinuxCould not parse device path: Invalid argument
error trace:
/build/efivar/src/efivar/src/include/efivar/efivar-dp.h:1208 efidp_is_valid(): invalid device path node type: Invalid argument
zsh: exit 18 efibootmgr -v10
```

Expected (works with efivar==37-1 from core):
```
>> efibootmgr -v10
[...]
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0000
Boot0000* Arch Linux HD([...]
Boot0001* Arch Linux2 HD([...]
```

I found the missing patches, after applying them this error is gone:
fdb803402fb32fa6d020bac57a40c7efe4aabb7d
4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e

(tested by adding them to cherry-picked list in 37-2 PKGBUILD)

Steps to reproduce:
1. Have system with EFI boot setup
2. Install testing/efivar (37-2) and efibootmgr
3. Run efibootmgr -v10 and see it crashes unable to parse device path
4. Install core/efivar (37-1)
3. Run efibootmgr -v10 and see it works correctly
This task depends upon

Closed by  Christian Hesse (eworm)
Monday, 25 November 2019, 11:57 GMT
Reason for closing:  Fixed
Additional comments about closing:  efivar 37-3
Comment by vikaig (vikaig) - Friday, 22 November 2019, 16:07 GMT
I seem to have the same problem
efivar version: 37-2
efibootmgr version: 16-2

$ efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0003,0000,0002,0001
Boot0000* ubuntuCould not parse device path: Invalid argument


$ efibootmgr -v10
Could not read variable 'BootNext': No such file or directory
error trace:
efivarfs.c:258 efivarfs_get_variable(): open(/sys/firmware/efi/efivars/BootNext-8be4df61-93ca-11d2-aa0d-00e098032b8c): No such file or directory
lib.c:139 efi_get_variable(): ops->get_variable failed: No such file or directory
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0003,0000,0002,0001
Boot0000* ubuntuCould not parse device path: Invalid argument
error trace:
/build/efivar/src/efivar/src/include/efivar/efivar-dp.h:1208 efidp_is_valid(): invalid device path node type: Invalid argument
Comment by Diana (DianaNites) - Sunday, 24 November 2019, 19:59 GMT
Same issue here, discovered when it completely broke my system because I dared to change my esp and it completely broke booting. Sure was fun finding an essential and up to date package completely broken.
Comment by Maciej Szeptuch (Neverous) - Sunday, 24 November 2019, 20:54 GMT
I see this package is now in Core...

For anyone interested I attached the PKGBUILD that works for me.
   PKGBUILD (1.9 KiB)
Comment by vikaig (vikaig) - Monday, 25 November 2019, 08:36 GMT
If someone needs to solve the problem simply and quickly, you can do so:
wget https://archive.archlinux.org/packages/e/efivar/efivar-37-1-x86_64.pkg.tar.xz
sudo pacman -U efivar-37-1-x86_64.pkg.tar.xz
rm efivar-37-1-x86_64.pkg.tar.xz

Loading...