CLPM has several primary goals:
- Manage packages in both global and project specific contexts.
- Use existing libraries where possible.
- Support HTTPS.
- Do as little work as possible in the development image.
Architecture
Two major pieces:
CLPM
The core of the package manager, intended to be run in a separate process. Additionally, has a command line interface for use outside of Lisp.
CLPM Client
A small, portable system meant to be loaded into development images. Launches CLPM processes and communicates with them using a REPL.
While CLPM can be used without the client, installing and using the client makes Common Lisp coding a more interactive and fun experience. The CLPM client can be loaded into a Lisp image and integrates with ASDF to seamlessly install missing systems, similarly to the Quicklisp client.
Sourcing
A repository of Common Lisp projects is called a source. The source you are most likely familiar with is Quicklisp, but CLPM is designed to be extended to support multiple sources and source types. This will allow you to easily use CLPM for things such as internal projects that can't be released to public repositories.
CLPI
Common Lisp Project Index style sources are currently under development in the CLPI project.
This project provides the specification for the Common Lisp Project Index (CLPI) as well as a reference implementation of a library to interact with and create indices. A project index stores metadata about projects and systems defined by those projects, with a primary use case of allowing package managers to know which releases exist and to trace the dependencies of systems.
In an ideal world, much of the system information could be stored in the index by merely supplying the .asd files that define the systems. However, .asd files can include arbitrary code, require that other systems need to be loaded in order to understand the system definition, and refer to other files (such as for version numbers, system descriptions, or even children system definitions in the case of package-inferred-systems). Therefore, the index exists as a purely declarative specification of projects and their systems.
The primary CLPM author currently uses a CLPI style source to index packages located on a private Gitlab instance. If you are interested in doing something similar, please reach out.
Project information
Repository: https://gitlab.common-lisp.net/clpm/clpm
License: BSD 2-Clause
installer application