Software personalities are the descriptions of the way to deploy software.


As an example, here is the Java Personaliy:

/**
 * Java Runtime Environment software.
 */

JAVA.JRE
= software.Installable(java,JRE),
  software.Iconable(java,JAVA/JRE.png)
{
  # Sub components used to configure the JRE software.

  # archive is required.
  archive = JAVA.ARCHIVE(UNDEFINED);

  # home is required.
  home = JAVA.HOME(UNDEFINED);

  # Implementation of the JRE software.

  java {

    internal-deployment {

      # The 'start' procedure.
      start {
        set-java_home = SHELL.SetVariable(JAVA_HOME,#[home]);
        add-path = SHELL.AddPath(%JAVA_HOME%/bin);
      }

      # The 'stop' procedure.
      stop {
        unset-java_home = SHELL.UnsetVariable(JAVA_HOME);

        /* TODO: following must be done!
          unset-path = SHELL.UnsetVariable(PATH);
         */
      }
    }
  }
}