~ruther/guix-local

beb6357463549ff51a0ab79a424d656460a11140 — Maxim Cournoyer 1 year, 4 months ago e2a42ac
build/pyproject: Really merge directories in install phase.

Using rename-file, the destination had to be empty otherwise it would
error out.  By using copy-recursively, a directory can be copied onto a
pre-existing directory, really merging them.  This problem manifested
itself attempting to build the python-pyre package.

Solving #596.

* guix/build/pyproject-build-system.scm (install)
<merge-directories>: Use copy-recursively instead of rename-file.

Change-Id: Iceb8609a86f29b17e5fbe6a9629339d0bc26e11f
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
1 files changed, 7 insertions(+), 2 deletions(-)

M guix/build/pyproject-build-system.scm
M guix/build/pyproject-build-system.scm => guix/build/pyproject-build-system.scm +7 -2
@@ 201,8 201,13 @@ builder.build_wheel(sys.argv[3], config_settings=config_settings)"
                  (format #t "~a/~a -> ~a/~a~%"
                          source file destination file)
                  (mkdir-p destination)
                  (rename-file (string-append source "/" file)
                               (string-append destination "/" file))
                  ;; Use 'copy-recursively' rather than 'rename-file' to guard
                  ;; against the odd case where DESTINATION is a non-empty
                  ;; directory, which may happen when using hybrid Python
                  ;; build systems.
                  (copy-recursively (string-append source "/" file)
                                    (string-append destination "/" file))
                  (delete-file-recursively (string-append source "/" file))
                  (when post-move
                    (post-move file)))
                (scandir source