---== 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:
svn
git
cvs
file .erl
archive .zip .tar.gz .tgz .tar.bz2 .tbz2
When using GIT, SVN or CVS, 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)
- rebar
- Emakefile
- configure/autoconf
- 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"]}.
{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"}.
{url, "http://svn.process-one.net/ejabberd/trunk"}.
{configure, "--enable-odbc"}.
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"}.
{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"}.
{url, "git://www.site.org/project.git"}.
{url, "http://www.erlang.org/download/otp_src_R11B-2.tar.gz"}.
{url, "http://www.site.org/package.zip"}.
{url, "http://www.site.org/package.erl"}.
{configure, "arguments"}.
This is an optional field.
Arguments given to configure script at compile time.
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).
--------
-------- .pub template
{author, {"", ""}}.
{packager, {"", ""}}.
{category, []}.
{depends, []}.
{keywords, []}.
{summary, ""}.
{abstract, ""}.
{home, "http://"}.
{url, ""}.