~ chicken-core (chicken-5) 5e4976b2022c7add5d1a4a3492bf0974d1aad960
commit 5e4976b2022c7add5d1a4a3492bf0974d1aad960 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu Sep 30 08:32:07 2010 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu Sep 30 08:32:07 2010 -0400 make -r work for local transport (suggested by Mario) diff --git a/setup-download.scm b/setup-download.scm index 9cd057c6..3ee1aa0b 100644 --- a/setup-download.scm +++ b/setup-download.scm @@ -53,6 +53,7 @@ (define *chicken-install-user-agent* (conc "chicken-install " (chicken-version))) (define *trunk* #f) (define *mode* 'default) + (define *windows-shell* (foreign-value "C_WINDOWS_SHELL" bool)) (define (d fstr . args) (let ([port (if *quiet* (current-error-port) (current-output-port))]) @@ -90,18 +91,32 @@ (else "unknown\n")))) (define (locate-egg/local egg dir #!optional version destination) - (let* ([eggdir (make-pathname dir egg)] - [tagdir (make-pathname eggdir "tags")] - [tagver (and (not *trunk*) + (let* ((eggdir (make-pathname dir egg)) + (tagdir (make-pathname eggdir "tags")) + (tagver (and (not *trunk*) (file-exists? tagdir) (directory? tagdir) - (existing-version egg version (directory tagdir)) ) ] ) - (if tagver - (values (make-pathname tagdir tagver) tagver) - (let ([trunkdir (make-pathname eggdir "trunk")]) - (when-no-such-version-warning egg version) - (if (and (file-exists? trunkdir) (directory? trunkdir)) - (values trunkdir "trunk") - (values eggdir "") ) ) ) ) ) + (existing-version egg version (directory tagdir)) ) ) + (dest (and destination (make-pathname destination egg)))) + (let-values (((src ver) + (if tagver + (values (make-pathname tagdir tagver) tagver) + (let ((trunkdir (make-pathname eggdir "trunk"))) + (when-no-such-version-warning egg version) + (if (and (file-exists? trunkdir) (directory? trunkdir)) + (values trunkdir "trunk") + (values eggdir "") ) ) ) ) ) + (cond (dest + (create-directory dest) + (let ((qdest (qs (normalize-pathname dest))) + (qsrc (qs (normalize-pathname src))) + (cmd (if *windows-shell* + (sprintf "xcopy ~a ~a" src dest) + (sprintf "cp -r ~a/* ~a" src dest)))) + (d " ~a~%" cmd) + (if (zero? (system cmd)) + (values #f "") + (values dest ver)))) + (else (values src ver)))))) (define (gather-egg-information dir) (let ((ls (directory dir))) @@ -342,7 +357,6 @@ (*mode* mode)) (case transport ((local) - (when destination (warning "destination for transport `local' ignored")) (locate-egg/local name location version destination) ) ((svn) (locate-egg/svn name location version destination username password) )Trap