unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: Vivien Kraus <vivien@planete-kraus.eu>
Cc: 66099@debbugs.gnu.org,
	Liliana Marie Prikler <liliana.prikler@gmail.com>,
	rg@raghavgururajan.name
Subject: [bug#66099] [PATCH gnome-team v3 1/3] gnu: eudev: Update libudev version to 251.
Date: Sun, 01 Oct 2023 18:02:51 -0400	[thread overview]
Message-ID: <87o7hi57ck.fsf@gmail.com> (raw)
In-Reply-To: <ab54b51365fb18c06f235fedf451e64bad0c88bb.1696083614.git.vivien@planete-kraus.eu> (Vivien Kraus's message of "Tue, 19 Sep 2023 13:23:22 +0200")

Hi,

Vivien Kraus <vivien@planete-kraus.eu> writes:

> Support for version 251 is only provided as a merge request for now:
>
> https://github.com/eudev-project/eudev/pull/253
>
> This merge request bumps the eudev version to 3.2.14, but it has not been
> released yet.
>
> Eudev now has a hardware database that installs descriptions of hardware in
> /etc, but they should go to /lib prior to being used. I added a phase to copy
> all the /etc files to /lib.
>
> I submitted 3 patches to make udev hwdb more guix-friendly, fused in
> eudev-hwdb-bin-path.patch. libudev requires an indexed binary file that knows
> about all devices, and this file is generated by udevadm hwdb --update -o
> <prefix>/lib/udev/hwdb.bin. This udevadm hwdb command respects the
> UDEV_HWDB_PATH to collect all entries for the hwdb. Then, libudev can use
> UDEV_HWDB_BIN to select the database at run-time.
>
> Another unreleased patch for PR 255 is also included.
>
> I think everything could work out for Guix if we add a new profile hook that:
> 1. Calls udevadm hwdb --update -o <profile>/lib/udev/hwdb.bin;
> 2. Set UDEV_HWDB_BIN to <profile>/lib/udev/hwdb.bin.
>
> This is why there are actually 2 search paths: one for UDEV_HWDB_PATH, and one
> for UDEV_HWDB_BIN (the latter accepting only 1 value).
>
> * gnu/packages/linux.scm (eudev): Update to v3.2.12, but bump version to
> 3.2.14.beta.
> [#:phases] <allow-eudev-hwdb>: New phase.
> <build-hwdb>: Update accordingly.
> [native-search-paths]: Add UDEV_HWDB_PATH.
> * gnu/packages/patches/eudev-bump-to-251.patch: New file.
> * gnu/packages/patches/eudev-hwdb-bin-path.patch: New file.
> * gnu/packages/patches/eudev-pr-255.patch: New file.
> * gnu/packages/linux.scm (eudev): Use them here.
> * gnu/local.mk (dist_patch_DATA): Register them here.
> * guix/profiles.scm (udev-hwdb-bin): New profile hook to generate hwdb.bin.
> (%default-profile-hooks): Register it here.

Impressive work!  It seems your patches were warmly welcomed (already
merged!) in eudev, which is excellent (and should mean a v4 doesn't need
patches anymore, using a specific commit with a git-version computed
version.

[...]

>      (build-system gnu-build-system)
>      (arguments
>       (list
> @@ -4297,18 +4300,25 @@ (define-public eudev
>                  (substitute* (string-append #$output "/lib/libudev.la")
>                    (("old_library=.*")
>                     "old_library=''\n")))))
> -          (add-after 'install 'build-hwdb
> +          (add-after 'install 'allow-eudev-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"))))))
> +              ;; eudev distributes the hwdb, but each file has to be enabled
> +              ;; by being copied under /lib/udev/hwdb.d. We accept all of
> +              ;; them.
> +              (symlink (string-append #$output "/etc/udev/hwdb.d")
> +                       (string-append #$output "/lib/udev/hwdb.d")))))
>         #:configure-flags #~(list "--enable-manpages")))
> +    (native-search-paths
> +      (list (search-path-specification
> +              (variable "UDEV_HWDB_PATH")
> +              (files '("lib/udev/hwdb.d")))
> +            ;; Never install a hwdb.bin file, always let the udev-hwdb-bin
> +            ;; profile hook generate it.
> +            (search-path-specification
> +              (variable "UDEV_HWDB_BIN")
> +              (files '("lib/udev/hwdb.bin"))
> +              (file-type 'regular)
> +              (separator #f))))

Maybe add a ;singled valued comment to the end of the above line.  Note
that given that file is to be generated in a profile hook, UDEV_HWDB_BIN
would never be set at *build* time, but that should not matter
much (the build environment being containerized and all).)

[...]

> diff --git a/guix/profiles.scm b/guix/profiles.scm
> index c88672c25a..d308e7fb88 100644
> --- a/guix/profiles.scm
> +++ b/guix/profiles.scm
> @@ -1905,6 +1905,34 @@ (define (texlive-font-maps manifest)
>                              (hook . texlive-font-maps)))
>          (return #f))))
>  
> +(define (udev-hwdb-bin manifest)
> +  "Return a derivation that builds lib/udev/hwdb.bin."
                                      ^
                                      @file{lib/udev/hwdb.bin}

> +  (define eudev
> +    (module-ref (resolve-interface '(gnu packages linux)) 'eudev))
> +  (define build
> +    (with-imported-modules
> +        (source-module-closure '((guix build utils)))
> +      #~(begin
> +          (use-modules (guix build utils))
> +          (let* ((inputs '#$(manifest-inputs manifest))
> +                 (hwdb-directories
> +                  (filter
> +                   file-exists?
> +                   (map (lambda (directory)
> +                          (string-append directory "/lib/udev/hwdb.d"))
> +                        inputs))))
> +            (setenv "UDEV_HWDB_PATH"
> +                    (string-join hwdb-directories ":")))

It'd be nicer to user 'evaluate-search-paths' with the UDEV_HWDB_PATH
search path.

> +          (invoke #$(file-append eudev "/bin/udevadm")
> +                  "hwdb" "--update"
> +                  "-o" (string-append #$output "/lib/udev/hwdb.bin")))))
> +  (gexp->derivation "udev-hwdb-bin" build
> +                    #:substitutable? #f
> +                    #:local-build? #t
> +                    #:properties
> +                    `((type . profile-hook)
> +                      (hook . udev-hwdb-bin))))
>
>  (define %default-profile-hooks
>    ;; This is the list of derivation-returning procedures that are called by
>    ;; default when making a non-empty profile.
> @@ -1919,6 +1947,7 @@ (define %default-profile-hooks
>          gtk-icon-themes
>          gtk-im-modules
>          texlive-font-maps
> +        udev-hwdb-bin
>          xdg-desktop-database
>          xdg-mime-database))

My only issue with this hook is that it introduces 'eudev' as a hard
dependency for generating guix profiles.  Would it make sense to follow
the approach used in 'gdk-pixbuf-loaders-cache-file', which is to look
if eudev is already part of the profile inputs (transitively), and skip
the hook if it isn't?

-- 
Thanks,
Maxim




  parent reply	other threads:[~2023-10-01 22:04 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-19 11:35 [bug#66099] [PATCH gnome-team 0/3] Update upower Vivien Kraus via Guix-patches via
2023-09-19 11:23 ` [bug#66099] [PATCH gnome-team 1/3] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-09-19 11:32 ` [bug#66099] [PATCH gnome-team 2/3] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32 ` [bug#66099] [PATCH gnome-team 3/3] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-09-19 15:51   ` Vivien Kraus via Guix-patches via
2023-09-21 17:06 ` [bug#66099] [PATCH gnome-team 0/3] Update upower Liliana Marie Prikler
2023-09-21 21:05   ` Vivien Kraus via Guix-patches via
2023-09-21 22:03     ` Vivien Kraus via Guix-patches via
2023-09-22  4:22       ` Liliana Marie Prikler
2023-09-30 10:43         ` [bug#66099] [WIP PATCH gnome-team v2 0/3] Nicer eudev, upower still fails Vivien Kraus via Guix-patches via
2023-09-19 11:23           ` [bug#66099] [WIP PATCH gnome-team v2 1/3] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-09-19 11:32           ` [bug#66099] [WIP PATCH gnome-team v2 2/3] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32           ` [bug#66099] [WIP PATCH gnome-team v2 3/3] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-09-30 14:20         ` [bug#66099] [PATCH gnome-team v3 0/3] Update eudev and upower Vivien Kraus via Guix-patches via
2023-09-19 11:23           ` [bug#66099] [PATCH gnome-team v3 1/3] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-09-30 17:59             ` Liliana Marie Prikler
2023-10-01 22:02             ` Maxim Cournoyer [this message]
2023-10-02 17:02               ` Liliana Marie Prikler
2023-09-19 11:32           ` [bug#66099] [PATCH gnome-team v3 2/3] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-10-01 20:32             ` Maxim Cournoyer
2023-09-19 11:32           ` [bug#66099] [PATCH gnome-team v3 3/3] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-01 20:20 ` [bug#66099] [PATCH gnome-team v4 0/4] Update eudev and upower Vivien Kraus via Guix-patches via
2023-09-19 11:23   ` [bug#66099] [PATCH gnome-team v4 1/4] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-10-02 17:12     ` Liliana Marie Prikler
2023-10-02 19:33       ` Vivien Kraus via Guix-patches via
2023-10-04  1:00         ` Maxim Cournoyer
2023-09-19 11:32   ` [bug#66099] [PATCH gnome-team v4 3/4] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32   ` [bug#66099] [PATCH gnome-team v4 4/4] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-02 17:17     ` Liliana Marie Prikler
2023-10-04 10:00       ` [bug#66099] [PATCH gnome-team v5 0/4] Update eudev and udev-service-type Vivien Kraus via Guix-patches via
2023-09-19 11:23         ` [bug#66099] [PATCH gnome-team v5 1/4] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-09-19 11:32         ` [bug#66099] [PATCH gnome-team v5 3/4] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32         ` [bug#66099] [PATCH gnome-team v5 4/4] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-02 19:08         ` [bug#66099] [PATCH gnome-team v5 2/4] gnu: udev-service-type: accept hwdb file extensions Vivien Kraus via Guix-patches via
2023-10-04 16:52           ` Liliana Marie Prikler
2023-10-04 21:37             ` [bug#66099] [PATCH gnome-team v6 0/5] Update eudev, udev-service-type, upower Vivien Kraus via Guix-patches via
2023-09-19 11:23               ` [bug#66099] [PATCH gnome-team v6 1/5] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-10-05  4:50                 ` Liliana Marie Prikler
2023-10-05  5:04                   ` [bug#66099] [PATCH gnome-team v7 0/5] Update eudev with a snippet, udev-service-type, upower Vivien Kraus via Guix-patches via
2023-09-19 11:23                     ` [bug#66099] [PATCH gnome-team v7 1/5] gnu: eudev: Update libudev version to 251 Vivien Kraus via Guix-patches via
2023-10-05 13:28                       ` Maxim Cournoyer
2023-09-19 11:32                     ` [bug#66099] [PATCH gnome-team v7 4/5] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-10-05 14:32                       ` Maxim Cournoyer
2023-09-19 11:32                     ` [bug#66099] [PATCH gnome-team v7 5/5] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-05 14:35                       ` Maxim Cournoyer
2023-10-02 19:08                     ` [bug#66099] [PATCH gnome-team v7 3/5] gnu: udev-service-type: accept hwdb file extensions Vivien Kraus via Guix-patches via
2023-10-05 14:31                       ` Maxim Cournoyer
2023-10-06 16:45                         ` [bug#66099] [PATCH gnome-team v8 0/6] Update eudev, udev-service-type, upower Vivien Kraus via Guix-patches via
2023-09-19 11:23                           ` [bug#66099] [PATCH gnome-team v8 1/6] gnu: eudev: Update to 3.2.14 Vivien Kraus via Guix-patches via
2023-10-06 18:35                             ` Liliana Marie Prikler
2023-09-19 11:32                           ` [bug#66099] [PATCH gnome-team v8 5/6] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32                           ` [bug#66099] [PATCH gnome-team v8 6/6] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-06 18:48                             ` Liliana Marie Prikler
2023-10-02 19:08                           ` [bug#66099] [PATCH gnome-team v8 4/6] gnu: udev-service-type: accept hardware description file extensions Vivien Kraus via Guix-patches via
2023-10-06 18:42                             ` Liliana Marie Prikler
2023-10-05 17:24                           ` [bug#66099] [PATCH gnome-team v8 3/6] services: udev: Make udev-rule helper functions generic Vivien Kraus via Guix-patches via
2023-10-07 14:45                             ` Maxim Cournoyer
2023-10-08 10:49                               ` [bug#66099] [PATCH gnome-team v9 0/7] Update eudev, upower, udev-service-type, with /lib/udev/hardware Vivien Kraus via Guix-patches via
2023-09-19 11:23                                 ` [bug#66099] [PATCH gnome-team v9 1/7] gnu: eudev: Update to 3.2.14 Vivien Kraus via Guix-patches via
2023-09-19 11:32                                 ` [bug#66099] [PATCH gnome-team v9 5/7] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32                                 ` [bug#66099] [PATCH gnome-team v9 6/7] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-02 19:08                                 ` [bug#66099] [PATCH gnome-team v9 4/7] gnu: udev-service-type: accept hardware description file extensions Vivien Kraus via Guix-patches via
2023-10-05 17:24                                 ` [bug#66099] [PATCH gnome-team v9 3/7] services: udev: Make udev-rule helper functions generic Vivien Kraus via Guix-patches via
2023-10-05 17:33                                 ` [bug#66099] [PATCH gnome-team v9 2/7] services: udev: Rewrite udev-rule to use file->udev-rule Vivien Kraus via Guix-patches via
2023-10-08 10:00                                 ` [bug#66099] [PATCH gnome-team v9 7/7] services: udev: Install hardware files in /lib/udev/hardware Vivien Kraus via Guix-patches via
2023-10-08 12:28                                   ` Maxim Cournoyer
2023-10-10 19:28                                     ` [bug#66099] [PATCH gnome-team v10 0/6] Exact same, without the last patch Vivien Kraus via Guix-patches via
2023-09-19 11:23                                       ` [bug#66099] [PATCH gnome-team v10 1/6] gnu: eudev: Update to 3.2.14 Vivien Kraus via Guix-patches via
2023-10-05 17:33                                         ` [bug#66099] [PATCH gnome-team v10 2/6] services: udev: Rewrite udev-rule to use file->udev-rule Vivien Kraus via Guix-patches via
2023-10-05 17:24                                           ` [bug#66099] [PATCH gnome-team v10 3/6] services: udev: Make udev-rule helper functions generic Vivien Kraus via Guix-patches via
2023-10-02 19:08                                             ` [bug#66099] [PATCH gnome-team v10 4/6] gnu: udev-service-type: accept hardware description file extensions Vivien Kraus via Guix-patches via
2023-09-19 11:32                                               ` [bug#66099] [PATCH gnome-team v10 5/6] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32                                                 ` [bug#66099] [PATCH gnome-team v10 6/6] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-10 23:44                                       ` [bug#66099] [PATCH gnome-team v10 0/6] Exact same, without the last patch Maxim Cournoyer
2023-10-11  4:18                                         ` bug#66099: " Liliana Marie Prikler
2023-10-08 12:27                                 ` [bug#66099] [PATCH gnome-team v9 0/7] Update eudev, upower, udev-service-type, with /lib/udev/hardware Maxim Cournoyer
2023-10-08 12:33                                   ` Vivien Kraus via Guix-patches via
2023-10-05 17:33                           ` [bug#66099] [PATCH gnome-team v8 2/6] services: udev: Rewrite udev-rule to use file->udev-rule Vivien Kraus via Guix-patches via
2023-10-06 18:23                           ` [bug#66099] [PATCH gnome-team v8 0/6] Update eudev, udev-service-type, upower Liliana Marie Prikler
2023-10-04 21:05                     ` [bug#66099] [PATCH gnome-team v7 2/5] services: udev: unify udev-rule and file->udev-rule Vivien Kraus via Guix-patches via
2023-10-05 13:30                       ` Maxim Cournoyer
2023-10-05 13:33                       ` Maxim Cournoyer
2023-10-05  5:54                     ` [bug#66099] [PATCH gnome-team v7 0/5] Update eudev with a snippet, udev-service-type, upower Liliana Marie Prikler
2023-09-19 11:32               ` [bug#66099] [PATCH gnome-team v6 4/5] gnu: libgudev: Update to 238 Vivien Kraus via Guix-patches via
2023-09-19 11:32               ` [bug#66099] [PATCH gnome-team v6 5/5] gnu: upower: Update to 1.90.2 Vivien Kraus via Guix-patches via
2023-10-02 19:08               ` [bug#66099] [PATCH gnome-team v6 3/5] gnu: udev-service-type: accept hwdb file extensions Vivien Kraus via Guix-patches via
2023-10-05  5:42                 ` Liliana Marie Prikler
2023-10-05  5:55                   ` Vivien Kraus via Guix-patches via
2023-10-05  6:53                     ` Liliana Marie Prikler
2023-10-04 21:05               ` [bug#66099] [PATCH gnome-team v6 2/5] services: udev: unify udev-rule and file->udev-rule Vivien Kraus via Guix-patches via
2023-09-30 19:32   ` [bug#66099] [PATCH gnome-team v4 2/4] guix: Add udev-hwdb-bin profile hook Vivien Kraus via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o7hi57ck.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=66099@debbugs.gnu.org \
    --cc=liliana.prikler@gmail.com \
    --cc=rg@raghavgururajan.name \
    --cc=vivien@planete-kraus.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).