From patchwork Thu Feb 6 02:38:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Cournoyer X-Patchwork-Id: 38299 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 157FE27BBEA; Thu, 6 Feb 2025 02:40:36 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE,SPF_HELO_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 539DC27BBE2 for ; Thu, 6 Feb 2025 02:40:35 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tfroM-0002YS-7l; Wed, 05 Feb 2025 21:40:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tfroE-0002UR-R9 for guix-patches@gnu.org; Wed, 05 Feb 2025 21:40:09 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tfroE-0000F2-95 for guix-patches@gnu.org; Wed, 05 Feb 2025 21:40:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=J45r67ZX2jsJtvHGocn8kUHyz6fGXjxbvJe/UNjG4yU=; b=Ctbc8hCVpkxl/r9YusTP4SmkJeSR86OvkqOW0Y5KJZeTiDXwzFYrC05zykbF4vkwnJnifpVnwLUmuww6lt07WP0WbCn2YR+rbF7cZ5Dmlkc63i9ZBnZDC1IOzpltSF7Y3siFkQnLpzNxW2VEU4DhEzibVBygNRoedfkvoKhLESFfRf6r2/Rb4Bz4oMQ0JYTF0jvPahhArBuygXj0SIrcyUSIAlpYGTlb3JrXBzDuzQY1ZaQVZVLjNfXeen3tZE8PN6WhGXEeZx0vFERa9rCVGp/r8IFNUhoLqMPLLtq7zHXC/OziOkw0Y1NcCJLzGqaT1vTVMwy9RJ1NBRIqlIlc9Q==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tfroC-0005yF-CM; Wed, 05 Feb 2025 21:40:05 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#63508] [PATCH core-updates v5 3/3] gnu: eudev: Build with udevrulesdir pointing to /etc/udev/rules.d. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: felix.lechner@lease-up.com, liliana.prikler@gmail.com, mirai@makinata.eu, maxim.cournoyer@gmail.com, leo@famulari.name, w@wmeyer.eu, guix-patches@gnu.org Resent-Date: Thu, 06 Feb 2025 02:40:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63508 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 63508@debbugs.gnu.org Cc: Felix Lechner , Maxim Cournoyer , Felix Lechner , Liliana Marie Prikler , Bruno Victal , Maxim Cournoyer , Leo Famulari , Wilko Meyer X-Debbugs-Original-Xcc: Felix Lechner , Liliana Marie Prikler , Bruno Victal , Maxim Cournoyer , Leo Famulari , Wilko Meyer Received: via spool by 63508-submit@debbugs.gnu.org id=B63508.173880955722862 (code B ref 63508); Thu, 06 Feb 2025 02:40:04 +0000 Received: (at 63508) by debbugs.gnu.org; 6 Feb 2025 02:39:17 +0000 Received: from localhost ([127.0.0.1]:53449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tfrnQ-0005wf-R1 for submit@debbugs.gnu.org; Wed, 05 Feb 2025 21:39:17 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:55673) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tfrnL-0005vv-3c for 63508@debbugs.gnu.org; Wed, 05 Feb 2025 21:39:14 -0500 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2f9cd9601b8so639694a91.3 for <63508@debbugs.gnu.org>; Wed, 05 Feb 2025 18:39:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738809544; x=1739414344; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J45r67ZX2jsJtvHGocn8kUHyz6fGXjxbvJe/UNjG4yU=; b=lDJ7TQJHAyfbDJGUVTfyrkUWCuHIoZbbXPX3YoChVc7hF+OGcbD6Mg+yNCI0/fIvI7 UWVRQ08NHDL+hdfsJSZdh9/ib++rToQiKRcJQJ9N656D0b+sZ3tzKK6aTmGfqOrw+N2b 6/y+70Heq7AUoY4qBAoTZHlcd7ZrqBquV3NrPRE+EibnIb4pJgeOERrZZnbry6Jx0I4l 6F6qH3kIVIDhESeDUebAYZkDXnHtWn9OFYnZeQjCTiRWm1hl2flg+LaVHZ1ZFzRpTQGh eLyq97FsDf6JgZyWLpPF4i9oD1XhPzwotJB3B2D6ASSHld0ueX6Xo92JwSyLqOgmlSf4 tdRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738809544; x=1739414344; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J45r67ZX2jsJtvHGocn8kUHyz6fGXjxbvJe/UNjG4yU=; b=BTeMoFZtY3KB1yRl2RIEQfTC6iuNRGua8VyOw9Qmk19+U7nqZDyOxbHeCwMSL58dlQ 1RVvx+8g6wT+tktB1C+q6p8AjxFwVnAjSQAHnofwtZ7KI0SdoKhfTHsIvg0PLSfmrnfA hK+G/+An/0hOr/48ClBOSeoqJBew/YcwEO+1Mde7f2S2mSxUNoPhJbKtZwWLV7UsmO7d ZQBkadxBpUChhFR3D/XGji5c28ylCMLQPBz5YuM0wCy+zGdizDzPGpbFI0PDT0PJzqgI PkU3IgyyJ+XdujiHF+e3vM7GjpcsICsR6XkGaQaNyExTM1TKwAa2NLq7PYI7Pi4mGnv/ vPkQ== X-Gm-Message-State: AOJu0YzBFjVepcZbhjhKjpM83Zy3nAF9TpphiKCA4xNgHlDJDReGcyn5 zsjxrSa1nJ0ierM02BvGMXd88+aQTq5omgH7zUyUoJ0YycXzLQ7XB51aZw== X-Gm-Gg: ASbGncvSL1eWRQuC9Pdj8lBC9boZ4BvpTtmmMxufVvhIVJwmaxa4cKe8/h4JA68SkCV XpdtUPmVOqHhKfUyz9fniPNJaj50ox20U5O2ilu/EWflOHafZV1h9od6uSS/AlaFhRIqVPcYRuI 6XKomj8HCfvFY9yLRM9wKbUV8jwtA/ZB9Cvn+JEfNJhHIMauz9UPWqZSvWxP/0KWIxsw9ufeBHQ jmIjDXNZS+gJGLP5uBLW/jOq0igTRNB+C/1xyb4r7+KOMN4nobgDErLgA3bB//X6YoG2vJIbt/n KwSfEozvihNzLsoEUZD+JzN8pMz0BwjB8A== X-Google-Smtp-Source: AGHT+IEjGP0xivT7QBvggWoV4OlbflLi8xNhQ3zsO6TC87coh4iliNzU02x5Syww8yox0HMih9LQXg== X-Received: by 2002:a05:6a00:a81:b0:72d:3861:895c with SMTP id d2e1a72fcca58-7303511d196mr9141174b3a.8.1738809544317; Wed, 05 Feb 2025 18:39:04 -0800 (PST) Received: from localhost.localdomain ([2405:6586:be0:0:c8ff:1707:9b9:af89]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73048ad26c5sm179362b3a.46.2025.02.05.18.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Feb 2025 18:39:03 -0800 (PST) From: Maxim Cournoyer Date: Thu, 6 Feb 2025 11:38:08 +0900 Message-ID: X-Mailer: git-send-email 2.48.1 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches Prior to this change, only the udev rules installed to eudev's prefix were consulted by tools such as udevadm, leading to problems such as when configuring network interfaces, or attempting to override its default rules. While our custom eudev patch adding support for the EUDEV_RULES_DIRECTORY environment variable could have been refined to take precedence over the package's configured udevrulesdir, this was not pursued for the following reasons: 1. Due to eudev's using inotify to detect new rules, the EUDEV_RULES_DIRECTORY is fixed in Guix System, per commit e9fa17eb98 ("services: udev: Use a fixed location for the rules directory and config.") 2. Users would have had to set EUDEV_RULES_DIRECTORY to the fixed directory themselves to have udevadm work as expected, which is inconvenient. 3. This simple solution is already implemented and tested in NixPkgs. * gnu/packages/linux.scm (eudev) [source]: Remove custom patch. [arguments] <#:make-flags>: New argument. <#:phases>: Override install phase to alter installation make flags. * gnu/services/base.scm (udev-shepherd-service): Do not set EUDEV_RULES_DIRECTORY environment variable. * gnu/packages/patches/eudev-rules-directory.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. Fixes: https://issues.guix.gnu.org/63508 Reported-by: Felix Lechner Change-Id: Ib8698f4b452f6fd0951bcd71831705b1be85e6e0 --- Changes in v5: - Use #:make-flags to configure udev-rules.d prefix - Remove now unused eudev patch gnu/local.mk | 1 - gnu/packages/linux.scm | 31 ++++++++++++---- .../patches/eudev-rules-directory.patch | 37 ------------------- gnu/services/base.scm | 1 - 4 files changed, 23 insertions(+), 47 deletions(-) delete mode 100644 gnu/packages/patches/eudev-rules-directory.patch diff --git a/gnu/local.mk b/gnu/local.mk index 83abc86fe2..16978da169 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1240,7 +1240,6 @@ dist_patch_DATA = \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/esmini-use-pkgconfig.patch \ %D%/packages/patches/esmtp-add-lesmtp.patch \ - %D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/exercism-disable-self-update.patch \ %D%/packages/patches/expat-CVE-2024-45490.patch \ %D%/packages/patches/expat-CVE-2024-45491.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e95d8587b4..f4e9e30a75 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -4543,12 +4543,14 @@ (define-public eudev (file-name (git-file-name name version)) (sha256 (base32 - "1f6lz57igi7iw2ls3fpzgw42bfznam4nf9368h7x8yf1mb737yxz")) - (patches (search-patches "eudev-rules-directory.patch")) - (modules '((guix build utils))))) + "1f6lz57igi7iw2ls3fpzgw42bfznam4nf9368h7x8yf1mb737yxz")))) (build-system gnu-build-system) (arguments (list + ;; The binary should be built to look for its rules under + ;; /etc/udev/rules.d, which is where the udev-shepherd-service keeps + ;; them. + #:make-flags #~(list "udevrulesdir=/etc/udev/rules.d") #:phases #~(modify-phases %standard-phases (add-before 'bootstrap 'patch-file-names @@ -4592,7 +4594,20 @@ (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")))))) + "old_library=''\n"))))) + (replace 'install + (lambda* (#:key make-flags #:allow-other-keys #:rest args) + ;; Although the runtime udevrulesdir is set to + ;; /etc/udev/rules.d, the package should provide its default + ;; rules under $libdir/udev/rules.d. + (let* ((default-udev-rules.d (string-append #$output + "/lib/udev/rules.d")) + (make-flags (cons (string-append "udevrulesdir=" + default-udev-rules.d) + (delete "udevrulesdir=/etc/udev/rules.d" + make-flags)))) + (apply (assoc-ref %standard-phases 'install) + `(,@args #:make-flags ,make-flags)))))) #:configure-flags #~(list "--enable-manpages" ;; By default, autoconf uses $prefix/etc. The udev-service-type @@ -4600,9 +4615,9 @@ (define-public eudev ;; descriptions. "--sysconfdir=/etc"))) (native-search-paths - (list (search-path-specification - (variable "UDEV_HWDB_PATH") - (files '("lib/udev/hwdb.d"))))) + (list (search-path-specification + (variable "UDEV_HWDB_PATH") + (files '("lib/udev/hwdb.d"))))) (native-inputs (list autoconf automake @@ -4620,7 +4635,7 @@ (define-public eudev ;; 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. - (list `(,util-linux "lib") ;for blkid + (list `(,util-linux "lib") ;for blkid kmod)) (outputs '("out" "static")) (home-page "https://github.com/eudev-project/eudev") diff --git a/gnu/packages/patches/eudev-rules-directory.patch b/gnu/packages/patches/eudev-rules-directory.patch deleted file mode 100644 index c4b1cfae39..0000000000 --- a/gnu/packages/patches/eudev-rules-directory.patch +++ /dev/null @@ -1,37 +0,0 @@ -Add $EUDEV_RULES_DIRECTORY to the list of rules directories. - -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. - ---- a/src/udev/udev-rules.c -+++ b/src/udev/udev-rules.c -@@ -48,16 +48,11 @@ struct uid_gid { - }; - }; - --static const char* const rules_dirs[] = { -+static const char* rules_dirs[] = { - UDEV_CONF_DIR "/rules.d", - UDEV_RULES_DIR, -- UDEV_ROOT_RUN "/udev/rules.d", - UDEV_LIBEXEC_DIR "/rules.d", --#ifdef HAVE_SPLIT_USR -- "/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 { -@@ -1718,6 +1713,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) { - - udev_rules_check_timestamp(rules); - -+ /* Allow the user to specify an additional rules directory. */ -+ rules_dirs[3] = getenv("EUDEV_RULES_DIRECTORY"); -+ - r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs); - if (r < 0) { - log_error_errno(r, "failed to enumerate rules files: %m"); diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 654e9479f2..36fef00457 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -2545,7 +2545,6 @@ (define (udev-shepherd-service config) (list udevd) #:environment-variables (cons* - "EUDEV_RULES_DIRECTORY=/etc/udev/rules.d" (string-append "LINUX_MODULE_DIRECTORY=" (getenv "LINUX_MODULE_DIRECTORY")) (default-environment-variables)))))