~ chicken-core (chicken-5) c86e8f205e3305a1bc62cebc49b4bc3747a5d47d
commit c86e8f205e3305a1bc62cebc49b4bc3747a5d47d Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Apr 14 09:05:53 2010 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Apr 14 09:05:53 2010 +0200 types.db fix; handling of VARDIR broken in chicken-install diff --git a/chicken-install.scm b/chicken-install.scm index d5ec2d6e..0f50cc50 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -360,7 +360,10 @@ (if *keep* " -e \"(keep-intermediates #t)\"" "") (if (and *no-install* (not dep?)) " -e \"(setup-install-mode #f)\"" "") (if *host-extension* " -e \"(host-extension #t)\"" "") - (if *prefix* (sprintf " -e \"(installation-prefix \\\"~a\\\")\"" *prefix*) "") + (if *prefix* + (sprintf " -e \"(installation-prefix \\\"~a\\\")\"" + (normalize-pathname *prefix* 'unix)) + "") (if *deploy* " -e \"(deployment-mode #t)\"" "") #\space (shellpath (make-pathname (cadr e+d+v) (car e+d+v) "setup"))) ) diff --git a/setup-api.scm b/setup-api.scm index 5cdad99e..ed3dfd03 100644 --- a/setup-api.scm +++ b/setup-api.scm @@ -426,10 +426,14 @@ (define (make-setup-info-pathname fn #!optional (rpath (repository-path))) (make-pathname rpath fn setup-file-extension) ) -(define installation-prefix - (make-parameter - (or (get-environment-variable "CHICKEN_INSTALL_PREFIX") - chicken-prefix))) +(define installation-prefix (make-parameter #f)) + +(define real-installation-prefix + (let ((prefix (get-environment-variable "CHICKEN_INSTALL_PREFIX"))) + (lambda () + (or (installation-prefix) + prefix + chicken-prefix)))) (define create-directory/parents (let () @@ -457,17 +461,25 @@ (else (with-output-to-file setup-file (cut pp info)))) (unless *windows-shell* (run (,*chmod-command* a+r ,(shellpath setup-file))))))) -(define (copy-file from to #!optional (err #t) (prefix (installation-prefix))) +(define (copy-file from to #!optional (err #t) (prefix (real-installation-prefix))) ;;XXX the prefix handling is completely bogus (let ((from (if (pair? from) (car from) from)) (to (let ((to-path (if (pair? from) (make-pathname to (cadr from)) to))) - (if (not (string-prefix? prefix to-path)) - (make-pathname prefix to-path) + (if (not (path-prefix? prefix to-path)) + (if (absolute-pathname? to-path) + to-path + (make-pathname prefix to-path) ) to-path)))) (ensure-directory to) (run (,*copy-command* ,(shellpath from) ,(shellpath to))) to)) +(define (path-prefix? pref path) + (print (list pref path)) + (string-prefix? + (normalize-pathname pref) + (normalize-pathname path))) + (define (move-file from to) (let ((from (if (pair? from) (car from) from)) (to (if (pair? from) (make-pathname to (cadr from)) to))) @@ -553,7 +565,7 @@ (if *windows-shell* "exe" #f) ) ) (when (setup-install-mode) (let* ((files (check-filelist (if (list? files) files (list files)))) - (pre (installation-prefix)) + (pre (real-installation-prefix)) (ppath (ensure-directory (make-pathname pre "bin"))) (files (if *windows* (map (lambda (f) @@ -575,7 +587,7 @@ (define (install-script id files #!optional (info '())) (when (setup-install-mode) (let* ((files (check-filelist (if (list? files) files (list files)))) - (pre (installation-prefix)) + (pre (real-installation-prefix)) (ppath (ensure-directory (make-pathname pre "bin"))) (pfiles (map (lambda (f) (let ((from (if (pair? f) (car f) f)) @@ -595,10 +607,13 @@ (define (repo-path #!optional ddir?) (let ((p (if ddir? (if (deployment-mode) - (installation-prefix) - (make-pathname - (installation-prefix) - (sprintf "lib/chicken/~a" (##sys#fudge 42)))) + (real-installation-prefix) ; deploy: copy directly into destdir + (let ((p (installation-prefix))) + (if p ; installation-prefix changed: use it + (make-pathname + p + (sprintf "lib/chicken/~a" (##sys#fudge 42))) + (repository-path)))) ; otherwise use repo-path (repository-path))) ) (ensure-directory p) p) ) diff --git a/types.db b/types.db index 831379b9..5021ee45 100644 --- a/types.db +++ b/types.db @@ -529,7 +529,7 @@ (pathname-replace-file (procedure pathname-replace-file (string string) string)) (pathname-strip-directory (procedure pathname-strip-directory (string) string)) (pathname-strip-extension (procedure pathname-strip-extension (string) string)) -(normalize-pathname (procedure normalize-pathname (string) string)) +(normalize-pathname (procedure normalize-pathname (string #!optional symbol) string)) ;; irregexTrap