~ chicken-core (chicken-5) 2ce47f3abb947520d13dd5c5452fabe603c003ef


commit 2ce47f3abb947520d13dd5c5452fabe603c003ef
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Jul 4 21:24:49 2018 +0200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Thu Jul 5 20:37:08 2018 +1200

    Properly handle directory copying in "data" egg components
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/egg-compile.scm b/egg-compile.scm
index ec45e4fb..29dd610e 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -741,16 +741,23 @@
 
 (define ((install-data name #!key files destination mode) 
          srcdir platform)
-  (let* ((cmd (install-file-command platform))
+  (let* ((fcmd (install-file-command platform))
+         (dcmd (copy-directory-command platform))
          (mkdir (mkdir-command platform))
+         (sfiles (map (cut prefix srcdir <>) files))
          (dest (or destination (if (eq? mode 'target)
                                    default-sharedir 
                                    (override-prefix "/share" host-sharedir))))
          (dfile (quotearg (slashify dest platform)))
          (ddir (shell-variable "DESTDIR" platform)))
     (print "\n" mkdir " " ddir dfile)
-    (print cmd (arglist (map (cut prefix srcdir <>) files)) " " ddir 
-           dfile)))
+    (let-values (((ds fs) (partition directory? sfiles)))
+      (for-each
+       (lambda (d)
+         (print dcmd " " (quotearg d) " " ddir dfile))
+       ds)
+      (when (pair? fs)
+        (print fcmd (arglist fs) " " ddir dfile)))))
 
 (define ((install-c-include name #!key deps files destination mode) 
          srcdir platform)
Trap