;;; -*- Mode:LISP; Package:USER; Readtable:ZL; Base:10 -*- (defun copy-package-to-new-environment (prefix pkg-name parent-pkg all-packages-so-far) (let ((old-pkg (find-package pkg-name)) (new-package (make-package (intern (string-append prefix pkg-name)) :super parent-package))) (setq all-packages-so-far (cond ((null old-pkg) ( (defun def-corresponding-packages (prefix pkg-tree) (let ((new-pkg (make-package (car pkg-tree)))) (def-corresponding-packages-help prefix (cadr pkg-tree) new-pkg (list new-pkg)))) (defun def-corresponding-packages-help (prefix pkg-tree-children parent-pkg all-packages-so-far) (loop for child-pkg in pkg-tree-children do (if (listp child-pkg) (def-corresponding-packages-help prefix (cadr child-pkg) (copy-package-to-new-environment prefix child-pkg parent-pkg all-packages-so-far) all-packages-so-far) (copy-package-to-new-environment prefix child-pkg parent-pkg all-packages-so-far))))