A Waouwa
A Waouwa

Reputation: 41

How to include all function and package declarations in a file called all.lisp for an asdf package-inferred-system

So, in the asdf manual/documentation in section 6.5 of the package-inferred-system extension, the example uses an all.lisp file for determining packages (which I/we will assume will contain all of the function and package information for that respective subdirectoty).

What I want to know is what would be the "proper" way of including all of the function and package declarations in this all.lisp file. Would I do something like including all of the function declarations for that subdirectory in the all.lisp file, and then use the register-system-packages function in the asdf file. Or could I omit the all.lisp file, and let the compiler infer the packages from the files (but would I have to then use the register-system-packages function for every single file I add to this system).

I'm just wondering more about the specifics of using this system and the files and declarations that have to be made when adding a new file to the system.

Sorry for the opacity of the question; I can't seem to grasp the specifics of this system

Upvotes: 3

Views: 345

Answers (2)

Faré
Faré

Reputation: 960

1- See how it's done in lisp-interface-library/*/all.lisp, using uiop:define-package and its :use-reexport clause.

See for instance pure/all.lisp:

(uiop:define-package :lil/pure/all (:nicknames :pure) (:import-from :lil/interface/all) (:use :closer-common-lisp) (:mix :fare-utils :uiop :alexandria) (:use-reexport :lil/interface/base :lil/interface/eq :lil/interface/order :lil/interface/group :lil/pure/empty :lil/pure/collection :lil/pure/iterator :lil/pure/map :lil/pure/set :lil/pure/alist :lil/pure/tree :lil/pure/hash-table :lil/pure/fmim :lil/pure/encoded-key-map :lil/pure/queue :lil/pure/iterator-implementation :lil/pure/map-implementation :lil/pure/set-implementation :lil/pure/alist-implementation :lil/pure/tree-implementation :lil/pure/hash-table-implementation :lil/pure/fmim-implementation :lil/pure/encoded-key-map-implementation :lil/pure/queue-implementation ))

2- These days, I recommend use requiring asdf 3.1 and not using asdf-package-system. For maximal backward incompatibility, use

#-asdf3.1 (error "<my system> requires ASDF 3.1 or later. Please upgrade your ASDF.")

And then in your defsystem, :class :package-inferred-system

3- I do not follow this forum closely. ASDF questions find a quicker answer on the asdf-devel mailing-list.

Upvotes: 1

Svante
Svante

Reputation: 51501

As I interpret that, you would simply have the package defined in all.lisp depend on the packages defined in the other files of that system. It is then, in a way, an entry point for the dependency graph into that system. I would expect all.lisp to contain high level entry definitions that naturally depend on the other files.

For example, if you build a system that has a (sub-)system for exposing a web interface, the webinterface/all.lisp file/package would contain functions for configuring, starting, and stopping the web server. These functions would depend on the handler definitions in other files/packages which in turn would depend on other files/packages that provide the data or do the meat of request processing.

Upvotes: 0

Related Questions