1
Fork 0
mirror of https://https.git.savannah.gnu.org/git/guix.git/ synced 2025-07-14 02:50:45 +02:00

gnu: eudev: Fix optical discs detection/auto-mounting.

* gnu/packages/patches/eudev-removable-devices-polling.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/linux.scm (eudev-fixed): New fixed package.
(eudev) [replacement]: Use it.

Fixes: <https://issues.guix.gnu.org/35584>
Change-Id: I26045c99506eda1b748011825b2049057cd5394f
This commit is contained in:
Maxim Cournoyer 2025-05-04 08:47:46 +09:00
parent 455805beda
commit 670724edcf
No known key found for this signature in database
GPG key ID: 1260E46482E63562
3 changed files with 52 additions and 0 deletions

View file

@ -1215,6 +1215,7 @@ dist_patch_DATA = \
%D%/packages/patches/elm-ghc9.2.patch \
%D%/packages/patches/elm-offline-package-registry.patch \
%D%/packages/patches/elm-reactor-static-files.patch \
%D%/packages/patches/eudev-removable-devices-polling.patch \
%D%/packages/patches/emacs-all-the-icons-remove-duplicate-rs.patch \
%D%/packages/patches/emacs-bash-completion-preserve-exit-code.patch \
%D%/packages/patches/emacs-bash-completion-preserve-ps1.patch \

View file

@ -4923,6 +4923,7 @@ to the in-kernel OOM killer.")
(package
(name "eudev")
(version "3.2.14")
(replacement eudev-fixed)
(source (origin
(method git-fetch)
(uri (git-reference (url "https://github.com/eudev-project/eudev")
@ -5032,6 +5033,17 @@ device nodes from /dev/, handles hotplug events and loads drivers at boot
time.")
(license license:gpl2+)))
(define eudev-fixed
(package
(inherit eudev)
(source
(let ((base-source (package-source eudev)))
(origin
(inherit base-source)
(patches
(append (search-patches "eudev-removable-devices-polling.patch")
(origin-patches base-source))))))))
(define-public python-evdev
(package
(name "python-evdev")

View file

@ -0,0 +1,39 @@
Upstream-status: https://github.com/systemd/systemd/pull/37336
Upstream-status: https://github.com/eudev-project/eudev/pull/294
The existing rule would only be effective when the block drivers are compiled
as modules as opposed to being builtin. On some systems such as Guix System,
the 'sr_mod' driver for optical discs is builtin the kernel instead of a
module, and the absence of polling means there are no uevents emitted for
udisks to act on.
This change was originally contributed to Debian by Martin Pitt to fix
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=713877>, later removed as it
was deemed no longer needed. It appears still useful on eudev and elogind
systems like Guix System and others.
* rules.d/60-block.rules: Apply kernel polling to all removable devices instead
of just those of the block category handled by a kernel module.
---
rules.d/60-block.rules | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/rules.d/60-block.rules b/rules.d/60-block.rules
index c3bf32eb83..cc1eb7055e 100644
--- a/rules/60-block.rules
+++ b/rules/60-block.rules
@@ -1,8 +1,7 @@
# do not edit this file, it will be overwritten on update
# enable in-kernel media-presence polling
-ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", \
- ATTR{parameters/events_dfl_poll_msecs}="2000"
+ACTION=="add", ATTR{removable}=="1", ATTR{events_poll_msecs}=="-1", ATTR{events_poll_msecs}="2000"
# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"
base-commit: 0e0d3ed93a4e816f8ca5efb3760ceb640fea11bc
--
2.49.0