~ruther/guix-local

cde1becfaba7a5757b881a5940ef0c6c2a70794f — Vivien Kraus 2 years ago d6462be
gnu: eudev: Update to 3.2.14.

Eudev now has a hardware database /etc/udev/hwdb.bin made up of descriptions
installed in the /lib/udev/hwdb.d directory of each package, and more
generally, UDEV_HWDB_PATH.  This database index is compiled with udevadm hwdb
--update.  The udev-service-type collects the files and compiles the index.
Previously, the hardware description files provided by eudev would be compiled
into $prefix/etc/udev/hwdb.bin in the eudev output.

* gnu/packages/linux.scm (eudev): Update to 3.2.14.
[modules]: Import (guix build utils).
[#:phases] <allow-eudev-hwdb>: New phase.
<install-in-lib>: New phase.
<build-hwdb>: Remove phase.
[#:configure-flags]: Set sysconfdir to avoid a prefix.
[native-search-paths]: Add UDEV_HWDB_PATH.
* gnu/packages/patches/eudev-rules-directory.patch: Rebase it.
2 files changed, 45 insertions(+), 21 deletions(-)

M gnu/packages/linux.scm
M gnu/packages/patches/eudev-rules-directory.patch
M gnu/packages/linux.scm => gnu/packages/linux.scm +40 -17
@@ 4327,10 4327,9 @@ to the in-kernel OOM killer.")
    (license license:expat)))

(define-public eudev
  ;; The post-systemd fork, maintained by Gentoo.
  (package
    (name "eudev")
    (version "3.2.11")
    (version "3.2.14")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url "https://github.com/gentoo/eudev")


@@ 4338,8 4337,9 @@ to the in-kernel OOM killer.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0dzaqwjnl55f69ird57wb6skahc6l7zs1slsrzqqfhww33icp6av"))
              (patches (search-patches "eudev-rules-directory.patch"))))
                "1f6lz57igi7iw2ls3fpzgw42bfznam4nf9368h7x8yf1mb737yxz"))
              (patches (search-patches "eudev-rules-directory.patch"))
              (modules '((guix build utils)))))
    (build-system gnu-build-system)
    (arguments
     (list


@@ 4350,6 4350,31 @@ to the in-kernel OOM killer.")
              (substitute* "man/make.sh"
                (("/usr/bin/xsltproc")
                 (search-input-file (or native-inputs inputs) "/bin/xsltproc")))))
          (add-before 'bootstrap 'install-in-lib
            (lambda _
              ;; When the udev-service-type instantiates /etc, it collects
              ;; hardware files from the <package>/lib/udev/hwdb.d directories
              ;; of different packages.  Since we set sysconfdir to /etc, the
              ;; only package-dependent location we can install hwdb files is
              ;; in <package>/lib/udev/hwdb.d.  Eudev is configured to install
              ;; these files in sysconfdir, but they should be placed into
              ;; udevlibexecdir.
              (copy-file "hwdb/Makefile.am" "hwdb/files.am")
              (call-with-output-file "hwdb/Makefile.am"
                (lambda (port)
                  (format port "hardwarelibdir = $(udevlibexecdir)/hwdb.d\n")
                  (format port "include ./files.am")))
              (substitute* "hwdb/files.am"
                (("dist_udevhwdb_DATA =")
                 "dist_hardwarelib_DATA ="))
              ;; Do not install the empty udev.conf template.
              (substitute* "src/udev/Makefile.am"
                (("dist_udevconf_DATA =")
                 "dist_noinst_DATA ="))
              ;; Do not ensure that /etc/udev/rules.d exists.
              (substitute* "rules/Makefile.am"
                (("\\$\\(MKDIR_P\\) \\$\\(DESTDIR\\)\\$\\(udevconfdir\\)/rules\\.d")
                 "true"))))
          (add-after 'install 'move-static-library
            (lambda _
              (let ((source (string-append #$output "/lib/libudev.a"))


@@ 4361,19 4386,17 @@ to the in-kernel OOM killer.")
                ;; such that Libtool looks for it in the usual places.
                (substitute* (string-append #$output "/lib/libudev.la")
                  (("old_library=.*")
                   "old_library=''\n")))))
          (add-after 'install 'build-hwdb
            (lambda _
              ;; Build OUT/etc/udev/hwdb.bin.  This allows 'lsusb' and
              ;; similar tools to display product names.
              ;;
              ;; XXX: This can't be done when cross-compiling. Find another way
              ;; to generate hwdb.bin for cross-built systems.
              #$@(if (%current-target-system)
                     #~(#t)
                     #~((invoke (string-append #$output "/bin/udevadm")
                                "hwdb" "--update"))))))
       #:configure-flags #~(list "--enable-manpages")))
                   "old_library=''\n"))))))
      #:configure-flags
      #~(list "--enable-manpages"
              ;; By default, autoconf uses $prefix/etc. The udev-service-type
              ;; makes sure /etc is set up with rules and hardware file
              ;; descriptions.
              "--sysconfdir=/etc")))
    (native-search-paths
      (list (search-path-specification
              (variable "UDEV_HWDB_PATH")
              (files '("lib/udev/hwdb.d")))))
    (native-inputs
     (list autoconf
           automake

M gnu/packages/patches/eudev-rules-directory.patch => gnu/packages/patches/eudev-rules-directory.patch +5 -4
@@ 4,9 4,9 @@ The old udev 182 supported $UDEV_CONFIG_FILE, which in turn allowed
the search path to be customized, but eudev no longer has this, hence
this hack.

--- eudev-3.1.5/src/udev/udev-rules.c	2015-10-13 06:22:14.000000000 +0800
+++ eudev-3.1.5/src/udev/udev-rules.c	2015-10-16 20:45:38.491934336 +0800
@@ -47,15 +47,11 @@
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -48,16 +48,11 @@ struct uid_gid {
         };
 };
 


@@ 20,11 20,12 @@ this hack.
-        "/lib/udev/rules.d",
-        "/usr/lib/udev/rules.d",
-#endif
-        "/usr/local/lib/udev/rules.d",
+        NULL,			/* placeholder for $EUDEV_RULES_DIRECTORY */
         NULL};
 
 struct udev_rules {
@@ -1704,6 +1700,9 @@
@@ -1718,6 +1713,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) {
 
         udev_rules_check_timestamp(rules);