[PATCH] grafts: rename files in deepest-first order.

  • Open
  • quality assurance status badge
Details
One participant
  • skyvine
Owner
unassigned
Submitted by
skyvine
Severity
normal
S
S
skyvine wrote on 6 Feb 02:06 +0100
(address . guix-patches@gnu.org)(name . Skyler Ferris)(address . skyvine@protonmail.com)
db33d81668a73417611d61a85a4ed9898726378b.1706902756.git.skyvine@protonmail.com
From: Skyler Ferris <skyvine@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(-)

Toggle diff (25 lines)
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
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 68942@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 68942
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch