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

Reply via email to