Much more information on these topics can be found at www.erlware.org


Building the tree
=================

To build, type make, it should all work from there. 

NOTE** if your system has erlang installed in a directory other than /usr/local/lib/erlang
then you must set the environment variable ERL_RUN_TOP to that directory. For example
if you have erlang installed in /home/jdoe/erlang then you should 
export ERL_RUN_TOP=/home/jdoe/erlang


Creating a new application
==========================

A new application can be created by using the appgen utility in otp/tools/utilities.
This utility will create a basic OTP app framework under the otp/lib directory and
an OTP release under the otp/release directory.  

usage: appgen <appname> <prefix> 

Appname is the name of the application that you would like to create.  The prefix is 
usually the first letter of each word in the appname.  This prefix is to avoid name
clashes between applications included in a release (Erlang does not have packages).

example usage: appgen my_app ma

which results in 

otp/lib/my_app & otp/release/my_app_rel

Running a release
=================

Your release should contain all that you need to run your application.  If your application
depends on any applications that are supplied outside of this build tree or OTP itself then
they may be added to the <appname>_rel.rel.src file.  If the extra applications are present
in this build tree then they will be found by the make process and included in the final 
release.

To run a release there are two options: "local" and installed. The local version can be found
in the otp/release/<appname>_rel/local directory which is added by the make process.  This 
should be used during development to run your release interactively via an Erlang shell.
To run a release in local mode cd into the "local" directory and run <appname>_rel.sh.

The second way to run a release is to install it and run it as a daemon.  This is used for 
applications in a production setting.  To do this you need to first run make & make install
from the <appname>_rel directory.  This will place a complete production ready versioned 
release in the /usr/local/lib/ directory under <appname>_rel.  To run an installed release
cd to /usr/local/lib/<appname>_rel/release/<rel_vsn> and run <appname>_rel.sh.  

In the case where you want to create a production ready release on one machine and then deploy it
on multiple identical machines you may create a production tar archive.  To do this run 
make & make tar from the otp/release/<appname>_rel/ directory. This will create a tar file conataining 
the release name and version number in the file name.  This tar can be shipped to its destination and 
untarred.  Within the untarred directory there is a shell script entitled install.sh.  Running this
script will install the release by default in /usr/local/lib/<appname>_rel.  An optional argument
can be provided that will direct the installation to a different directory.

Example install.sh /opt/lib 

This will install the release in /opt/lib/<appname>_rel
  

 

