Attached is a patch for chicken-setup.scm that should really, really
handle dependencies correctly.
This doesn't sort out all problems, though: the generic setup-header.scm
in most of Kon's extensions passes -X easyfii and -X dollar to compilation
commands, but doesn't list them in the "need" clause in the respective
meta files. This is bad. I recommend to remove this and pass the -X
options explicitly. Another, suboptimal measure is to list them in the
need clause of all eggs that use setup-header.scm.
Kon, could you fix this, please?
cheers,
felix
Tue Sep 12 13:41:18 CEST 2006 [EMAIL PROTECTED]
* - version-string extraction in CMakeLists.txt handles non-numeric subversion
- version is 2.431
- chicken-setup: dependency-tree build should now really work [Thanks to Peter Bex]
--- old-chicken/chicken-setup.scm 2006-09-12 13:45:10.263615024 +0200
+++ new-chicken/chicken-setup.scm 2006-09-12 13:45:10.268614264 +0200
@@ -164,6 +164,7 @@
(define *proxy-port* #f)
(define *example-directory* (make-pathname (chicken-home) "examples"))
(define *base-directory* (current-directory))
+(define *fetch-tree-only* #f)
; Repository-format:
@@ -411,6 +412,7 @@
-C -check check for available upgrades
-e -eval EXPRESSION evaluate expression
-ls EXTENSION list installed files for extension
+ -fetch-tree download and show repository catalog
-- ignore all following arguments
Builds and installs extension libraries.
@@ -787,15 +789,14 @@
(define (fetch-file-from-net ext)
(define (requirements reqs)
- (reverse
- (fold
- (lambda (r reqs)
- (let ((node (assq r *repository-tree*)))
- (cond (node (append (list (car node)) (requirements (cdddr node)) reqs))
- ((memq r ##sys#core-library-modules) reqs)
- (else (error "Broken dependencies: extension does not exist" r) ) ) ) )
- '()
- reqs) ) )
+ (fold
+ (lambda (r reqs)
+ (let ((node (assq r *repository-tree*)))
+ (cond (node (append (requirements (cdddr node)) (list (car node)) reqs))
+ ((memq r ##sys#core-library-modules) reqs)
+ (else (error "Broken dependencies: extension does not exist" r) ) ) ) )
+ '()
+ reqs) )
(and (or *dont-ask*
(yes-or-no?
(sprintf "The extension ~A does not exist.~%Do you want to download it ?" ext)
@@ -816,7 +817,7 @@
(when *debug* (printf "catalog entry: ~s~%" a))
(cond (a (let ((reqs (remove extension-info (delete-duplicates (requirements (cdddr a)) eq?))))
(when (pair? reqs)
- (print "downloading required extensions ...")
+ (print "downloading required extensions " reqs " ...")
(for-each (cut download-data *last-decent-host* <>) reqs)
(print "installing required extensions ...")
(for-each (cut install <>) (map ->string reqs)) )
@@ -1023,6 +1024,10 @@
(set! *check-repository* #t)
(set! anydone #t)
(loop more) )
+ (("-fetch-tree" . more)
+ (set! *fetch-tree-only* #t)
+ (set! anydone #t)
+ (loop more) )
(((or "-run" "-script" "-proxy" "-host" "-csc-option"))
(error "missing option argument" (car args)) )
((filename . more)
@@ -1050,6 +1055,9 @@
(printf "No setup scripts to process~%")
(for-each (if uinst uninstall-extension install) setups) ) ) )
(when *check-repository* (check-for-upgrades))
+ (when *fetch-tree-only*
+ (download-repository-tree)
+ (pp *repository-tree*) )
(when *rebuild-doc-index*
(when (setup-verbose-flag) (printf "Rebuilding documentation index...\n"))
(build-doc-index) )
_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users