gexp: ‘imported-files’ does not create symlinks.

Fixes <https://issues.guix.gnu.org/73275>.

This is presumably what e529d46828 meant
to do, except that it wrongfully pass #:symlink? a true value instead,
most likely due to a typo.

* guix/gexp.scm (imported-files): Pass #:symlink? #f.
* tests/gexp.scm ("imported-files does not create symlinks"): New test.

Change-Id: Ic31be56a2adf4dfa55e1ec390c53cc9ba5f8a96c
This commit is contained in:
Ludovic Courtès 2024-09-15 21:55:45 +02:00
parent aec4c70a4d
commit a7bb45b39d
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 28 additions and 1 deletions

View file

@ -1629,7 +1629,7 @@ (define* (imported-files files
(_ #f)) (_ #f))
files) files)
(imported-files/derivation files #:name name (imported-files/derivation files #:name name
#:symlink? derivation? #:symlink? #f ;like 'interned-file-tree'
#:system system #:guile guile) #:system system #:guile guile)
(interned-file-tree `(,name directory (interned-file-tree `(,name directory
,@(file-mapping->tree files))))) ,@(file-mapping->tree files)))))

View file

@ -944,6 +944,33 @@ (define (canonical-file? file)
(and (file=? (string-append dir "/a/b/c") q-scm* stat) (and (file=? (string-append dir "/a/b/c") q-scm* stat)
(file=? (string-append dir "/p/q") plain* stat))))))) (file=? (string-append dir "/p/q") plain* stat)))))))
(test-assert "imported-files does not create symlinks"
;; 'imported-files' should always produce a directory with regular files,
;; whether or not it's going through 'imported-files/derivation'.
;; See <https://issues.guix.gnu.org/73275>.
(call-with-temporary-directory
(lambda (directory)
(symlink (search-path %load-path "guix/store.scm")
(in-vicinity directory "store.scm"))
(run-with-store %store
(mlet* %store-monad
((files1 -> `(("x" . ,(in-vicinity directory "store.scm"))))
(files2 -> `(,@files1
("y" . ,(plain-file "foo.scm" "#t"))))
(import1 (imported-files files1))
(import2-drv (imported-files files2))
(import2 -> (derivation->output-path import2-drv))
(_ (built-derivations (list import2-drv))))
(return (and (eq? (stat:type (lstat (in-vicinity import1 "x")))
'regular)
(eq? (stat:type (lstat (in-vicinity import2 "x")))
'regular)
(file=? (in-vicinity import1 "x")
(search-path %load-path "guix/store.scm"))
(file=? (in-vicinity import2 "x")
(search-path %load-path "guix/store.scm")))))))))
(test-equal "gexp-modules & ungexp" (test-equal "gexp-modules & ungexp"
'((bar) (foo)) '((bar) (foo))
((@@ (guix gexp) gexp-modules) ((@@ (guix gexp) gexp-modules)