Received: (at 76143) by debbugs.gnu.org; 16 Feb 2025 14:15:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 16 09:15:29 2025 Received: from localhost ([127.0.0.1]:32977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tjfQf-0007Eq-6F for submit <at> debbugs.gnu.org; Sun, 16 Feb 2025 09:15:29 -0500 Received: from smtp.domeneshop.no ([2a01:5b40:0:3006::1]:33784) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <noe@HIDDEN>) id 1tjfQa-0006p6-TS for 76143 <at> debbugs.gnu.org; Sun, 16 Feb 2025 09:15:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xn--no-cja.eu; s=ds202502; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:From: Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=/3YPgySSD0tFzsLnvt2ZaxTjSRlzVBwE8ZFIhLOVKeQ=; b=I OMz106NsJOCcTZZUOhdl9LFG/xXwXOfddhwCvGeDaB7/R2zSsN6f7qGHKmJNlR1kXhiO3jmenfa03 MJWLU7LjVIIFFJY5ZKLQH41vBhwYy8cmaw6UHATx4j1j2bXzl0T2vEbv0K52mJ0Rc9TpW1jy4YFva p5sdOTgcFXeAxHn/yUUXI6EFw3CBc4oaeZ/Yxhnx7M9Bedbfwp5w7hP96ZsSjdpHzS25tC+SRwiS5 cnXbp7w7l31EDx4SZF2RFmroe2AnxDtOzOelPxr2HaVOOSnyhSevDuzOj/x8NH0wCJ6HUWIQ92lBu uhDWXeh+Y6MEN7zjSng3Gabj9f1ccKPLw==; Received: from smtp by smtp.domeneshop.no with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) id 1tjfQU-00FV3Z-Nn; Sun, 16 Feb 2025 15:15:18 +0100 From: =?utf-8?Q?No=C3=A9?= Lopez <noe@HIDDEN> To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Subject: Re: [bug#76143] [PATCH] gnu: Canonicalize paths before comparing. In-Reply-To: <87pljrs6fc.fsf@HIDDEN> References: <9d65464d2049c6162c6ed4f022490eb59a38488a.1739021650.git.noelopez@HIDDEN> <87pljrs6fc.fsf@HIDDEN> Date: Sun, 16 Feb 2025 15:15:16 +0100 Message-ID: <871pvy6knf.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 76143 Cc: Josselin Poiret <dev@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>, 76143 <at> debbugs.gnu.org, Christopher Baines <guix@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Ludovic Court=C3=A8s <ludo@HIDDEN> writes: > Hi, > > No=C3=A9 Lopez <noe@no=C3=A9.eu> skribis: > >> --- a/gnu/packages.scm >> +++ b/gnu/packages.scm >> @@ -167,11 +167,12 @@ (define %patch-path >> ;; Define it after '%package-module-path' so that '%load-path' contai= ns user >> ;; directories, allowing patches in $GUIX_PACKAGE_PATH to be found. >> (make-parameter >> - (map (lambda (directory) >> - (if (string=3D? directory %distro-root-directory) >> - (string-append directory "/gnu/packages/patches") >> - directory)) >> - %load-path))) >> + (let ((root (try-canonicalize-path %distro-root-directory))) >> + (map (lambda (directory) >> + (if (string=3D? (try-canonicalize-path directory) root) >> + (string-append directory "/gnu/packages/patches") >> + directory)) >> + %load-path)))) > > I=E2=80=99m not sure what the goal is but please keep in mind that > =E2=80=98canonicalize-path=E2=80=99 is expensive in terms of system calls= (especially if > =E2=80=98%load-path=E2=80=99 is long, and we=E2=80=99d pay it for all pro= gram startup times), > and that the comparison here remains brittle (checking the dev/ino > fields of =E2=80=98stat=E2=80=99 would be more accurate). > > Thanks, > Ludo=E2=80=99. I was not aware that you could do that with stat, I=E2=80=99ve sent a v2 th= at uses stat for comparison which works much better. The problem I faced was that I needed to create environment variables by hand so that I could load guile code (including guix=E2=80=99s) in a C prog= ram with no external environment (the packagekit daemon). It would fail because of not finding patches since I had a trailing slash in my path. I=E2=80=99ve resolved the issue by removing the slash, but I wanted to fix = it for everyone else trying to use Guix as a library.
guix-patches@HIDDEN:bug#76143; Package guix-patches.
Full text available.
Received: (at 76143) by debbugs.gnu.org; 16 Feb 2025 14:09:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 16 09:09:49 2025
Received: from localhost ([127.0.0.1]:32959 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tjfLA-0005Yc-Vh
for submit <at> debbugs.gnu.org; Sun, 16 Feb 2025 09:09:49 -0500
Received: from smtp.domeneshop.no ([2a01:5b40:0:3006::1]:51694)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <noe@HIDDEN>) id 1tjfL7-0005YG-7q
for 76143 <at> debbugs.gnu.org; Sun, 16 Feb 2025 09:09:46 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=xn--no-cja.eu; s=ds202502; h=Content-Transfer-Encoding:Content-Type:
MIME-Version:Message-ID:Date:Subject:Cc:To:From:From:Sender:Reply-To:Subject:
Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id:
List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;
bh=Ys7TtJVhP88J5uPfs9DtlOiDFaN9EpVZiqptixZwS3U=; b=agaEJQIGPcjED+INHdNVkI2YUx
8E5JEvwEefgWdokgDr8SMVGO7c7EoIPytuYKhvQZWKLJhFuxKh7x5ivmmBPObD5u138E5pKsOCzJh
R3Lnhg9HdamPFjsxKnVo8AhS3yMiFzMVTOdLIV69C2zYqYfL6itbYSXGoRERILSKfmA2kkseH46vm
n+R2vDQq9Qwo9JMRZgGW4dARXgUzIphfOJjejJou1P7agu4Fg1WLdZufYWlHqp3fSCzOvC4fjCY9Z
KA+MsbkiO6wddamCR2jRJHKpFpSTeKDsLyiHzds6KnA8ZPSuyYSbEL7lOQ6vpPQyOIl13tjQuu/b9
jb+1DTiA==;
Received: from smtp by smtp.domeneshop.no with esmtpsa (TLS1.3) tls
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95)
id 1tjfKy-00FTtG-Rn; Sun, 16 Feb 2025 15:09:36 +0100
From: =?UTF-8?q?No=C3=A9=20Lopez?= <noe@HIDDEN>
To: 76143 <at> debbugs.gnu.org
Subject: [PATCH v2] gnu: Find patches directory through symlinks.
Date: Sun, 16 Feb 2025 15:08:56 +0100
Message-ID: <19bb17d762c3cddbd57c9f500f17e0b1ce957d36.1739714805.git.noelopez@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 76143
Cc: =?UTF-8?q?No=C3=A9=20Lopez?= <noe@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
From: Noé Lopez <noelopez@HIDDEN>
This fixes a bug where patches would not be found in %patch-path when the
Guile load path would contain a different path (via symlink or trailing slash)
to the %distro-root-directory than what was previously found. We use stat to
make sure that two different paths to the same directory are still matched.
For example: if the Guile path was /guix/ and %distro-root-directory was
/guix, patches would not be found even though the two directories are the
same.
* gnu/packages.scm (%patch-path): Compare directories with directory=?.
* guix/utils.scm (directory=?): New procedure.
* tests/utils.scm: Add tests for directory=?.
Change-Id: I73f65b6c050cdeff85637e13ffd0319dcc1d4958
---
gnu/packages.scm | 2 +-
guix/utils.scm | 15 +++++++++++++++
tests/utils.scm | 13 +++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/gnu/packages.scm b/gnu/packages.scm
index bdd5d21940..5cad0d50ff 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -168,7 +168,7 @@ (define %patch-path
;; directories, allowing patches in $GUIX_PACKAGE_PATH to be found.
(make-parameter
(map (lambda (directory)
- (if (string=? directory %distro-root-directory)
+ (if (directory=? directory %distro-root-directory)
(string-append directory "/gnu/packages/patches")
directory))
%load-path)))
diff --git a/guix/utils.scm b/guix/utils.scm
index b6cf5aea4f..a2537b4285 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2023 Zheng Junjie <873216071@HIDDEN>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@HIDDEN>
;;; Copyright © 2024 Herman Rimm <herman@HIDDEN>
+;;; Copyright © 2025 Noé Lopez <noelopez@HIDDEN>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -162,6 +163,7 @@ (define-module (guix utils)
compressed-output-port
call-with-compressed-output-port
canonical-newline-port
+ directory=?
string-distance
string-closest
@@ -1150,6 +1152,19 @@ (define (canonical-newline-port port)
get-position
set-position!
close))
+
+(define* (directory=? directory #:rest directories)
+ (define (dev+ino directory)
+ (and-let* ((stats (stat directory #f))
+ (dev (stat:dev stats))
+ (ino (stat:ino stats)))
+ (cons dev ino)))
+ (define check (dev+ino directory))
+ (and check
+ (fold (lambda (element acc)
+ (and acc (equal? (dev+ino element) check)))
+ #t
+ directories)))
;;;
;;; Source location.
diff --git a/tests/utils.scm b/tests/utils.scm
index 462e43e2b1..88a88eba1d 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@HIDDEN>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@HIDDEN>
;;; Copyright © 2024 Herman Rimm <herman@HIDDEN>
+;;; Copyright © 2025 Noé Lopez <noelopez@HIDDEN>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -370,6 +371,18 @@ (define-public package-2\n 'package)\n"
;; way.
"avr32" "avr32-unknown-none")))
+;; Try to not depend on the user’s filesystem.
+(test-equal "directory=?"
+ '(#t #t #t #t #t #f #f)
+ (list
+ (directory=? "/" "/")
+ (directory=? "/../" "//")
+ (directory=? "//../" "/")
+ (directory=? "/")
+ (directory=? "/" "/../" "//" "//..//../")
+ (directory=? "/proc/99999999" "/proc/99999999") ;nonexistent directories
+ (directory=? "/proc/99999999/../../" "/")))
+
(test-end)
(false-if-exception (delete-file temp-file))
base-commit: 73d74032d580212e7b59644d3324677926e4339b
--
2.48.1
guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:bug#76143; Package guix-patches.
Full text available.Received: (at 76143) by debbugs.gnu.org; 9 Feb 2025 11:29:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:29:09 2025 Received: from localhost ([127.0.0.1]:43358 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1th5Uq-0004ny-Rf for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:29:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38534) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1th5Up-0004nZ-4x for 76143 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:29:07 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1th5Uh-0006wh-6K; Sun, 09 Feb 2025 06:28:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=L1dRCVv4TKEgwMBte8cKLJBnJLS5onIDIEqhfKV8N6M=; b=XF37JkvgT+J7VbY1ttPU bkEaXhagxNO2k2k2WiaimUJea9GTZAXSnCrqH76zzJplLZYmBvrqFad0n5pK03GLlvJGhtzMaT+v5 ORKH+cFRbcXu3HXUxqbl9K1PXL3QoN90+jP8vrk9CGhKMMTdKtW9X883ZqjVeyxF0dne05Md5l+Vj daDXOQaMg8rc4teePvxYrEEakUhJ3h4yjclvvH6S4llXTvaZ1pn3Kw8K36FyXNMx499K0Y8b2lhRc oyDTwAp/6pk+hpxiggAeBxXmA7GUt7EPPokbMLcaAvgTTenOPY6bDeiG1jZj9YUR2DDWDxgW9VrJI 4Cz4F+6Pg8Ycrg==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: =?utf-8?Q?No=C3=A9?= Lopez <noe@HIDDEN> Subject: Re: [bug#76143] [PATCH] gnu: Canonicalize paths before comparing. In-Reply-To: <9d65464d2049c6162c6ed4f022490eb59a38488a.1739021650.git.noelopez@HIDDEN> (=?utf-8?Q?=22No=C3=A9?= Lopez"'s message of "Sat, 8 Feb 2025 14:36:08 +0100") References: <9d65464d2049c6162c6ed4f022490eb59a38488a.1739021650.git.noelopez@HIDDEN> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: Primidi 21 =?utf-8?Q?Pluvi=C3=B4se?= an 233 de la =?utf-8?Q?R=C3=A9volution=2C?= jour du Thlaspi X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Sun, 09 Feb 2025 12:28:55 +0100 Message-ID: <87pljrs6fc.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76143 Cc: Josselin Poiret <dev@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>, 76143 <at> debbugs.gnu.org, Christopher Baines <guix@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hi, No=C3=A9 Lopez <noe@no=C3=A9.eu> skribis: > --- a/gnu/packages.scm > +++ b/gnu/packages.scm > @@ -167,11 +167,12 @@ (define %patch-path > ;; Define it after '%package-module-path' so that '%load-path' contain= s user > ;; directories, allowing patches in $GUIX_PACKAGE_PATH to be found. > (make-parameter > - (map (lambda (directory) > - (if (string=3D? directory %distro-root-directory) > - (string-append directory "/gnu/packages/patches") > - directory)) > - %load-path))) > + (let ((root (try-canonicalize-path %distro-root-directory))) > + (map (lambda (directory) > + (if (string=3D? (try-canonicalize-path directory) root) > + (string-append directory "/gnu/packages/patches") > + directory)) > + %load-path)))) I=E2=80=99m not sure what the goal is but please keep in mind that =E2=80=98canonicalize-path=E2=80=99 is expensive in terms of system calls (= especially if =E2=80=98%load-path=E2=80=99 is long, and we=E2=80=99d pay it for all progr= am startup times), and that the comparison here remains brittle (checking the dev/ino fields of =E2=80=98stat=E2=80=99 would be more accurate). Thanks, Ludo=E2=80=99.
guix-patches@HIDDEN:bug#76143; Package guix-patches.
Full text available.
Received: (at submit) by debbugs.gnu.org; 8 Feb 2025 13:37:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 08:37:01 2025
Received: from localhost ([127.0.0.1]:39200 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tgl12-0004bL-HM
for submit <at> debbugs.gnu.org; Sat, 08 Feb 2025 08:37:00 -0500
Received: from lists.gnu.org ([2001:470:142::17]:50022)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <noe@HIDDEN>) id 1tgl0z-0004b0-Kn
for submit <at> debbugs.gnu.org; Sat, 08 Feb 2025 08:36:58 -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 <noe@HIDDEN>) id 1tgl0o-0002rD-EN
for guix-patches@HIDDEN; Sat, 08 Feb 2025 08:36:47 -0500
Received: from smtp.domeneshop.no ([2a01:5b40:0:3006::1])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <noe@HIDDEN>) id 1tgl0l-0000jj-6N
for guix-patches@HIDDEN; Sat, 08 Feb 2025 08:36:46 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=xn--no-cja.eu; s=ds202402; h=Content-Transfer-Encoding:Content-Type:
MIME-Version:Message-ID:Date:Subject:Cc:To:From:From:Sender:Reply-To:Subject:
Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id:
List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;
bh=OkJ+FgaPRPheagtdb1xNPFnkXkRdJMBXLJo0BYioqFU=; b=EBwMsMWoT0QojYBMnby5ZmqLux
GyoyqDelKXTZwhHFbkdbaTVYOLsLzDf0i2gacB0Ag5bqaJXVmz1n0xB7UHLEQ/OxFvQ5ORFX/v6Nc
CDCXZsfk9ZCUgU+D8X7s+b1xpLEc9jP5rFAiMvFMioH3wFaMMBBTiiRpLKd9cogmd1Con6zybSC8n
w11bJo+2j134ALHVHatqUYToXtQxCZWNH1CEYrNeQbBcMHd53KjOM0nQs0/elsTUZsjeU+76DNbtl
O5uzVMgqhjG0FHqxlsMhxGNNULn7cc1HVtTsQ/aw+itVU7vuD6NICRI/reEKQXGvlAesxSwxBSmfd
e5nrq+mA==;
Received: from smtp by smtp.domeneshop.no with esmtpsa (TLS1.3) tls
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95)
id 1tgl0d-006oq5-Df; Sat, 08 Feb 2025 14:36:35 +0100
From: =?UTF-8?q?No=C3=A9=20Lopez?= <noe@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH] gnu: Canonicalize paths before comparing.
Date: Sat, 8 Feb 2025 14:36:08 +0100
Message-ID: <9d65464d2049c6162c6ed4f022490eb59a38488a.1739021650.git.noelopez@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=2a01:5b40:0:3006::1;
envelope-from=noe@HIDDEN; helo=smtp.domeneshop.no
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001,
SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
Cc: =?UTF-8?q?No=C3=A9=20Lopez?= <noe@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)
From: Noé Lopez <noelopez@HIDDEN>
The comparison would fail if the load path for guix was not already
canonicalized, since it is doing a string comparison.
* gnu/packages.scm (%patch-path): Canonicalize paths before
comparing.
* guix/ui.scm (try-canonicalize-path): Move to (guix utils).
* guix/utils.scm (try-canonicalize-path): New function.
Change-Id: Id5d51ce483af74ac4e122563d84cc3e8d78c3246
---
gnu/packages.scm | 11 ++++++-----
guix/ui.scm | 14 --------------
guix/utils.scm | 15 +++++++++++++++
3 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/gnu/packages.scm b/gnu/packages.scm
index bdd5d21940..d043d0616d 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -167,11 +167,12 @@ (define %patch-path
;; Define it after '%package-module-path' so that '%load-path' contains user
;; directories, allowing patches in $GUIX_PACKAGE_PATH to be found.
(make-parameter
- (map (lambda (directory)
- (if (string=? directory %distro-root-directory)
- (string-append directory "/gnu/packages/patches")
- directory))
- %load-path)))
+ (let ((root (try-canonicalize-path %distro-root-directory)))
+ (map (lambda (directory)
+ (if (string=? (try-canonicalize-path directory) root)
+ (string-append directory "/gnu/packages/patches")
+ directory))
+ %load-path))))
;; This procedure is used by Emacs-Guix up to 0.5.1.1, so keep it for now.
;; See <https://github.com/alezost/guix.el/issues/30>.
diff --git a/guix/ui.scm b/guix/ui.scm
index 87a448bf72..a3a9bf4e42 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -206,20 +206,6 @@ (define-syntax-rule (without-compiler-optimizations exp)
(parameterize (((@ (system base compile) default-optimization-level) 1))
exp))
-(define (try-canonicalize-path file)
- "Like 'canonicalize-path', but return FILE as-is if 'canonicalize-path'
-throws.
-
-This is necessary for corner cases where 'canonicalize-path' fails. One
-example is on Linux when a /dev/fd/N file denotes a pipe, represented as a
-symlink to a non-existent file like 'pipe:[1234]', as in this example:
-
- sh -c 'stat $(readlink -f /dev/fd/1)' | cat"
- (catch 'system-error
- (lambda ()
- (canonicalize-path file))
- (const file)))
-
(define* (load* file user-module
#:key (on-error 'nothing-special))
"Load the user provided Scheme source code FILE."
diff --git a/guix/utils.scm b/guix/utils.scm
index b6cf5aea4f..6e5b6b6caf 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -162,6 +162,7 @@ (define-module (guix utils)
compressed-output-port
call-with-compressed-output-port
canonical-newline-port
+ try-canonicalize-path
string-distance
string-closest
@@ -1150,6 +1151,20 @@ (define (canonical-newline-port port)
get-position
set-position!
close))
+
+(define (try-canonicalize-path file)
+ "Like 'canonicalize-path', but return FILE as-is if 'canonicalize-path'
+throws.
+
+This is necessary for corner cases where 'canonicalize-path' fails. One
+example is on Linux when a /dev/fd/N file denotes a pipe, represented as a
+symlink to a non-existent file like 'pipe:[1234]', as in this example:
+
+ sh -c 'stat $(readlink -f /dev/fd/1)' | cat"
+ (catch 'system-error
+ (lambda ()
+ (canonicalize-path file))
+ (const file)))
;;;
;;; Source location.
base-commit: 9c36d38614079611aebe4721b9e087f98e57b1b3
--
2.48.1
Noé Lopez <noe@HIDDEN>:guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN.
Full text available.guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:bug#76143; Package guix-patches.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.