\f
(define (generate/common kernel)
(lambda (filename #!optional os-type)
- (let ((do-type
- (let ((pathname (merge-pathnames filename)))
- (lambda (os-type)
- (let ((pmodel (read-package-model pathname os-type)))
- (let ((changes? (read-file-analyses! pmodel os-type)))
- (resolve-references! pmodel)
- (kernel pathname pmodel changes? os-type)))))))
- (cond ((default-object? os-type) (do-type microcode-id/operating-system))
- ((eq? os-type 'all) (for-each do-type os-types))
- ((memq os-type os-types) (do-type os-type))
- (else (error:bad-range-argument os-type #f))))))
+ (for-each-os-type os-type
+ (let ((pathname (merge-pathnames filename)))
+ (lambda (os-type)
+ (let ((pmodel (read-package-model pathname os-type)))
+ (let ((changes? (read-file-analyses! pmodel os-type)))
+ (resolve-references! pmodel)
+ (kernel pathname pmodel changes? os-type))))))))
(define (cref/generate-trivial-constructor filename #!optional os-type)
- (let* ((pathname (merge-pathnames filename))
- (do-type
- (lambda (os-type)
- (write-external-descriptions
- pathname
- (read-package-model pathname os-type)
- #f
- os-type))))
- (cond ((or (default-object? os-type)
- (eq? os-type 'all))
- (for-each do-type os-types))
- ((eq? os-type #f)
- (do-type microcode-id/operating-system))
- ((memq os-type os-types)
- (do-type os-type))
- (else (error:bad-range-argument os-type #f)))))
+ (for-each-os-type os-type
+ (let ((pathname (merge-pathnames filename)))
+ (lambda (os-type)
+ (write-external-descriptions pathname
+ (read-package-model pathname os-type)
+ #f
+ os-type)))))
+
+(define (for-each-os-type os-type procedure)
+ (cond ((default-object? os-type) (procedure microcode-id/operating-system))
+ ((eq? os-type 'all) (for-each procedure os-types))
+ ((memq os-type os-types) (procedure os-type))
+ (else (error:bad-range-argument os-type #f))))
(define (cref/package-files filename os-type)
(append-map package/files
(if (not (name->package '(edwin)))
(let ((package-set (package-set-pathname "edwin")))
(if (not (file-exists? package-set))
- (cref/generate-trivial-constructor "edwin" #f))
+ (cref/generate-trivial-constructor "edwin"))
(construct-packages-from-file (fasload package-set))))
(if (lexical-unreferenceable? (->environment '(edwin string))