Session Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation Guidelines (Guy)

lpml.dtd

<!--

       Linux Packaging Markup Language version 1.0.

       Date: May 3, 2001

       Author: Scott Harrison

       Linux Packaging Markup Language aims to capture

       a source code development tree and effectively map

       that to a compilation and installation process for

       generating software packages and updating a run-time

       system.  This language helps handle dependency information,

       file globbing, file permissions, file ownerships,

       different targets for different linux distributions,

       preservation of configuration information, directory

       permissions, directory ownerships, compilation commands,

       and, ultimately, system software status reports.

-->

<!--

Copyright Michigan State University Board of Trustees

This file is part of the LearningOnline Network with CAPA (LON-CAPA).

LON-CAPA is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

LON-CAPA is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with LON-CAPA; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

/home/httpd/html/adm/gpl.txt

http://www.lon-capa.org/

-->

<!ENTITY % lpml.Version

        "-//TUX//DTD lpml 1.0 Final//EN"

        >

<!-- Typical usage: -->

<!-- <!DOCTYPE lpml PUBLIC "-//TUX/DTD LPML 1.0 Final//EN"

      "http://lpml.sourceforge.net/DTD/lpml.dtd"> -->

<!-- <lpml> -->

<!-- ... -->

<!-- </lpml> -->

<!ELEMENT categoryname (#PCDATA)>

<!ELEMENT targetroot (#PCDATA)>

<!ELEMENT sourceroot (#PCDATA)>

<!ELEMENT target (#PCDATA)>

<!ATTLIST target

    dist CDATA #REQUIRED

    >

<!ELEMENT source (#PCDATA)>

<!ELEMENT targetdir (#PCDATA)>

<!ATTLIST targetdir

    dist CDATA #REQUIRED

    >

<!ELEMENT sourcedir (#PCDATA)>

<!ELEMENT glob (#PCDATA)>

<!ELEMENT build (#PCDATA)>

<!ELEMENT buildlink (#PCDATA)>

<!--

The trigger attribute of the build element is meant

to only have one of two possible values:

  "always run", or

  "run if dependencies change"

Note that you must type this text exactly in for the

attribute value to be understood and processed correctly

by the lpml "make build" parser.

-->

<!ELEMENT lpml

 (targetroot|sourceroot|specialnotices|files|categories|directories|rpm)+>

<!ATTLIST build

   trigger CDATA #REQUIRED

>

<!ELEMENT specialnotices (specialnotice)+>

<!ELEMENT categories (category)+>

<!ELEMENT directories (directory)+>

<!ELEMENT files (file|fileglob|link)+>

<!ELEMENT dependencies (#PCDATA)>

<!ELEMENT note (#PCDATA|table|b|br)*>

<!ELEMENT b (#PCDATA)>

<!ELEMENT specialnotice (#PCDATA)>

<!ATTLIST specialnotice

    dist CDATA #REQUIRED

    >

<!ELEMENT category (chmod,chown,abbreviation)>

<!ATTLIST category

    type CDATA #REQUIRED

    name CDATA #REQUIRED

    >

<!ELEMENT chown (#PCDATA)>

<!ATTLIST chown

    dist CDATA #REQUIRED

    >

<!ELEMENT chmod (#PCDATA)>

<!ATTLIST chmod

    dist CDATA #REQUIRED

    >

<!ELEMENT abbreviation (#PCDATA)>

<!ELEMENT br EMPTY>

<!ELEMENT nobr EMPTY>

<!ELEMENT table (#PCDATA|tr)*>

<!ATTLIST table

    cellpadding CDATA #IMPLIED

    cellspacing CDATA #IMPLIED

    border CDATA #IMPLIED

    >

<!ELEMENT tr (#PCDATA|td)*>

<!ELEMENT td (#PCDATA|br|ul|tt|nobr)*>

<!ELEMENT description (#PCDATA|br|tt|u)*>

<!ELEMENT ul (#PCDATA|li)*>

<!ELEMENT li (#PCDATA)>

<!ELEMENT tt (#PCDATA)>

<!ELEMENT u (#PCDATA)>

<!ELEMENT status (#PCDATA)>

<!ELEMENT linkto (#PCDATA)>

<!ELEMENT directory (targetdir+,categoryname,description?)>

<!ATTLIST directory

    dist CDATA #REQUIRED

    >

<!ELEMENT file (source,target+,categoryname,description?,buildlink?,

                note?,build?,status?,dependencies?)>

<!ELEMENT link (linkto,target,categoryname,description?,

                note?,build?,status?,dependencies?)>

<!ELEMENT fileglob (glob,sourcedir,targetdir,categoryname,

                    description?,note?,build?,buildlink?,status?,dependencies?,filenames?)>

<!ELEMENT filenames (#PCDATA)>

<!ELEMENT rpm (rpmSummary,rpmName,rpmVersion,rpmRelease,rpmVendor,

               rpmBuildRoot,rpmCopyright,rpmGroup,rpmSource,rpmAutoReqProv,

               rpmdescription,rpmpre,rpmRequires)>

<!ELEMENT rpmSummary (#PCDATA)>

<!ELEMENT rpmName (#PCDATA)>

<!ELEMENT rpmVersion (#PCDATA)>

<!ELEMENT rpmRelease (#PCDATA)>

<!ELEMENT rpmVendor (#PCDATA)>

<!ELEMENT rpmBuildRoot (#PCDATA)>

<!ELEMENT rpmCopyright (#PCDATA)>

<!ELEMENT rpmGroup (#PCDATA)>

<!ELEMENT rpmSource (#PCDATA)>

<!ELEMENT rpmAutoReqProv (#PCDATA)>

<!ELEMENT rpmdescription (#PCDATA)>

<!ELEMENT rpmpre (#PCDATA)>

<!ELEMENT rpmRequires (item)+>

<!ELEMENT item (#PCDATA)>

piml.dtd

<!--

       Post Installation Markup Language version 1.0.

       Date: January 24, 2002

       Author: Scott Harrison

       Post Installation Markup Language works to perform

       'intelligent' modifications of existing files on

       a software system.  This allows for the reconfiguring

       of existing configuration files without having the

       overlap of files between software packages.  PIML

       also allows you to have file permission/ownership

       specifications different than that specified by the

       original software package.

       For instance, Apache web server configuration files

       are a popular target for many different software applications.

       A preferred approach is to simply append an 'Include ...'

       line to the Apache web server configuration files.

       Post Installation Markup Language is meant to be

       a natural wrapper to target installations generated

       by LPML (Linux Packaging Markup Language).

       Usages of Post Installation Markup Language are:

       * immediately after installation with LPML

       * generating '%post' syntax for RPMs

       * generating post-installation syntax for Debian packages.

       Dependency checking is supported as a poor man's probing....

       There is no point in reconfiguring a file that isn't installed,

       or is missing a system component for successful operation.

       Another neat use of PIML is to allow for invocation of various

       processes after installation.

-->

<!--

Copyright Michigan State University Board of Trustees

This file is part of the LearningOnline Network with CAPA (LON-CAPA).

LON-CAPA is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

LON-CAPA is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with LON-CAPA; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

/home/httpd/html/adm/gpl.txt

http://www.lon-capa.org/

-->

<!ENTITY % piml.Version

        "-//TUX//DTD piml 1.0 Final//EN">

<!-- Typical usage:

            <!DOCTYPE piml PUBLIC "-//TUX//DTD PIML 1.0 Final//EN"

           "http://lpml.sourceforge.net/DTD/piml.dtd">

            <piml>

            </piml>

 -->

<!ELEMENT categoryname (#PCDATA)>

<!ELEMENT targetroot (#PCDATA)>

<!ELEMENT target (#PCDATA)>

<!ATTLIST target

    dist CDATA #REQUIRED

    >

<!ELEMENT piml (targetroot|specialnotices|files|categories)+>

<!ELEMENT specialnotices (specialnotice)+>

<!ELEMENT categories (category)+>

<!ELEMENT files (file)+>

<!ELEMENT dependencies (#PCDATA)>

<!ATTLIST dependencies

    dist CDATA #REQUIRED

    >

<!ELEMENT note (#PCDATA)>

<!ELEMENT specialnotice (#PCDATA)>

<!ELEMENT category (chmod,chown,abbreviation)>

<!ATTLIST category

    type CDATA #REQUIRED

    name CDATA #REQUIRED

    >

<!ELEMENT chown (#PCDATA)>

<!ATTLIST chown

    dist CDATA #REQUIRED

    >

<!ELEMENT chmod (#PCDATA)>

<!ATTLIST chmod

    dist CDATA #REQUIRED

    >

<!ELEMENT abbreviation (#PCDATA)>

<!ELEMENT file (target,categoryname?,

                note?,status?,dependencies?,perlscript)>

<!ELEMENT TARGET EMPTY>

<!ELEMENT perlscript (#PCDATA|TARGET)*>

<!ATTLIST perlscript

    mode CDATA #REQUIRED

    >

xfml.dtd

<!--

       XML Filter Markup Language version 1.0.

       Date: January 27, 2002

       Author: Scott Harrison

       XML Filter Markup Language works to extract those sections

       of an XML document matching certain conditions.  This, in some

       respects, relies on functionality similar to that expected

       with XSL-type files.  (I do not use standard XSL syntax because

       I am not convinced that it would be simple and elegant for

       this particular task).

       This is anticipated to be a very important feature associated

       with a larger Makefile-ish type approach involving the XML dtds:

       LPML and PIML.

       LPML (Linux Packaging Markup Language) can work to install files

       on a single computer or a distributed network of computers with

       pre-configured ssh accessibility (.ssh/authorized_keys, etc).

       PIML (Post Installation Markup Language) works to coordinate the

       last little scripts that need to be run after an installation.

       With all this make-"power", wouldn't it be nice to only pass through

       portions of an LPML specification?

-->

<!--

Copyright Michigan State University Board of Trustees

This file is part of the LearningOnline Network with CAPA (LON-CAPA).

LON-CAPA is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

LON-CAPA is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with LON-CAPA; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

/home/httpd/html/adm/gpl.txt

http://www.lon-capa.org/

-->

<!-- Note: current status is that choice:include is currently unsupported and

     all matching statements REQUIRE two levels of 'when' statements;

     not one or more than two...  okay.. this will be fixed soon -->

<!ENTITY % xfml.Version

        "-//TUX//DTD piml 1.0 Final//EN">

<!-- Typical usage:

            <!DOCTYPE xfml PUBLIC "-//TUX//DTD PIML 1.0 Final//EN">

            <xfml>

            </xfml>

-->

<!ELEMENT choice:include (#PCDATA)>

<!ELEMENT choice:exclude (#PCDATA)>

<!ELEMENT xfml (clause)+>

<!ELEMENT clause (when:cdata|when:name|when:attribute|choice:exclude)+>

<!ELEMENT when:name

 (when:cdata|when:name|when:attribute|choice:include|choice:exclude)+>

<!ELEMENT when:attribute

  (when:cdata|when:name|when:attribute|choice:include|

  choice:exclude)+>

<!ELEMENT when:cdata

  (when:cdata|when:name|when:attribute|choice:include|

  choice:exclude)+>

<!ATTLIST when:name

    match CDATA #REQUIRED>

<!ATTLIST when:attribute

    match CDATA #REQUIRED>

<!ATTLIST when:cdata

    match CDATA #REQUIRED>

<!ATTLIST choice:include

    nodename CDATA #REQUIRED>

<!ATTLIST choice:exclude

    nodename CDATA #REQUIRED>