CLPM Sources
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.
The type of every source must be specified with a keyword.
Configuration
Sources are configured globally using the sources.conf
file located in
CLPM's config directory. Place any number of source descriptions there
and they will be used for global contexts. If a desired resource is
defined in multiple sources, then the source defined first has
precendence.
Sources are configured for project specific contexts (bundles) by placing source descriptions in the clpmfile. See bundle.org for more details.
Source Descriptions
Each source description is list where the first element is a string
naming the source (you may choose any name you like) and the rest is a
plist containing the options for the source. Each source must contain a
value for :type
so that CLPM may instantiate the correct objects to
interact with it.
Quicklisp
A Quicklisp style source contains a subscription metadata file (such as the primary Quicklisp one located at https://beta.quicklisp.org/dist/quicklisp.txt). Additionally, there must a file whose name is the same but suffixed with "-versions" (e.g., https://beta.quicklisp.org/dist/quicklisp-versions.txt) that points to the dist file for every version of the distribution.
The type designator for a Quicklisp like source is :quicklisp
. A
quicklisp distribution can be configured with the following options:
:url
The URL to the subscription metadata file. If the URL uses the HTTPS
scheme, then every interaction with this source will take place using
HTTPS.
For instance, to use the primary Quicklisp distribution, you use the following description:
("quicklisp"
:type :quicklisp
:url "https://beta.quicklisp.org/dist/quicklisp.txt")
Currently, information cannot be fetched from a Quicklisp distribution
on demand, data must be synced between your computer and the
distribution. This happens automatically when using bundle
commands.
In order to sync manually (for installing into a global context or when
you expect to have bad internet soon), run the following, where
$SOURCE_NAME
is the name of the source in your config file:
clpm sync $SOURCE_NAME
CLPI
Common Lisp Project Index style sources are currently under development in the CLPI project.
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.
The type specifier is :clpi
and a :url
is also required.
While CLPI sources can be synced, it is currently a fairly slow affair due to how many objects the information is spread between. It is recommended that you just let CLPM fetch data on demand.
QL-CLPI
This type of source is an extension of CLPI sources to include extra information relevant to representing a Quicklisp distribution in a CLPI style repository. Currently, this extra information includes version aliases as the same version of a project is routinely present in multiple Quicklisp distribution releases. Development of this source type happens in the QL-CLPI project.
The type designator for this source is :ql-clpi
. It can be configured
with the following options:
:url
The URL to the index.
For instance, to use the a mirror of the primary Quicklisp distribution, you use the following description:
("quicklisp"
:type :ql-clpi
:url "https://quicklisp.common-lisp-project-index.org/")
While QL-CLPI sources can be synced, it is currently a fairly slow affair due to how many objects the information is spread between. It is recommended that you just let CLPM fetch data on demand.