GNU bug report logs - #68942
[PATCH] grafts: rename files in deepest-first order.

Previous Next

Package: guix-patches;

Reported by: skyvine <at> protonmail.com

Date: Tue, 6 Feb 2024 01:08:02 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 68942 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#68942; Package guix-patches. (Tue, 06 Feb 2024 01:08:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to skyvine <at> protonmail.com:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 06 Feb 2024 01:08:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: skyvine <at> protonmail.com
To: guix-patches <at> gnu.org
Cc: Skyler Ferris <skyvine <at> protonmail.com>
Subject: [PATCH] grafts: rename files in deepest-first order.
Date: Tue, 06 Feb 2024 01:06:38 +0000
From: Skyler Ferris <skyvine <at> protonmail.com>

The problem is explained in the deleted comment. The fix is just
to reverse the list given to for-each. I guess this is correct
because the procedure does not depend on parallel ordering between
different lists, it uses assoc-ref to look things up. It fixed the
problem when I ran into this bug while working on a package.

Change-Id: I997880043f35797ad79ffd73a02b5ffdd9283da9
---
# While I do not have the resources to test this exhaustively (ie,
# rebuild all of the packages defined by guix), I successfully
# reconfigured my system to use a version of guix with this patch
# included, and the output showed that at least dozens of grafts were
# applied successfully. Additionally, the tests in `tests/grafts.scm`
# pass. If anything needs to be improved please let me know and I will
# work on a different patch to resolve this issue.
 guix/build/graft.scm | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/guix/build/graft.scm b/guix/build/graft.scm
index 281dbaba6f..232c2a04ad 100644
--- a/guix/build/graft.scm
+++ b/guix/build/graft.scm
@@ -289,15 +289,11 @@ (define (rename-matching-files directory mapping)
                                 (assoc-ref mapping (basename file)))
                               #:directories? #t)))
 
-    ;; XXX: This is not quite correct: if MAPPING contains "foo", and
-    ;; DIRECTORY contains "bar/foo/foo", we first rename "bar/foo" and then
-    ;; "bar/foo/foo" no longer exists so we fail.  Oh well, surely that's good
-    ;; enough!
     (for-each (lambda (file)
                 (let ((target (assoc-ref mapping (basename file))))
                   (rename-file file
                                (string-append (dirname file) "/" target))))
-              matches)))
+              (reverse matches))))
 
 (define (exit-on-exception proc)
   "Return a procedure that wraps PROC so that 'primitive-exit' is called when

base-commit: 931d893c550128591018587c90d2491fd66a11a4
-- 
2.41.0






This bug report was last modified 88 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.