~ruther/guix-local

400ed6acdd275f1135aad520baa7379eb6b8cff6 — Ludovic Courtès 10 years ago 81fc64d
gnu: eudev: Add variant that depends on libblkid.

This fixes a bug whereby /dev/disk/by-{label,id} would be missing on
GuixSD (/dev/disk/by-id would still contain device-mapped partitions
though.)

Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/linux.scm (eudev-with-blkid): New variable.
* gnu/services/base.scm (udev-service): #:udev defaults to
EUDEV-WITH-BLKID.
* gnu/system.scm (%base-packages): Replace EUDEV with EUDEV-WITH-BLKID.
3 files changed, 17 insertions(+), 4 deletions(-)

M gnu/packages/linux.scm
M gnu/services/base.scm
M gnu/system.scm
M gnu/packages/linux.scm => gnu/packages/linux.scm +14 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>


@@ 1570,6 1570,7 @@ from the module-init-tools project.")

(define-public eudev
  ;; The post-systemd fork, maintained by Gentoo.
  ;; TODO: Merge with 'eudev-with-blkid' below at an opportune time.
  (package
    (name "eudev")
    (version "3.1.5")


@@ 1596,6 1597,18 @@ device nodes from /dev/, handles hotplug events and loads drivers at boot
time.")
    (license license:gpl2+)))

(define-public eudev-with-blkid
  ;; TODO: Merge with 'eudev' above at an opportune time.
  (package
    (inherit eudev)
    (name "eudev-with-blkid")
    (inputs
     ;; When linked against libblkid, eudev can populate /dev/disk/by-label
     ;; and similar; it also installs the '60-persistent-storage.rules' file,
     ;; which contains the rules to do that.
     `(("util-linux" ,util-linux)                 ;for blkid
       ,@(package-inputs eudev)))))

(define-public lvm2
  (package
    (name "lvm2")

M gnu/services/base.scm => gnu/services/base.scm +2 -2
@@ 29,7 29,7 @@
  #:use-module (gnu system file-systems)          ; 'file-system', etc.
  #:use-module (gnu packages admin)
  #:use-module ((gnu packages linux)
                #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm))
                #:select (eudev-with-blkid kbd e2fsprogs lvm2 fuse alsa-utils crda gpm))
  #:use-module ((gnu packages base)
                #:select (canonical-package glibc))
  #:use-module (gnu packages package-management)


@@ 1165,7 1165,7 @@ item of @var{packages}."
                              (udev udev)
                              (rules (append initial-rules rules)))))))))

(define* (udev-service #:key (udev eudev) (rules '()))
(define* (udev-service #:key (udev eudev-with-blkid) (rules '()))
  "Run @var{udev}, which populates the @file{/dev} directory dynamically.  Get
extra rules from the packages listed in @var{rules}."
  (service udev-service-type

M gnu/system.scm => gnu/system.scm +1 -1
@@ 371,7 371,7 @@ explicitly appear in OS."

         ;; Get 'insmod' & co. from kmod, not module-init-tools, since udev
         ;; already depends on it anyway.
         kmod eudev
         kmod eudev-with-blkid

         e2fsprogs kbd