# Perl Package Distribution

Mon Oct 6 09:45:03 2003

# Prolog

## Name

SOFTPKG — —

## Synopsis

Name | System |
SOFTPKG | ppd.dtd |

## Description

The DTD for PPD documents is available from the ActiveState website and the latest version can be found at http://www.ActiveState.com/PPM/DTD/ppd.dtd

# Elements

# Element tree

- `SOFTPKG`

  - `IMPLEMENTATION`

    - `INSTALL`

    - `CODEBASE`

    - `OSVERSION`

    - `LANGUAGE`

    - `UNINSTALL`

    - `DEPENDENCY`

    - `OS`

    - `PROCESSOR`

    - `PERLCORE`

  - `LICENSE`

  - `ABSTRACT`

  - `TITLE`

  - `AUTHOR`

## Name

ABSTRACT — —

## Synopsis

Mixed Content Model
    ABSTRACT ::=
    ( #PCDATA )
Attributes
None

## Description

Used to provide a short description outlining the nature and purpose of the Perl Package. Only one instance should be present.

## Parents

These elements contain ABSTRACT: `SOFTPKG`.

## Name

AUTHOR — —

## Synopsis

Mixed Content Model
    AUTHOR ::=
    ( #PCDATA )
Attributes
None

## Description

Used to provide information about the author(s) of the Perl Package. Multiple instances are valid.

## Parents

These elements contain AUTHOR: `SOFTPKG`.

## Name

CODEBASE — —

## Synopsis

Content Model
    CODEBASE ::=
    EMPTY
Attributes
Name | Type | Default
FILENAME | CDATA | #IMPLIED
HREF | CDATA | #REQUIRED

## Description

Indicating a location where an archive of the Perl Package can be retrieved. Multiple instances are valid, and can be used to indicate multiple possible locations where the same version of the Perl Package can be retrieved.

### FILENAME

???

### HREF

A reference to the location of the Perl Package distribution.

## Parents

These elements contain CODEBASE: `IMPLEMENTATION`.

## Name

DEPENDENCY — —

## Synopsis

Content Model
    DEPENDENCY ::=
    EMPTY
Attributes
Name | Type | Default
VERSION | CDATA | #IMPLIED
NAME | CDATA | #REQUIRED

## Description

Used to indicate a dependency this Perl Package has on another Perl Package. Multiple instances are valid.

### VERSION

Version number of the dependency, in comma-delimited format (e.g. ``1,0,0,0'').

### NAME

Name of the package that this implementation is dependant upon.

## Parents

These elements contain DEPENDENCY: `IMPLEMENTATION`.

## Name

IMPLEMENTATION — — describe a particular implementation of the Perl Package

## Synopsis

Element Content Model
    IMPLEMENTATION ::=
    ( CODEBASE | DEPENDENCY | LANGUAGE | OS | OSVERSION | PERLCORE |
      PROCESSOR | INSTALL | UNINSTALL )*
Attributes
None

## Description

Used to describe a particular implementation of the Perl Package. Multiple instances are valid, and should be used to describe different implementations/ports for different operating systems or architectures.

## Parents

These elements contain IMPLEMENTATION: `SOFTPKG`.

## Children

The following elements occur in IMPLEMENTATION: `CODEBASE`, `DEPENDENCY`, `INSTALL`, `LANGUAGE`, `OS`, `OSVERSION`, `PERLCORE`, `PROCESSOR`, `UNINSTALL`.

## Name

INSTALL — — provide either a reference to an installation script

## Synopsis

Mixed Content Model
    INSTALL ::=
    ( #PCDATA )
Attributes
Name | Type | Default
HREF | CDATA | #IMPLIED
EXEC | CDATA | #IMPLIED

## Description

Used to provide either a reference to an installation script or a series of commands which can be used to install the Perl Package once it has been retrieved. If the EXEC attribute is not specified, the value is assumed to be one or more commands, separated by `;;'. Each such command will be executed by the Perl `system()'function. Only one instance should be present.

### HREF

Reference to an external script which should be retrieved and run as part of the installation process. Both filenames and URLs should be considered valid.

### EXEC

Name of interpreter/shell used to execute the installation script. If the value of EXEC is `PPM_PERL', the copy of Perl that is executing PPM itself ($^X) is used to execute the install script.

## Parents

These elements contain INSTALL: `IMPLEMENTATION`.

## Name

LANGUAGE — —

## Synopsis

Content Model
    LANGUAGE ::=
    EMPTY
Attributes
Name | Type | Default
VALUE | CDATA | #REQUIRED

## Description

Used to specify the language used within the given implementation of the Perl Package. Only one instance should be present.

### VALUE

## Parents

These elements contain LANGUAGE: `IMPLEMENTATION`.

## Name

LICENSE — —

## Synopsis

Content Model
    LICENSE ::=
    EMPTY
Attributes
Name | Type | Default
HREF | CDATA | #REQUIRED

## Description

Indicating the location of the appropriate license agreement or copyright notice for the Perl Package. Only one instance should be present.

### HREF

Required attribute. A reference to the location of the license agreement or copyright notice for this package.

## Parents

These elements contain LICENSE: `SOFTPKG`.

## Name

OS — — the operating system required for this implementation

## Synopsis

Content Model
    OS ::=
    EMPTY
Attributes
Name | Type | Default
VALUE | CDATA | #REQUIRED

## Description

Used to outline the operating system required for this implementation of the Perl Package. Multiple instances are valid. Valid values can be taken from the OSD Specification and it's OS element.

### VALUE

The name of the operating system required for this implementation of the Perl Package. This value should be obtained from Config.pm as 'osname'.

## Parents

These elements contain OS: `IMPLEMENTATION`.

## Name

OSVERSION — — the required version of the operating system

## Synopsis

Content Model
    OSVERSION ::=
    EMPTY
Attributes
Name | Type | Default
VALUE | CDATA | #REQUIRED

## Description

Used to outline the required version of the operating system required for this implementation of the Perl Package. Only one instance should be present.

### VALUE

The version of the operating system required for installation of this implementation of the package, in a comma-delimited format (e.g. ``3,1,0,0'').

## Parents

These elements contain OSVERSION: `IMPLEMENTATION`.

## Name

PERLCORE — — the minimum version of the Perl core distribution

## Synopsis

Content Model
    PERLCORE ::=
    EMPTY
Attributes
Name | Type | Default
VERSION | CDATA | #REQUIRED

## Description

Used to specify the minimum version of the Perl core distribution that this Perl Package is to be used with. Only one instance should be present.

### VERSION

Version of the Perl core that is required for this implementation of the Perl Package.

## Parents

These elements contain PERLCORE: `IMPLEMENTATION`.

## Name

PROCESSOR — —

## Synopsis

Content Model
    PROCESSOR ::=
    EMPTY
Attributes
Name | Type | Default
VALUE | CDATA | #REQUIRED

## Description

Outlining the cpu required for this implementation of the Perl Package. Only one instance should be present.

### VALUE

CPU required for the installation of this implementation of the Perl Package. The following values are all valid according to the OSD Specification: x86 alpha mips sparc 680x0

## Parents

These elements contain PROCESSOR: `IMPLEMENTATION`.

## Name

SOFTPKG — — root element of a description of a software package

## Synopsis

Element Content Model
    SOFTPKG ::=
    ( ABSTRACT | AUTHOR | IMPLEMENTATION | LICENSE | TITLE )*
Attributes
Name | Type | Default
NAME | CDATA | #REQUIRED
VERSION | CDATA | #IMPLIED

## Description

It's the root element of a description of a software package, in Perl Package Distribution (PPD) format which is an XML application.

HISTORY : v0.1 - Initial release

SEE ALSO : OSD Specification http://www.microsoft.com/standards/osd/

### NAME

Name of the package (e.g. ``Foobar'').

### VERSION

Version number of the package, in comma-delimited format (e.g. ``1,0,0,0'').

## Children

The following elements occur in SOFTPKG: `ABSTRACT`, `AUTHOR`, `IMPLEMENTATION`, `LICENSE`, `TITLE`.

## Name

TITLE — — state the title of the Perl Package

## Synopsis

Mixed Content Model
    TITLE ::=
    ( #PCDATA )
Attributes
None

## Description

Used to state the title of the Perl Package. Only one instance should be present.

## Parents

These elements contain TITLE: `SOFTPKG`.

## Name

UNINSTALL — — provide either a reference to an uninstallation script

## Synopsis

Mixed Content Model
    UNINSTALL ::=
    ( #PCDATA )
Attributes
Name | Type | Default
HREF | CDATA | #IMPLIED
EXEC | CDATA | #IMPLIED

## Description

Used to provide either a reference to an uninstallation script or a raw Perl script which can be used to uninstall the Perl Package at a later point. Only one instance should be present.

### HREF

Reference to an external script which should be retrieved and run as part of the removal process. Both filenames and URLs should be considered valid.

### EXEC

Name of interpreter/shell used to execute the uninstallation script. If the value of EXEC is `PPM_PERL', the copy of Perl that is executing PPM itself ($^X) is used to execute the install script.

## Parents

These elements contain UNINSTALL: `IMPLEMENTATION`.

# Examples

## Name

Example sample.ppd —

## Example sample.ppd

    <?xml version="1.0"?>
    <!DOCTYPE SOFTPKG SYSTEM "ppd.dtd">
    <!-- The following is a sample PPD file describing the Math-MatrixBool module.
         Note that this may not be a current/proper description of this module
         and is for sample purposes only.
    -->
     <SOFTPKG NAME="Math-MatrixBool" VERSION="4,2,0,0">
         <TITLE>Math-MatrixBool</TITLE>
         <ABSTRACT>Easy manipulation of matrices of booleans (Boolean Algebra)</ABSTRACT>
         <AUTHOR>Steffen Beyer (sb@sdm.de)</AUTHOR>
         <LICENSE HREF="http://www.ActiveState.com/packages/Math-MatrixBool/license.html" />
         <IMPLEMENTATION>
             <OS VALUE="WinNT" />
             <OS VALUE="Win95" />
             <PROCESSOR VALUE="x86" />
             <CODEBASE HREF="http://www.ActiveState.com/packages/Math-MatrixBool/Math-MatrixBool-4.2-bin-1-Win32.tar.gz" />
             <DEPENDENCY NAME="Bit-Vector" />
             <INSTALL>
             </INSTALL>
             <UNINSTALL>
             </UNINSTALL>
         </IMPLEMENTATION>

         <IMPLEMENTATION>
             <DEPENDENCY NAME="Bit-Vector" />
             <CODEBASE HREF="&amp;CPAN;/CPAN/modules/by-module/Math/Math-MatrixBool-4.2.tar.gz" />
             <INSTALL>
                 system("make"); ;;
                 system("make test"); ;;
                 system("make install"); ;;
             </INSTALL>
         </IMPLEMENTATION>
     </SOFTPKG>