#| -*-Scheme-*-
-$Id: conpkg.scm,v 1.9 2001/08/15 02:59:35 cph Exp $
+$Id: conpkg.scm,v 1.10 2001/08/16 20:02:58 cph Exp $
Copyright (c) 1988-2001 Massachusetts Institute of Technology
(split-bindings-list (package/sorted-bindings package)))
(lambda (internal external)
(vector (package/name package)
- (let ((parent (package/parent package)))
- (if parent
- (package/name parent)
- 'NONE))
+ (let loop ((package package))
+ (let ((parent (package/parent package)))
+ (if parent
+ (cons (package/name parent) (loop parent))
+ '())))
(map (let ((map-files
(lambda (clause)
(map ->namestring
#| -*-Scheme-*-
-$Id: packag.scm,v 14.29 2001/08/15 02:56:08 cph Exp $
+$Id: packag.scm,v 14.30 2001/08/16 20:02:35 cph Exp $
Copyright (c) 1988-1999, 2001 Massachusetts Institute of Technology
(define-structure (package-description (type vector)
(conc-name package-description/))
(name #f read-only #t)
- (parent-name #f read-only #t)
+ (ancestors #f read-only #t)
(file-cases #f read-only #t)
(initialization #f read-only #t)
(finalization #f read-only #t)
(and (vector? object)
(fix:= (vector-length object) 8)
(package-name? (package-description/name object))
- (or (package-name? (package-description/parent-name object))
- (eq? (package-description/parent-name object) 'NONE))
+ (list-of-type? (package-description/ancestors object) package-name?)
(list-of-type? (package-description/file-cases object)
(lambda (case)
(and (pair? case)
(let ((name (package-description/name description))
(environment
(extend-package-environment
- (let ((parent (package-description/parent-name description)))
- (if (eq? parent 'NONE)
- null-environment
- (package/environment (find-package parent))))
+ (let ((ancestors (package-description/ancestors description)))
+ (if (pair? ancestors)
+ (package/environment (find-package (car ancestors)))
+ null-environment))
(cons (package-description/internal-names description)
(lambda (name) name))
(cons (package-description/internal-bindings description)