asdf-package-system
asdf-package-system is an ASDF-extension (pre-3.1) whereby every file is its own system, and starts with a defpackage from which dependencies are deduced.

ASDF 3.1 now includes package-inferred-system which supports quick-build and faslpath's style of one-package-per-file. This stub is present for backward compatibility with systems that were trying to use this feature with ASDF 3.0.

To use asdf-package-system, see the example from lisp-interface-library: at the top of your hierarchy, say foo.com, you'd have a file foo.com.asd that contains:

(in-package :asdf) #-asdf3 (error "LIL requires ASDF 3 or later. Please upgrade your ASDF.") (defsystem :foo.com :description "Software from foo.com" :class :package-system :defsystem-depends-on #.(unless (find-class :package-system nil) '(:asdf-package-system)) :depends-on (:foo.com/bar/all) :in-order-to ((test-op (load-op :foo.com/test/all))) :perform (test-op (o c) (symbol-call :foo.com/test/all :test-suite))) (register-system-packages :foo.com/bar/all '(:foo-bar)) (register-system-packages :closer-mop '(:c2mop :closer-common-lisp :c2cl :closer-common-lisp-user :c2cl-user))

The latter declarations tell asdf-package-system that package foo-bar is to be found in system foo.com/bar/all, and package closer-common-lisp is to be found in system closer-mop.

Then, in bar/all.lisp, you'd have a file that starts with

(uiop:defpackage :foo.com/bar/all (:nicknames :foo-bar) (:use :cl :cl-ppcre :uiop) (:use-reexport :foo.com/bar/utilities :foo.com/bar/frob :foo.com/bar/main))

And ASDF would detect that it depends on the packages that it uses, while uiop:defpackage would import all the symbols from the given packages and reexport them, but use those from cl, cl-ppcre and uiop without reexporting.


obsolete