Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tools:cpm [2017-02-01 13:29] – mh | tools:cpm [2018-08-30 17:27] – [Quick Start] mh | ||
---|---|---|---|
Line 4: | Line 4: | ||
The Curry Package Manager (CPM) is a tool to distribute and | The Curry Package Manager (CPM) is a tool to distribute and | ||
- | install Curry libraries and manage version dependencies | + | install Curry libraries |
- | between | + | between |
+ | These libraries | ||
+ | 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//, | ||
+ | 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. | ||
+ | |||
+ | ===== Available Packages ===== | ||
+ | |||
+ | There are more than [[http:// | ||
+ | (including more than 600 modules). | ||
+ | There is a [[http:// | ||
+ | with more detailed information (e.g., API documentation). | ||
+ | These packages can immediately be downloaded or installed when CPM is installed (see below). | ||
===== Installing the Curry Package Manager ===== | ===== Installing the Curry Package Manager ===== | ||
- | The installation | + | CPM is already part of recent distributions of the Curry systems |
- | in installed and the executables '' | + | [[http:// |
- | If '' | + | [[http:// |
- | of the variable | + | If you have some older version of PAKCS or KiCS2, you can also |
- | Otherwise, | + | install CPM from its public repository. |
+ | The installation | ||
+ | is installed and the executables '' | ||
+ | (if '' | ||
+ | of your Curry system by modifying | ||
+ | in the '' | ||
+ | Then perform the following steps to install CPM: | ||
- | 1> git clone https:// | + | 1> git clone https:// |
2> cd cpm | 2> cd cpm | ||
3> make | 3> make | ||
- | If this was successful, the binary '' | + | If this was successful, the binary '' |
- | directory '' | + | directory '' |
- | in your path or create a symbolic link from some path directory | + | of applications distributed as packages. For convenient |
- | to this binary. | + | directory '' |
+ | the binary | ||
+ | link from some path directory to this binary. | ||
===== Quick Start ===== | ===== Quick Start ===== | ||
Line 28: | Line 58: | ||
Now you can clone a copy of the central package index repository by | Now you can clone a copy of the central package index repository by | ||
- | > cpm update | + | > cypm update |
- | You can show a short list of all packages in this index by | + | Afterwards, you can show a short list of all packages in this index by |
- | > cpm list | + | > cypm list |
The command | The command | ||
- | > cpm info PACKAGE | + | > cypm info PACKAGE |
- | can be used to see more information about a package. | + | can be used to show more information about a package. |
In order to use a package in your Curry program which you intend | In order to use a package in your Curry program which you intend | ||
Line 45: | Line 75: | ||
Therefore, to initialize it and use other packages, you need | Therefore, to initialize it and use other packages, you need | ||
a package description file in some project directory. | a package description file in some project directory. | ||
- | All this can be created by the command '' | + | All this can be created by the command '' |
- | some questions: | + | |
- | > cpm new | + | > cypm new myproject |
- | 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 < | + | |
- | 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 ' | + | |
- | and run 'cpm install' | + | |
- | As you will see, an initial package description file '' | + | This command creates a new project directory '' |
- | and a subdirectory '' | + | containing |
- | for your project, | + | and a subdirectory '' |
+ | Change into the new project directory: | ||
+ | |||
+ | > cd myproject | ||
+ | |||
+ | If you need some other packages | ||
+ | add them as a dependency in '' | ||
Then run | Then run | ||
- | > cpm install | + | > cypm install |
to install all dependencies of the current package. | to install all dependencies of the current package. | ||
Afterwards, start your interactive Curry environment by | Afterwards, start your interactive Curry environment by | ||
- | > cpm curry | + | > cypm curry |
- | and you will be able to load the modules of the used packages. | + | and you will be able to load the modules of the current package |
+ | as well as all dependent | ||
In particular, the source directory '' | In particular, the source directory '' | ||
so that you can directly load any program you have stored | so that you can directly load any program you have stored | ||
in this directory. | in this directory. | ||
+ | For instance, if the module '' | ||
+ | directory '' | ||
+ | (e.g., KiCS2 or PAKCS) by | ||
+ | |||
+ | > cypm curry :load Main | ||
+ | |||
+ | ===== Manual and Further Documentation ===== | ||
+ | |||
+ | For further information, | ||
+ | |||
+ | A detailed description about CPM and its implementation can be found | ||
+ | in the following thesis: | ||
+ | |||
+ | [[https:// | ||
+ | ===== 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 tar or zip file to | ||
+ | |||
+ | packages (AT) curry-language.org | ||
+ | |||
+ | in order to make it publicly available. | ||
- | For further information, | ||