---== CEAN Packaging Guide ==---
To be included into CEAN, your project needs to follow some minimial requirements.
All requirements are listed bellow.
Accepted archive source are:
CVS
Subversion
archive .zip
archive .tar.gz
archive .tgz
archive .tar.bz2
archive .tbz2
file .erl
When using CVS or SVN, project tree must come with at least the following directories:
src/
ebin/
priv/{lib,bin}/ (if needed)
include/ (if needed)
When using archive file, this directory tree must be extracted as follow:
projectname-version/
src/
ebin/
priv/{lib,bin}/ (if needed)
include/ (if needed)
When using simple uniq .erl file, no directory tree is required, e.g.:
mycontrib.erl
Compilation must be done with (ordered preference)
- Emakefile
- configure
- Makefile
If none, then all .erl files from src are compiled into ebin.
In that case, the following flags are used: -I include and -I erlang/lib/*/include
After compilation, libraries are into priv/lib and binaries are into priv/bin.
Then, you must provide a .pub file which is describing your project.
example of .pub file: ejabberd
{author, {"Process-One", "contact@process-one.net", {2006,11,9}}}.
{packager, {"Christophe Romain", "christophe.romain@process-one.net"}}.
{category, ["server","messaging"]}.
{name, "ejabberd"}.
{vsn, "1.1.3"}.
{depends, ["asn1","crypto","kernel","mnesia","odbc","sasl","ssl","stdlib","tools"]}.
{keywords, ["jabber","xmpp","server","chat"]}.
{summary, "Erlang jabber/XMPP server"}.
{abstract, "ejabberd is a high-performance instant messaging server. "
"An instant messaging server allows to transfer presence and status information "
"between users connected to serverse and support real-time communications between them.
"
"ejabberd relies on XMPP (eXtensible Messaging and Presence Protocol) a largely-accepted XML "
"protocol standardized by the IETF (The Internet Engineering Task Force). "
"The protocol evolution is handled by the Jabber Software Foundation (JSF), "
"whose mission is to create the world's best protocols for instant messaging, presence, "
"and other forms of near-real-time communication based on XML."}.
{home, "http://www.process-one.net/en/ejabberd"}.
{sources, {svn, "http://svn.process-one.net/ejabberd/branches/ejabberd-1.1.3"}}.
supported syntaxe:
{author, {"Name", "EMail", {Year,Month,Day}}}.
{author, {"Name", "EMail"}}.
{packager, {"Name", "EMail"}}.
This is an optional field.
If packager field is not there, the author is declared as packager.
{category, ["Category"]}.
Category name must match one of the category listed on CEAN web site.
If you feel that a category is missing, you can set it into the .pub file, but please drop me a mail in that case.
You can also provide several category.
{name, "PackageName"}.
{vsn, "Version"}.
vsn can be a.b.c x.y string etc...
1.2a > 1.2
beta > alpha
alpha > 1.0
note: package directory will be PackageName-Version
{depends, ["Package1","Package2",...]}.
Dependency is a list of package name.
Package name can include version:
"stdlib" means requires stdlib any version
"=stdlib-1.14.2" means requires stdlib version 1.14.2
">stdlib-1.14.2" means requires stdlib version newer than 1.14.2
"can use HTML tags."}.
Detailed package description.
{home, "http://www.your-web-site.org"}.
{source, {svn, "http://svn.site.org/project/trunk"}}.
{source, {cvs, ":pserver:anonymous@cvs.site.org:/cvsroot/project"}}.
{source, {tar, "http://www.erlang.org/download/otp_src_R11B-2.tar.gz"}}.
{source, {zip, "http://www.site.org/package.zip"}}.
{source, {erl, "http://www.site.org/package.erl"}}.
Note: if archive name includes package version, you must check that it matchs the vsn field.
If your package does not include a LICENCE file on root directory, then the default LICENCE from
CEAN root directory is effective (ERLANG PUBLIC LICENSE).