Repository manager for Sagittarius Scheme.
Installing Pegasus requires Pegasus itself. So for the very first time,
you need to clone the GitHub repository into your convenient place. Then
run install.sh
(POSIX environment) or install.bat
(Windows environment).
The followings are the complete commands:
For POSIX environment:
$ git clone https://github.com/ktakashi/pegasus-library.git
$ cd pegasus-library
$ ./install.sh
For Windows environment:
> git clone https://github.com/ktakashi/pegasus-library.git
> cd pegasus-library
> .\install.bat
Only for POSIX:
If you want to install Pegasus not the default location (/usr/local
), then
you can specify --prefix
option to change. For more information, run
install.sh help
.
Pegasus manages packages on GitHub with meta files. Adding a meta file
to the GitHub repository requries Pull Request of the properly structured
meta file. The meta file must be located in the formula
directory of the
GitHub repository. So whenever you want to add a package, then the following
steps are required:
- Clone/synchronise the repository
- Add your meta file into
formula
directory - Test the meta file works
- Send Pull Request.
Testing can be done by -u
or -i
option of pegasus
command. The following
command shows how to do it:
$ pegasus install foo -i formula/your-package.scm
or if you already pushed to your repository, then
$ pegasus install foo -u https://server/your/formula.scm
A meta file must contain one S-expression which provides the information of target package. The structure off the S-expression must be the following:
where meta-info must be the followings:
description must be a string. Describes the package.
version must be a string. The version of the package.
Currently there is no sophisticated comparison/management between different versions. So if you want to install 2 different versions, then users need to choose either overwrite the one installed or quit installing.
verion must be a string and the same format as (sagittarius-version)
returns. e.g.) 0.6.7
Checks if the target Sagittarius version is in between versions. This is useful to detect if the target package is provided by the certain version of Sagittarius or not.
:minimum
and :maximum
can be omit. If it's not presented, then it means
no limit.
url must be a string. Web URL of the project page.
name and email must be strings.
type must be either tar
or zip
symbol.
url must be a url. Its scheme must be one of the followings:
- http
- https
- file
If the type is tar
and it's compressed, then compression is required.
Currently it only supports gzip
.
This specifies the package archive file to install.
If the file
scheme is used, then the package archive must be located
either, .pegasus/work
or current directory.
dir-spec must be a list whose first element is a installing directory name.
file must be a string which is a installing file name.
Specifies which file or directory to install.
If dir-spec contains :exclude
keyword followed by a list of filename
which must be a string, then the specified files located in the directory
are ignored.
file must be a string and indicates a test file.
style must be a symbol of either srfi-64
or srfi-78
. This is a style
of which testing framework is used.
path must be a string. This is added to load path when the test is executed.
Specifies tests. If the one of the test fails, then Pegasus either asks users to install or not, or abort installation.
NOTE: both testing frameworks may have custom reporting style, however Pegasus can't handle them. So make sure if you don't change reporting style.