diff mbox series

[bug#66099,gnome-team,v6,1/5] gnu: eudev: Update libudev version to 251.

Message ID 1ed2985a00d92f2c274fcd473fd99c6f6881f689.1696455422.git.vivien@planete-kraus.eu
State New
Headers show
Series Update eudev, udev-service-type, upower | expand

Commit Message

Vivien Kraus Sept. 19, 2023, 11:23 a.m. UTC
Eudev has significant improvements from 3.2.12, but they are not released
yet. The package version number has already been bumped to 3.2.14, but since
it is not released yet, the version number is downgraded to 3.2.12.

Everything that eudev searches in "sysconf" (/etc/udev/*) is actually searched
under its installation prefix. The udev-service-type however prepares every
file in /etc/udev, without a prefix.

Eudev has a hardware database that installs descriptions of hardware in /etc,
but they should go to <prefix>/lib prior to being used. The build system can’t
install to /etc, and should not, because this directory is owned by the
udev-service-type. So they are installed directly in <prefix>/lib. Another
file, an empty /etc/udev.conf, is simply ignored.

The hwdb.bin file used to be generated in <prefix>/etc/udev/hwdb.bin, but
since the sysconf dir is now directly /etc, the hwdb.bin index will not be
found under <prefix>/etc/udev/hwdb.bin.

* gnu/packages/linux.scm (eudev): Update to a post-v3.2.12 commit.
[#: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-set-version-to-3.2.12.patch: New file.
* gnu/packages/linux.scm (eudev): Use it here.
* gnu/local.mk (dist_patch_DATA): Register it here.
* gnu/packages/patches/eudev-rules-directory.patch: Rebase it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/linux.scm                        | 55 +++++++++++++------
 .../patches/eudev-rules-directory.patch       |  9 +--
 .../patches/eudev-set-version-to-3.2.12.patch | 25 +++++++++
 4 files changed, 69 insertions(+), 21 deletions(-)
 create mode 100644 gnu/packages/patches/eudev-set-version-to-3.2.12.patch

Comments

Liliana Marie Prikler Oct. 5, 2023, 4:50 a.m. UTC | #1
Am Dienstag, dem 19.09.2023 um 13:23 +0200 schrieb Vivien Kraus:
> Eudev has significant improvements from 3.2.12, but they are not
> released yet. The package version number has already been bumped to
> 3.2.14, but since it is not released yet, the version number is
> downgraded to 3.2.12.
Smaller nitpick: I think "we still advertise it as 3.2.12" is better
wording here.  Downgrade would imho imply a removal of functionality
which is not happening here.

> [...]
> * gnu/packages/linux.scm (eudev): Update to a post-v3.2.12 commit.
> [#: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-set-version-to-3.2.12.patch: New file.
You might want to express this one with a snippet and an explicit
comment to remove it once a release version is used.
> * gnu/packages/linux.scm (eudev): Use it here.
> * gnu/local.mk (dist_patch_DATA): Register it here.
> * gnu/packages/patches/eudev-rules-directory.patch: Rebase it.
> ---

Cheers
Liliana Marie Prikler Oct. 5, 2023, 5:54 a.m. UTC | #2
Am Donnerstag, dem 05.10.2023 um 07:04 +0200 schrieb Vivien Kraus:
> Le jeudi 05 octobre 2023 à 06:50 +0200, Liliana Marie Prikler a écrit
> :
> > Am Dienstag, dem 19.09.2023 um 13:23 +0200 schrieb Vivien Kraus:
> > > Eudev has significant improvements from 3.2.12, but they are not
> > > released yet. The package version number has already been bumped
> > > to
> > > 3.2.14, but since it is not released yet, the version number is
> > > downgraded to 3.2.12.
> > Smaller nitpick: I think "we still advertise it as 3.2.12" is
> > better wording here.  Downgrade would imho imply a removal of
> > functionality which is not happening here.
> 
> OK.
> 
> > > * gnu/packages/linux.scm (eudev): Update to a post-v3.2.12
> > > commit.
> > > [#: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-set-version-to-3.2.12.patch: New
> > > file.
> > You might want to express this one with a snippet and an explicit
> > comment to remove it once a release version is used.
> 
> I thougḥt the patch would be more useful as it would then fail to
> apply, but I understand the updater could be unsure whether to remove
> or rebase the patch. A snippet + comment is more explicit.
Sorry for taking my time on the 3/5, had breakfast :(

> Everything that eudev searches in "sysconf" (/etc/udev/*) is actually
> searched under its installation prefix. The udev-service-type however
> prepares every file in /etc/udev, without a prefix.
Is this a correct statement?  I would assume not.

Cheers
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 72c9954492..73beb8daff 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1127,6 +1127,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/esmini-use-pkgconfig.patch		\
   %D%/packages/patches/esmtp-add-lesmtp.patch		\
   %D%/packages/patches/eudev-rules-directory.patch		\
+  %D%/packages/patches/eudev-set-version-to-3.2.12.patch	\
   %D%/packages/patches/exercism-disable-self-update.patch	\
   %D%/packages/patches/extempore-unbundle-external-dependencies.patch	\
   %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 85e3d9845d..e1959fde3d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4263,18 +4263,22 @@  (define-public earlyoom
 
 (define-public eudev
   ;; The post-systemd fork, maintained by Gentoo.
+  (define commit
+    "c5bae0b656513463f92808f324f8fcbe34a0b401")
+  (define revision "1")
   (package
     (name "eudev")
-    (version "3.2.11")
+    (version (git-version "3.2.12" revision commit))
     (source (origin
               (method git-fetch)
               (uri (git-reference (url "https://github.com/gentoo/eudev")
-                                  (commit (string-append "v" version))))
+                                  (commit commit)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dzaqwjnl55f69ird57wb6skahc6l7zs1slsrzqqfhww33icp6av"))
-              (patches (search-patches "eudev-rules-directory.patch"))))
+                "0rqyzmp8kcnxiy1hq13pr2syp4krnf6q97xwlr0bwcd6x4grbak4"))
+              (patches (search-patches "eudev-rules-directory.patch"
+                                       "eudev-set-version-to-3.2.12.patch"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -4285,6 +4289,28 @@  (define-public eudev
               (substitute* "man/make.sh"
                 (("/usr/bin/xsltproc")
                  (search-input-file (or native-inputs inputs) "/bin/xsltproc")))))
+          (add-before 'bootstrap 'install-in-lib
+            (lambda _
+              ;; eudev wants to install its provided hwdb files in /etc, but
+              ;; we want them in udevlibexecdir.
+              (copy-file "hwdb/Makefile.am" "hwdb/files.am")
+              (call-with-output-file "hwdb/Makefile.am"
+                (lambda (port)
+                  (format port "udevhwdblibdir = $(udevlibexecdir)/hwdb.d\n")
+                  (format port "include ./files.am")))
+              (substitute* "hwdb/files.am"
+                (("dist_udevhwdb_DATA =")
+                 "dist_udevhwdblib_DATA ="))
+              ;; eudev wants to install a template udev.conf into /etc, but we
+              ;; do not care.
+              (substitute* "src/udev/Makefile.am"
+                (("dist_udevconf_DATA =")
+                 "dist_noinst_DATA ="))
+              ;; eudev thinks we want to make sure /etc/udev/rules.d exists
+              ;; when installing - we do not.
+              (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"))
@@ -4296,19 +4322,14 @@  (define-public eudev
                 ;; 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"
+              "--sysconfdir=/etc")))
+    (native-search-paths
+      (list (search-path-specification
+              (variable "UDEV_HWDB_PATH")
+              (files '("lib/udev/hwdb.d")))))
     (native-inputs
      (list autoconf
            automake
diff --git a/gnu/packages/patches/eudev-rules-directory.patch b/gnu/packages/patches/eudev-rules-directory.patch
index 54fc01c6d5..c4b1cfae39 100644
--- a/gnu/packages/patches/eudev-rules-directory.patch
+++ b/gnu/packages/patches/eudev-rules-directory.patch
@@ -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);
  
diff --git a/gnu/packages/patches/eudev-set-version-to-3.2.12.patch b/gnu/packages/patches/eudev-set-version-to-3.2.12.patch
new file mode 100644
index 0000000000..9221269e08
--- /dev/null
+++ b/gnu/packages/patches/eudev-set-version-to-3.2.12.patch
@@ -0,0 +1,25 @@ 
+From 6a8fdb8a14dc9e0480c68426edcf3f4b55e9cfe3 Mon Sep 17 00:00:00 2001
+Message-ID: <6a8fdb8a14dc9e0480c68426edcf3f4b55e9cfe3.1696356960.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Tue, 3 Oct 2023 20:15:48 +0200
+Subject: [PATCH] Revert "bump version to 3.2.14"
+
+This reverts commit df220edbc585d2e7a08ed8ad90770fefd0e60bb5.
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0d9a135bc..069fdfb87 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,5 @@
+ AC_PREREQ([2.68])
+-AC_INIT([eudev],[3.2.14],[https://github.com/gentoo/eudev/issues])
++AC_INIT([eudev],[3.2.12],[https://github.com/gentoo/eudev/issues])
+ AC_SUBST(UDEV_VERSION, 251)
+ AC_CONFIG_SRCDIR([src/udev/udevd.c])
+ 
+-- 
+2.41.0
+