Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 558980

Summary: sys-apps/hwids: udev hwdb in wrong location
Product: Gentoo Linux Reporter: Randolph Maaßen <gaireg+bgo>
Component: [OLD] Core systemAssignee: Gentoo systemd Team <systemd>
Status: RESOLVED INVALID    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Randolph Maaßen 2015-08-28 00:35:26 UTC
After upgrading systemd on my laptop I recognized that the keyboard scancode mapping was broken, eg. I could not use the back light control keys anymore. After some debugging I recognized that the hwdb didn't load correctly, so I had a closer look. After removing the /etc/udev/hwdb.d/00-keyboard.hwdb file nothing changed so the problem was somewhere else. While reading man hwdb I recognized the path /usr/lib/udev/hwdb.bin and I tried to look it up: surprise the path /usr/lib/udev doesn't even exist. Searching for the path I found it in /lib/udev and symlinking the directorz to /usr/lib/udev resolved my problem.

tl;dr: systemd-udev expects the hwdb in /usr/lib/udev/ nut it is in /lib/udev

Reproducible: Always

Steps to Reproduce:
1. alter the keymap in /lib/udev/hwdb.d/60-keymap.hwdb
2. reload the hwdb with udevadm hwdb --update and udevadm trigger
Actual Results:  
the change won't apply

Expected Results:  
the change should apply
Comment 1 Mike Gilbert gentoo-dev 2015-08-28 02:20:49 UTC
What does this command output on your system?

pkg-config --variable=udevdir udev
Comment 2 Mike Gilbert gentoo-dev 2015-08-28 02:36:33 UTC
Also, what does strace show when you run that udevadm hwdb command? I get the following.

# strace -e file udevadm hwdb -u
...
open("/lib/udev/hwdb.d/20-OUI.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-acpi-vendor.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-bluetooth-vendor-product.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-net-ifname.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-pci-classes.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-pci-vendor-model.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-sdio-classes.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-sdio-vendor-model.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-usb-classes.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-usb-media-players.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/20-usb-vendor-model.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/60-evdev.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/60-keyboard.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/61-oldkeyboard.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/69-libmtp.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/70-mouse.hwdb", O_RDONLY|O_CLOEXEC) = 3
open("/lib/udev/hwdb.d/70-pointingstick.hwdb", O_RDONLY|O_CLOEXEC) = 3

So it certainly seems to be looking at /lib/udev/hwdb.d on my system.
Comment 3 Randolph Maaßen 2015-08-28 10:32:13 UTC
pkg-config --variable=udevdir udev
gives /lib/udev and strace is accessing the files. After a reboot without the symlink everything works.

It looks like bug chasing at 4:00am is not a good idea. Sorry for the noise