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, you'd have a file that contains:

(in-package :asdf) #-asdf3 (error "LIL requires ASDF 3 or later. Please upgrade your ASDF.") (defsystem :description "Software from" :class :package-system :defsystem-depends-on #.(unless (find-class :package-system nil) '(:asdf-package-system)) :depends-on ( :in-order-to ((test-op (load-op :perform (test-op (o c) (symbol-call :test-suite))) (register-system-packages '(: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, 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 (:nicknames :foo-bar) (:use :cl :cl-ppcre :uiop) (:use-reexport

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.