This is an old revision of the document!
Table of Contents
CPM: The Curry Package Manager
Overview
The Curry Package Manager (CPM) is a tool to distribute and install Curry libraries and manage version dependencies between these libraries. These libraries are organized in packages. There is a central index of all these packages which can easily be downloaded by CPM. The individual packages are currently not stored in a central server but their source can be anywhere. CPM organizes the automatic access to appropriate versions of these packages so that a user does not need to know about these details.
CPM also supports semantic versioning, i.e., it is able to check whether a new minor version of a package is consistent (w.r.t. its API and behavior) with a previous version of the same package.
Installing the Curry Package Manager
The installation assumes that one of the Curry systems PAKCS or KiCS2
in installed and the executables curry
and git
are in your path.
If curry
is not in your path, you must adapt the definition
of the variable CURRY
in the Makefile
before step 3.
Otherwise, perform the following steps to install CPM:
1> git clone https://git.ps.informatik.uni-kiel.de/curry/cpm.git 2> cd cpm 3> make
If this was successful, the binary cpm
has been generated in the
directory bin
. For conventient use, put this binary somewhere
in your path or create a symbolic link from some path directory
to this binary.
Quick Start
Now you can clone a copy of the central package index repository by
> cpm update
You can show a short list of all packages in this index by
> cpm list
The command
> cpm info PACKAGE
can be used to see more information about a package.
In order to use a package in your Curry program which you intend
to develop, you have to start a new project.
Note that your project can also contribute to the Curry packages.
Therefore, to initialize it and use other packages, you need
a package description file in some project directory.
All this can be created by the command cpm new
and answering
some questions:
> cpm new Create a new package -------------------- What is the name of the new package? myproject What is the first version of the package? [0.0.1] Who is the author of the package? Joe Curry <joe@curry.com> Please provide a short (one line) summary of what the package does: > This is just for testing. A new package in the directory 'myproject' has been created. Please go into this directory, add dependencies in 'package.json', and run 'cpm install' to install all dependencies.
As you will see, an initial package description file package.json
and a subdirectory src
has been created. If you need some package
for your project, write it as a dependency in package.json
.
Then run
> cpm install
to install all dependencies of the current package. Afterwards, start your interactive Curry environment by
> cpm curry
and you will be able to load the modules of the current package
as well as all dependent packages.
In particular, the source directory src
is added to your path
so that you can directly load any program you have stored
in this directory.
Manual
For further information, look into the manual of CPM.
Uploading and Publishing Packages
Currently, there is no support for automatically uploading
and publishing new packages.
However, if you have developed some package that might be of
interest to other Curry users, please send the package
as a zip file, or just the package description file
package.json
(if the package is already in a publicly
available git archive) to
packages (AT) curry-language.org
in order to make it publicly available.