\input texinfo   @c -*-texinfo-*-
@setfilename sw.info

@comment ===============================================================
@comment WARNING: Do NOT edit this file.  It was produced automatically
@comment by man2info on Sun Jul 27 20:44:50 EDT 2014
@comment for jhl@
@comment from man/man5/sw.5
@comment in /home/jhl/swbis-1.12x/doc
@comment ===============================================================

@comment @documentencoding ISO-8859-1

@comment troff -man typesetting style: headers, footers, no paragraph indentation

@paragraphindent none

@iftex
@parskip = 0.5@normalbaselineskip plus 3pt minus 1pt
@end iftex

@set lq ``
@set rq ''

@comment TROFF INPUT: ...\" $Header: /usr/src/docbook-to-man/cmd/RCS/docbook-to-man.sh,v 1.3 1996/06/17 03:36:49 fld Exp $
@comment ...\" $Header: /usr/src/docbook-to-man/cmd/RCS/docbook-to-man.sh,v 1.3 1996/06/17 03:36:49 fld Exp $
@comment TROFF INPUT: ...\"
@comment ...\"
@comment TROFF INPUT: ...\"	transcript compatibility for postscript use.
@comment ...\"	transcript compatibility for postscript use.
@comment TROFF INPUT: ...\"
@comment ...\"
@comment TROFF INPUT: ...\"	synopsis:  .P! <file.ps>
@comment ...\"	synopsis:  .P! <file.ps>
@comment TROFF INPUT: ...\"
@comment ...\"
@comment TROFF INPUT: .de P!
@comment .de P!
\.
@comment TROFF INPUT: .fl			\" force out current output buffer
@comment .fl			\" force out current output buffer
\\!%PB
\\!/showpage@{@}def
@comment TROFF INPUT: ...\" the following is from Ken Flowers -- it prevents dictionary overflows
@comment ...\" the following is from Ken Flowers -- it prevents dictionary overflows
\\!/tempdict 200 dict def tempdict begin
@comment TROFF INPUT: .fl			\" prolog
@comment .fl			\" prolog
@comment TROFF INPUT: .sy cat \\$1\" bring in postscript file
@comment .sy cat \\$1\" bring in postscript file
@comment TROFF INPUT: ...\" the following line matches the tempdict above
@comment ...\" the following line matches the tempdict above
\\!end % tempdict %
\\!PE
\\!.
@comment TROFF INPUT: .sp \\$2u	\" move below the image
@comment .sp \\$2u	\" move below the image
@comment TROFF INPUT: ..
@comment ..
@comment TROFF INPUT: .de pF
@comment .de pF
@comment TROFF INPUT: .ie     \\*(f1 .ds f1 \\n(.f
@comment .ie     \\*(f1 .ds f1 \\n(.f
@comment TROFF INPUT: .el .ie \\*(f2 .ds f2 \\n(.f
@comment .el .ie \\*(f2 .ds f2 \\n(.f
@comment TROFF INPUT: .el .ie \\*(f3 .ds f3 \\n(.f
@comment .el .ie \\*(f3 .ds f3 \\n(.f
@comment TROFF INPUT: .el .ie \\*(f4 .ds f4 \\n(.f
@comment .el .ie \\*(f4 .ds f4 \\n(.f
@comment TROFF INPUT: .el .tm ? font overflow
@comment .el .tm ? font overflow
@comment TROFF INPUT: .ft \\$1
@comment .ft \\$1
@comment TROFF INPUT: ..
@comment ..
@comment TROFF INPUT: .de fP
@comment .de fP
@comment TROFF INPUT: .ie     !\\*(f4 \{\
@comment .ie     !\\*(f4 \@{\
@comment TROFF INPUT: .	ft \\*(f4
@comment .	ft \\*(f4
@comment TROFF INPUT: .	ds f4\"
@comment .	ds f4\"
'	br \@}
@comment TROFF INPUT: .el .ie !\\*(f3 \{\
@comment .el .ie !\\*(f3 \@{\
@comment TROFF INPUT: .	ft \\*(f3
@comment .	ft \\*(f3
@comment TROFF INPUT: .	ds f3\"
@comment .	ds f3\"
'	br \@}
@comment TROFF INPUT: .el .ie !\\*(f2 \{\
@comment .el .ie !\\*(f2 \@{\
@comment TROFF INPUT: .	ft \\*(f2
@comment .	ft \\*(f2
@comment TROFF INPUT: .	ds f2\"
@comment .	ds f2\"
'	br \@}
@comment TROFF INPUT: .el .ie !\\*(f1 \{\
@comment .el .ie !\\*(f1 \@{\
@comment TROFF INPUT: .	ft \\*(f1
@comment .	ft \\*(f1
@comment TROFF INPUT: .	ds f1\"
@comment .	ds f1\"
'	br \@}
@comment TROFF INPUT: .el .tm ? font underflow
@comment .el .tm ? font underflow
@comment TROFF INPUT: ..
@comment ..
@comment TROFF INPUT: .ds f1\"

@comment WARNING: man/man5/sw.5:49:%%unrecognized define-string command: [.ds f1\"]

@comment TROFF INPUT: .ds f2\"

@comment WARNING: man/man5/sw.5:50:%%unrecognized define-string command: [.ds f2\"]

@comment TROFF INPUT: .ds f3\"

@comment WARNING: man/man5/sw.5:51:%%unrecognized define-string command: [.ds f3\"]

@comment TROFF INPUT: .ds f4\"

@comment WARNING: man/man5/sw.5:52:%%unrecognized define-string command: [.ds f4\"]

@comment TROFF INPUT: .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
@comment .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
@comment TROFF INPUT: .TH "sw" "5"

@headings off
@everyheading SW(5) @| @| SW(5)
@everyfooting  @| @thispage @|

@node Top

@chapter sw" "5


@comment TROFF INPUT: .hy 0
@comment .hy 0
@comment TROFF INPUT: .if n .na
@comment .if n .na
@comment TROFF INPUT: .SH "NAME"
@c DEBUG: print_menu("Top")

@ifnottex
@menu
* NAME::
* SYNOPSIS::
* SOFTWARE PACKAGING LAYOUT::
* SOFTWARE DEFINITIONS::
* SOFTWARE SELECTIONS::
* DEPENDENCY SPECS::
* EXTENDED DEFINITIONS::
* DISTRIBUTOR KEYWORDS::
* PACKAGE SECURITY::
* SOFTWARE DEFINITION FILES::
* EXAMPLE PACKAGE::
* SWBIS PSF CONVENTIONS::
* APPLICABLE STANDARDS::
* SEE ALSO::
* IDENTIFICATION::
* BUGS::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node NAME

@section NAME

sw @r{---} POSIX Software Packaging
@comment TROFF INPUT: .SH "SYNOPSIS"
@c DEBUG: print_menu("NAME")
@comment MAN2TEXI: EON

@node SYNOPSIS

@section SYNOPSIS

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
Software Packaging Layout
Software Definitions
Software Selections
Extended Definitions
Distributor Keywords
Package Security
Software Definition Files: INFO, INDEX, PSF
Example Package
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .SH "SOFTWARE PACKAGING LAYOUT"
@c DEBUG: print_menu("SYNOPSIS")
@comment MAN2TEXI: EON

@node SOFTWARE PACKAGING LAYOUT

@section SOFTWARE PACKAGING LAYOUT

@comment TROFF INPUT: .PP

A package may exist in two forms: as a directory in a file system, or a serial access tar or cpio archive file.
A package consists of two main sections: 1) the @i{exported catalog structure},
and, 2) the @i{software file storage structure}.
Each section may contain path name components which serve to segregate distribution, product and fileset objects.
@comment TROFF INPUT: .PP

Shown below is an example with one (1) product and one (1) fileset.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
 <@i{path}>/
 <@i{path}>/@b{catalog}/
 <@i{path}>/@b{catalog}/@b{INDEX}
 <@i{path}>/@b{catalog}/<@i{dfiles}>
 <@i{path}>/@b{catalog}/<@i{dfiles}>/...
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{pfiles}>/@b{INFO}
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{pfiles}>/...
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/@b{INFO}
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/...
 <@i{path}>/@b{catalog}/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/<@i{script}>
 <@i{path}>/<@i{prod@t{_}dir}>/
 <@i{path}>/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/
 <@i{path}>/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/<@i{distribution@t{_}files}>
 <@i{path}>/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/<@i{distribution@t{_}files}>/...@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

The exported catalog structure consists of the files with pathnames

@comment WARNING: man/man5/sw.5:104:%%new font I started without closing previous font R

that begin <}@i{path}>/@b{catalog}.
Note that @b{catalog} is not a legal @i{prod@t{_}dir} name. Also, "@b{dfiles}", and
"@b{pfiles}" should not be used as control directory names, they are the default names for
the Distribution and Product files directories.  The dfiles and pfiles defaults are commonly accepted.
@comment TROFF INPUT: .PP

The order of files in a serial access archive is specified and shown above.
The order of products and filesets within a product is not specified, although
they must be grouped together.
Notably, the @b{INDEX} file is the first regular file in the package, followed
by the <@i{dfiles}> directory.  For each product, the <@i{prod@t{_}dir}>
is followed immediately by the
<@i{prod@t{_}dir}>/<@i{pfiles}> directory.
@comment TROFF INPUT: .SS "Minimal Package Layout"
@c DEBUG: print_menu("SOFTWARE PACKAGING LAYOUT")

@ifnottex
@menu
* Minimal Package Layout::
* Distribution Files::
* Product Files::
* Fileset Files::
* Control Directory Names::
* File Storage::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Minimal Package Layout

@subsection Minimal Package Layout

@comment TROFF INPUT: .PP

To support extant usage of tar archives, this implementation supports a minimal package layout.
The layout is non-intrusive to the current practice of extracting a 'binary' package in the '/' directory where
<@i{path}>/ is nil and,
likewise to 'source' packages where
<@i{path}> is typically the package name and version.  The use of nil control directories
is not attested to in the POSIX standard.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
 <@i{path}>/
 <@i{path}>/@b{catalog}/
 <@i{path}>/@b{catalog}/@b{INDEX}
 <@i{path}>/@b{catalog}/@b{dfiles}/
 <@i{path}>/@b{catalog}/@b{dfiles}/@b{INFO}
 <@i{path}>/@b{catalog}/@b{dfiles}/...
 <@i{path}>/@b{catalog}/@b{pfiles}/@b{INFO}
 <@i{path}>/@b{catalog}/@b{pfiles}/...
 <@i{path}>/@b{catalog}/@b{INFO}
 <@i{path}>/<@i{distribution@t{_}files}>/...@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:141:%%new font I started without closing previous font R

In this layout a single product and fileset have }@i{control@t{_}directory} attributes specified as an empty string.
@comment TROFF INPUT: .SS "Distribution Files"
@comment MAN2TEXI: EON

@node Distribution Files

@subsection Distribution Files

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
catalog/<@i{dfiles}>/...
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

<@i{dfiles}>
is the value of the @i{dfiles} attribute and the default value is "dfiles".
This directory can store an INDEX file or INFO file pertaining to the distribution.
It can also store an attribute of
the distribution as a separate file where file name is the name of the attribute and the file contents the value.
@comment TROFF INPUT: .SS "Product Files"
@comment MAN2TEXI: EON

@node Product Files

@subsection Product Files

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
catalog/<@i{prod@t{_}dir}>/<@i{pfiles}>/...
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

<@i{pfiles}>
is the value of the @i{pfiles} attribute and the default value is "pfiles".
This directory can store an INFO file pertaining to the product control@t{_}files,  control scripts defined in the INFO file, and all
other distributor-defined control@t{_}files.
It can also store an attribute of
the product as a separate file.
@comment TROFF INPUT: .SS "Fileset Files"
@comment MAN2TEXI: EON

@node Fileset Files

@subsection Fileset Files

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
catalog/<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/...
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

This directory contains information in the same form as does the
@b{Product Files} although pertaining to the fileset.
@comment TROFF INPUT: .SS "Control Directory Names"
@comment MAN2TEXI: EON

@node Control Directory Names

@subsection Control Directory Names

@comment TROFF INPUT: .PP

The
<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>
names are the values of the @i{control@t{_}directory} attribute for the product and fileset respectively.  The
default value is the value of the @i{tag} attribute.
<@i{prod@t{_}dir}> must be unique within a distribution and
<@i{fileset@t{_}dir}> must be unique within a product.
@comment TROFF INPUT: .SS "File Storage "
@comment MAN2TEXI: EON

@node File Storage

@subsection File Storage

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
<@i{prod@t{_}dir}>/<@i{fileset@t{_}dir}>/<@i{distribution@t{_}files}>/...
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

The listing of control directories in the exported catalog structure is repeated and files of the
distribution appear under these directories in a location determined by the metadata.
@comment TROFF INPUT: .PP

The standard does not require that files that are not regular files appear in the storage section.
@comment TROFF INPUT: .SH "SOFTWARE DEFINITIONS"
@comment MAN2TEXI: EON

@node SOFTWARE DEFINITIONS

@section SOFTWARE DEFINITIONS

@comment TROFF INPUT: .PP

The Software Definitions are metadata representations of the objects and attributes
recognized by the standard.
The right hand column in each definition shows the default attribute value.  The defining standard for each attribute is indicated as a
comment (leading '#' sign) if it is not IEEE-1387.2,  other defining standards are XDSA C701 (@b{C701}), and, this
implementation (@b{impl.}).
@comment TROFF INPUT: .SS "Host Definition"
@c DEBUG: print_menu("SOFTWARE DEFINITIONS")

@ifnottex
@menu
* Host Definition::
* Distribution Definition::
* Installed@t{_}software Definition::
* Media Definition::
* Vendor Definition::
* Bundle Definition::
* Product Definition::
* Category Definition::
* Subroduct Definition::
* Fileset Definition::
* File Definition::
* Control File Definition::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Host Definition

@subsection Host Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 host
@comment TROFF INPUT: .br
@comment .br
   hostname     @i{hostname}       None
   os@t{_}name      @i{os@t{_}name}        None
   os@t{_}release   @i{os@t{_}release}     None
   os@t{_}version   @i{os@t{_}version}     None
   machine@t{_}type @i{machine@t{_}type}   None@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

The host definition was attested to only in the informative annex of the standard.  An implementation
may chose to define this class.
@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:214:%%new font I started without closing previous font R

A host object can contain a }@i{distribution},
or @i{installed@t{_}software} object.

@comment TROFF INPUT: .SS "Distribution Definition"
@comment MAN2TEXI: EON

@node Distribution Definition

@subsection Distribution Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 distribution
   layout@t{_}version @i{layout@t{_}version}  @b{1.0}
   path           @i{path}            Implementation Defined
   dfiles         @i{dfiles}          @b{dfiles}
   pfiles         @i{pfiles}          @b{pfiles}
   uuid           @i{uuid}            Empty string@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:229:%%new font I started without closing previous font R

The }@i{path} attribute is not in a PSF nor INDEX files.
A PSF does not contain a @i{uuid} attribute.
An INDEX file will contain a @i{layout@t{_}version} attribute as
the first attribute.
@comment TROFF INPUT: .PP

A distribution object can contain @i{bundles}, @i{products},
and, @i{media} in the form of software definitions.
@comment TROFF INPUT: .PP

The following attributes are recognized as valuable by the Informative Annex of POSIX.7.2.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
   tag                @i{tag}                Empty string
   title              @i{title}              Empty string
   description        @i{description}        Empty string
   revision           @i{revision}           Empty string
   media@t{_}type         @i{media@t{_}type}         Empty string
   copyright          @i{copyright}          Empty string
   create@t{_}time        @i{create@t{_}time}        Empty string
   number             @i{number}             Empty string
   architecture       @i{architecture}       Empty string@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

The following attributes are recognized by this implementation.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment WARNING: man/man5/sw.5:255:%%new font B started without closing previous font R

   signature          }@b{<} @i{pathname}  None   # impl.
   sig@t{_}header   @b{<} @i{pathname}  None   # impl.
   sha1sum            @b{<} @i{pathname}  None   # impl.
   sha512sum           @b{<} @i{pathname}  None   # impl.
   md5sum             @b{<} @i{pathname}  None   # impl.
   adjunct@t{_}md5sum     @b{<} @i{pathname}  None   # impl.
   files              @b{<} @i{pathname}    None  # impl.
   control@t{_}directory  @i{control@t{_}directory}      Empty string   # impl.
   owner              @i{name}                           root   # impl.
   group              @i{name}                           root   # impl.
   mode               @i{mode}                           @b{0755}    # impl.
   signer@t{_}pgm         @i{utility@t{_}name}                   GPG    # impl.
   signer@t{_}pgm@t{_}version @i{version}                        @b{1}    # impl.
   tar@t{_}format@t{_}emulation@t{_}options @i{program@t{_}options}          # impl.
   tar@t{_}format@t{_}emulation@t{_}utility @i{software spec}            # impl.
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:274:%%new font I started without closing previous font R

The }@i{url} attribute is the universal record locator of
the @i{packager} qualified vendor.
The @i{control@t{_}directory} attribute in the
distribution object appears as the <@i{path}>
leading directory path in the a serial archive package.
The @i{owner}, @i{group}, and
@i{mode} attributes control the file attributes of the single path name prefix.
The @i{signature},
@i{sig@t{_}header},
@i{md5sum},
and @i{adjunct@t{_}md5sum} attributes are described below and are stored as separate files in the dfiles
directory. The @i{tar@t{_}format@t{_}emulation@t{_}*} options define
the GNU tar version and format options that the archive file mimics, these
attributes are used by the 'checkdigest' script.
@comment TROFF INPUT: .SS "Installed_software Definition"
@comment MAN2TEXI: EON

@node Installed@t{_}software Definition

@subsection Installed@t{_}software Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 installed@t{_}software
   layout@t{_}version @i{layout@t{_}version}  @b{1.0}
   path           @i{path}            Implementation Defined
   dfiles         @i{dfiles}          @b{dfiles}
   pfiles         @i{pfiles}          @b{dfiles}
   catalog        @i{catalog}         Undefined
   install@t{_}time   @i{install@t{_}time}    Undefined       # impl.@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

A software object can be listed (written to stdout) in the form of an INDEX
file by the swlist utility.

@comment TROFF INPUT: .SS "Media Definition"
@comment MAN2TEXI: EON

@node Media Definition

@subsection Media Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 media

@comment WARNING: man/man5/sw.5:308:%%new font I started without closing previous font R

   sequence@t{_}number }@i{sequence@t{_}number}  @b{1}@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:312:%%new font I started without closing previous font R

An INDEX file must contain the }@i{sequence@t{_}number} attribute if
the distribution spans multiple media.

@comment TROFF INPUT: .SS "Vendor Definition"
@comment MAN2TEXI: EON

@node Vendor Definition

@subsection Vendor Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 vendor
   the@t{_}term@t{_}vendor@t{_}is@t{_}misleading  true                  True or False  #impl
   tag         @i{tag}           Empty string
   title       @i{title}         Empty string
   description @i{description}   Empty string
   qualifier   @i{qualifier}     Empty string  # impl.
   url         @i{url}           Empty string  # impl.
   vendor@t{_}tag  @i{tag}           Empty string  # impl.@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:329:%%new font I started without closing previous font R

The }@i{tag} attribute is required.
The @i{the@t{_}term@t{_}vendor@t{_}is@t{_}misleading} is required in a PSF
file to avert a (harmless) warning, please use it.  It exists to allow persons, for example,
who are distributors (of existing free software) to qualify themselves away from the connotations
of a "vendor" which has specific meaning not applicable to a free software distributor.
A INDEX and PSF files can contain @b{vendor} definitions.
The @i{vendor@t{_}tag} attribute contains the vendor.@i{tag} of the upstream distributor.
The @b{qualifier} attribute value may be one of:
@b{seller},
@b{author},
@b{packager},
@b{maintainer}.
A distribution may have more than one vendor definition.  They may form a chain of references from
the product.@i{vendor@t{_}tag} to the last vendor referred to by the
vendor.@i{vendor@t{_}tag} attributes.

@comment TROFF INPUT: .SS "Bundle Definition"
@comment MAN2TEXI: EON

@node Bundle Definition

@subsection Bundle Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 bundle
   tag          @i{tag}    architecture @i{architecture}    Empty string
   location     @i{location}        <@i{bundle.directory}>
   qualifier    @i{qualifier}       Empty string
   revision     @i{revision}        Empty string
   vendor@t{_}tag   @i{vendor@t{_}tag}      Empty string
   create@t{_}time  @i{create@t{_}time}     None
   description  @i{description}     Empty string
   contents     @i{contents}        Empty string
   copyright    @i{copyright}       Empty string
   directory    @i{directory}       Empty string
   instance@t{_}id  @i{instance@t{_}id}     @b{1}
   is@t{_}locatable @i{is@t{_}locatable}    @b{true}
   layout@t{_}version @i{layoyt@t{_}version}  @b{1.0}
   machine@t{_}type @i{machine@t{_}type}    Empty string
   mod@t{_}time     @i{mod@t{_}time}        Empty string
   number       @i{number}          Empty string
   os@t{_}name      @i{os@t{_}name}         Empty string
   os@t{_}release   @i{os@t{_}release}      Empty string
   os@t{_}version   @i{os@t{_}version}      Empty string
   size         @i{size}            Empty string
   title        @i{title}           Empty string
   category@t{_}tag @i{category@t{_}tag}    Empty list or patch  # C701
   is@t{_}patch     @i{is@t{_}patch}        false                # C701@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:375:%%new font I started without closing previous font R

The }@i{tag} and @i{contents} attributes are required in INDEX and PSF files.
The @i{size} attribute is not allowed in either file. The value of @i{size} is generated dynamically.
An INDEX file will contain a @i{instance@t{_}id} attribute.
Bundle definitions for distributions will not contain either the
@i{location} or
@i{qualifier},
@i{installed@t{_}software} objects may contain these attributes.

@comment TROFF INPUT: .SS "Product Definition"
@comment MAN2TEXI: EON

@node Product Definition

@subsection Product Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 product
   tag               @i{tag}               None
   architecture      @i{architecture}      Empty string
   location          @i{location}          <@i{product.directory}>
   qualifier         @i{qualifier}         Empty string
   revision          @i{revision}          Empty string
   vendor@t{_}tag        @i{vendor@t{_}tag}        Empty string
   all@t{_}filesets      @i{all@t{_}filesets}      Empty list
   control@t{_}directory @i{control@t{_}directory} <@i{product.tag}>
   copyright         @i{copyright}         Empty string
   create@t{_}time       @i{create@t{_}time}       None
   directory         @i{directory}         @b{/}
   description       @i{description}       Empty string
   instance@t{_}id       @i{instance@t{_}id}       @b{1}
   is@t{_}locatable      @i{is@t{_}locatable}      @b{true}
   postkernel        @i{postkernel}        Implemen. defined
   layout@t{_}version    @i{layout@t{_}version}    @b{1.0}
   machine@t{_}type      @i{machine@t{_}type}      Empty string
   number            @i{number}            Empty string
   os@t{_}name           @i{os@t{_}name}           Empty string
   os@t{_}release        @i{os@t{_}release}        Empty string
   os@t{_}version        @i{os@t{_}version}        Empty string
   mod@t{_}time          @i{mod@t{_}time}          None
   size              @i{size}              None
   title             @i{title}             title
   category@t{_}tag      @i{category@t{_}tag}      Empty list # C701
   is@t{_}patch          @i{is@t{_}patch}          false      # C701
   copyrighters      @i{copyrighters}      None       # impl.
   build@t{_}root        @i{build@t{_}root}        None       # impl.
   build@t{_}host        @i{build@t{_}host}        None       # impl.
   source@t{_}package    @i{source@t{_}package}    None       # impl.
   source@t{_}rpm        @i{source@t{_}rpm}        None       # impl.
   all@t{_}patches       @i{all@t{_}patches}       None       # impl.
   url               @i{url}               None       # impl.
   rpm@t{_}provides      @i{rpm@t{_}provides}      None       # impl.
   change@t{_}log        @i{change@t{_}log}        None       # impl.@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:425:%%new font I started without closing previous font R

The }@i{tag} and @i{control@t{_}directory} attributes are required.
The
@i{size} attribute is not allowed in either file. The value of
@i{size} is generated dynamically.
An INDEX file will contain a @i{instance@t{_}id} attribute.
A product object can contain
@i{control@t{_}files},
@i{files}, and,
@i{subproducts} in the form of software definitions.
@comment TROFF INPUT: .PP

The product.@i{vendor@t{_}tag} refers to the downstream distributor.  This value is
be the analogous to the RPMTAG@t{_}RELEASE or debian@t{_}release attributes.  The original upstream author's package, for example,
would not use this attribute because that package would not have a release part in its name,
but could (or should) provide a vendor object in the PSF.
@comment TROFF INPUT: .PP

The @i{architecture} attribute contains an implementation
defined name describing the architecture.  This attribute may be a pattern.
The swbis implementation uses the output of GNU @b{config.guess} (timestamp=2007-01-15) as the string to be matched by this pattern.

@comment TROFF INPUT: .SS "Category Definition"
@comment MAN2TEXI: EON

@node Category Definition

@subsection Category Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 category
   tag           @i{tag}            None             # C701
   title         @i{title}          Empty string     # C701
   description   @i{description}    Empty string     # C701
   revision      @i{revision}       Empty string     # C701@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

The Category definition describes attributes of products and bundles related

@comment WARNING: man/man5/sw.5:456:%%new font I started without closing previous font R

to its category. If }@i{is@t{_}patch} is "true" then category.tag
must equal "patch".

@comment TROFF INPUT: .SS "Subroduct Definition"
@comment MAN2TEXI: EON

@node Subroduct Definition

@subsection Subroduct Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 subproduct
   tag           @i{tag}            None
   create@t{_}time   @i{create@t{_}time}    None
   description   @i{description}    Empty string
   mod@t{_}time      @i{mod@t{_}time}       None
   size          @i{size}           None
   title         @i{title}          Empty string
   contents      @i{contents}       Empty list
   category@t{_}tag  @i{category@t{_}tag}   Empty list   # C701
   is@t{_}patch      @i{is@t{_}patch}       false        # C701@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:475:%%new font I started without closing previous font R

The }@i{tag} and @i{contents} attributes are required.

@comment TROFF INPUT: .SS "Fileset Definition"
@comment MAN2TEXI: EON

@node Fileset Definition

@subsection Fileset Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 fileset
   tag               @i{tag}               None
   create@t{_}time       @i{create@t{_}time}       None
   mod@t{_}time          @i{mod@t{_}time}          None
   control@t{_}directory @i{control@t{_}directory} <@i{fileset.tag}>
   corequisites      @i{corequisites}      Empty list
   description       @i{description}       Empty string
   exrequisites      @i{exrequisites}      Empty list
   is@t{_}kernel         @i{is@t{_}kernel}         @b{false}
   is@t{_}locatable      @i{is@t{_}locatable}      @b{true}
   is@t{_}reboot         @i{is@t{_}reboot}         @b{false}
   location          @i{location}          <@i{product.directory}>
   media@t{_}sequence@t{_}number @i{media@t{_}sequence@t{_}number} @b{1}
   prerequisites     @i{prerequisites}     Empty list
   revision          @i{revision}          None
   size              @i{size}              None
   state             @i{state}             None
   title             @i{title}             Empty string
   is@t{_}sparse         @i{is@t{_}sparse}        "false"        # C701
   is@t{_}patch          @i{is@t{_}patch}         "false"        # C701
   category@t{_}tag      @i{category@t{_}tag}      empty list    # C701
   ancestor          @i{ancestor}          <@i{product.tag}>,ver@t{_}id # C701
   applied@t{_}patches   @i{applied@t{_}patches}   empty list    # C701
   patch@t{_}state       @i{patch@t{_}state}       applied or,   # C701
                                           committed or,
                                             superseded, (no default).
   saved@t{_}files@t{_}directory  @i{saved@t{_}files@t{_}directory} None # C701
   supersedes       @i{supersedes}          None         # C701
   superseded@t{_}by    @i{superseded@t{_}by}       None         # C701@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:512:%%new font I started without closing previous font R

The }@i{tag} and @i{control@t{_}directory} attributes are required.  A PSF should not contain the
@i{location},
@i{media@t{_}sequence@t{_}number},
@i{size}, or
@i{state} attributes.
A fileset object can contain
@i{control@t{_}files},
@i{files},
in the form of software definitions.

@comment TROFF INPUT: .SS "File Definition"
@comment MAN2TEXI: EON

@node File Definition

@subsection File Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 file
   path               @i{path}               None
   cksum             @i{cksum}             None
   compressed@t{_}cksum  @i{compressed@t{_}cksum}  None
   compressed@t{_}size    @i{compressed@t{_}size}    None
   compression@t{_}state  @i{compression@t{_}state}  @b{uncompressed}
   compression@t{_}type   @i{compression@t{_}type}   Empty string
   revision           @i{revision}           Empty string
   size               @i{size}               None
   source             @i{source}             None
   gid                @i{gid}                Undefined
   group              @i{group}              Empty string
   is@t{_}volatile        @i{is@t{_}volatile}        @b{false}
   link@t{_}source        @i{link@t{_}source}        None
   major              @i{major}              None
   minor              @i{minor}              None
   mode               @i{mode}               None
   mtime              @i{mtime}              None
   owner              @i{owner}              Empty string
   type               @i{type}               @b{f}
   uid                @i{uid}                undefined
   archive@t{_}path    @i{archive@t{_}path}    empty string    # C701
   md5sum          @i{md5sum}      empty string    # impl.
   sha1sum         @i{sha1sum}      empty string    # impl.
   sha512sum       @i{sha512sum}      empty string    # impl.
   rdev            @i{rdev}            empty string    # impl.
   rpm@t{_}fileflags   @i{rpm@t{_}fileflags}   empty string    # impl.@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:555:%%new font I started without closing previous font R

A PSF must contain }@i{source} attribute.
A @i{source}  attribute in an INFO will be
ignored.
A PSF should not contain the
@i{cksum},
@i{compressed@t{_}cksum},
@i{compressed@t{_}size},
@i{compression@t{_}state},
@i{compression@t{_}type}, or
@i{size} attributes.

@comment TROFF INPUT: .SS "Control File Definition"
@comment MAN2TEXI: EON

@node Control File Definition

@subsection Control File Definition

@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 control@t{_}file
   tag                @i{tag}                None
   cksum             @i{cksum}             None
   compressed@t{_}cksum  @i{compressed@t{_}cksum}  None
   compressed@t{_}size    @i{compressed@t{_}size}    None
   compression@t{_}state  @i{compression@t{_}state}  @b{uncompressed}
   compression@t{_}type   @i{compression@t{_}type}   Empty string
   revision           @i{revision}           Empty string
   size               @i{size}               None
   source             @i{source}             None
   path               @i{path}               None
   interpreter        @i{interpreter}        @b{sh}
   result             @i{result}             @b{none}@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

A control@t{_}file defines a control script such as those listed below (see Extended Control File Definitions)
or an attribute stored as a file.

@comment TROFF INPUT: .SH "SOFTWARE SELECTIONS"
@comment MAN2TEXI: EON

@node SOFTWARE SELECTIONS

@section SOFTWARE SELECTIONS

@comment TROFF INPUT: .PP

The Software Selections provide a means to specify and select (possibly with
a shell matching pattern) specific Software objects.  A selection is made

@comment WARNING: man/man5/sw.5:593:%%new font B started without closing previous font R

using a }@b{software spec}.
A software spec may not contain white space (a list of multiple selections is white space
delimited).  A software spec consists of @i{tag} values
and  @i{version@t{_}id}s.  Multiple tags are '.' (dot) delimited
with the leftmost specifying the broadest (most general) software object such as a
bundle or product and the rightmost being most specific (The swbis implementation
does not support fileset tags in a software spec). The tags may be followed by nothing, or a comma and one
or more Version Identifiers which are ',' comma delimited.
@comment TROFF INPUT: .PP

@b{Dependency Specs} are software specs.
@comment TROFF INPUT: .SS "Version Identifiers"
@c DEBUG: print_menu("SOFTWARE SELECTIONS")

@ifnottex
@menu
* Version Identifiers::
* Example Software Specs::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Version Identifiers

@subsection Version Identifiers

@comment TROFF INPUT: .PP

@b{Version Identifiers} specify specific attributes of a software object.
There are five (5) specified. They are signified by a single letter: @b{r,a,v,l,q}.
An implementation may support additional ones and may support qualification
to a specific object type by prefixing a 'p' or 'b' or 'f' for bundle, product, or
fileset respectively.  The value of the attribute follows an equals sign '=', or
in the case of a revision id, a relational operator.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 Letter     Attribute
   r    @b{revision}   r\<@i{relop}\>@i{revsion}
                             # A relop may be ==,\<,\>,\<=,\>=
   v    @b{vendor@t{_}tag}    v=@i{vendor@t{_}tag}
   q    @b{qualifier}     q=@i{qualifier}
   l    @b{location}      l=@i{location}
   a    @b{architecture}  a=@i{arch}  @r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

Implementation Extension Version Ids are the following:
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 Letter     Attribute

@comment WARNING: man/man5/sw.5:627:%%new font I started without closing previous font R

   i    }@i{catalog@t{_}instance@t{_}id}   i=@i{number}  @r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:630:%%new font I started without closing previous font R

 The catalog }@i{instance@t{_}id} is a directory in the installed
software catalog that distinguishes installed instances of packages with the same
name and revision but at different locations.
@comment TROFF INPUT: .SS "Example Software Specs"
@comment MAN2TEXI: EON

@node Example Software Specs

@subsection Example Software Specs

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
    emacs,r==21.2
    kde.kdegames # This assumes that 'kde' was specified as the bundle
                 # in the kdegames package
    foobar,r\>1.0,v=tycoon003
    somepackage,r\>1.0,r\<=1.3  # revision is the product revision by default
    somepackage,pr\>1.0,pr\<=1.3  # explicitly specify revision is the product revision@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP


@comment TROFF INPUT: .SH "DEPENDENCY SPECS"
@comment MAN2TEXI: EON

@node DEPENDENCY SPECS

@section DEPENDENCY SPECS

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:647:%%new font B started without closing previous font R

A dependency spec is a }@b{software spec}.  There are three types:
@i{prerequisites},
@i{exrequisites},
@i{corequisites}.
These attributes apply to the fileset and are placed in the fileset object in a PSF file.
A @i{prerequisites} is something that must be installed, and
a @i{exrequisites} is something that must not be installed.
A @i{corequisites} is something that must be installed with, @i{corequisites} are not supported at this time.
@i{prerequisites} map to RPMTAG@t{_}REQUIRENAME, RPMTAG@t{_}REQUIREVERSION, and RPMTAG@t{_}REQUIREFLAGS attributes.
@comment TROFF INPUT: .SS "Dependency Spec Examples"
@c DEBUG: print_menu("DEPENDENCY SPECS")

@ifnottex
@menu
* Dependency Spec Examples::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Dependency Spec Examples

@subsection Dependency Spec Examples

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
   # Alternation  Require a package named foo1 or foo2
   prerequisite   foo1|foo2

   # Require a package named foo1 and foo2
   prerequisite   foo1 foo2

   # multiple prerequisite keywords can be used
   prerequisite  foo1
   prerequisite  foo2

   # Require a revision range and a certain vendor@t{_}tag
   prerequisite  foo1,r>2,r<3,v=mydist*@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SH "EXTENDED DEFINITIONS"
@comment MAN2TEXI: EON

@node EXTENDED DEFINITIONS

@section EXTENDED DEFINITIONS

@comment TROFF INPUT: .PP

A Product Specification File (PSF) can contain Extended Definitions in the

@comment WARNING: man/man5/sw.5:677:%%new font B started without closing previous font R

}@b{fileset}, @b{product} or @b{bundle} software definitions.  They would have the same level or containment
relationship as a
@b{file} or
@b{control@t{_}file} definition in the same contaning object.
@comment TROFF INPUT: .PP

Extended Definitions represent a minimal, expressive form for specifying files and file attributes.
Their use in a PSF is optional in that an equivalent PSF can be constructed without using them,
however, their use is encouraged for the sake of brevity and orthogonality.
@comment TROFF INPUT: .PP

The swbis implementation requires that no [ordinary] attributes appear after Extended Definitions
in the containing object, and, requires that Extended Definitions appear before logically contained objects.
That is, the parser uses the next object keyword to syntacticly and logically terminate the
current object even if the current object has logically contained objects.
@comment TROFF INPUT: .SS "o  Extended Control File Definitions"
@c DEBUG: print_menu("EXTENDED DEFINITIONS")

@ifnottex
@menu
* o Extended Control File Definitions::
* o Directory Mapping::
* o Recursive File Definition::
* o Explicit File Definition::
* o Default Permission Definition::
* o Excluding Files::
* o Including Files::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node o Extended Control File Definitions

@subsection o  Extended Control File Definitions

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
     checkinstall  @i{source}  [@i{path}]
     preinstall    @i{source}  [@i{path}]
     postinstall   @i{source}  [@i{path}]
     verify        @i{source}  [@i{path}]
     fix           @i{source}  [@i{path}]
     checkremove   @i{source}  [@i{path}]
     preremove     @i{source}  [@i{path}]
     postremove    @i{source}  [@i{path}]
     configure     @i{source}  [@i{path}]
     unconfigure   @i{source}  [@i{path}]
     request       @i{source}  [@i{path}]
     unpreinstall  @i{source}  [@i{path}]
     unpostinstall @i{source}  [@i{path}]
     space         @i{source}  [@i{path}]
     control@t{_}file  @i{source}  [@i{path}]@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:713:%%new font I started without closing previous font R

The }@i{source} attribute defines the location in distributors's development system
where the swpackage utility will find the script.  The keyword is the value of the
@i{tag} attribute
and tells the utilities when to execute the script.
The @i{path} attribute is optional and specifies the file name in the packages distribution
relative to the control@t{_}directory for software containing the script. If not given the
@i{tag} value is used as the filename.
@comment TROFF INPUT: .SS "o  Directory Mapping"
@comment MAN2TEXI: EON

@node o Directory Mapping

@subsection o  Directory Mapping

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
   directory  @i{source}  [@i{destination}]
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:731:%%new font I started without closing previous font R

Applies the }@i{source} attribute as the directory under which
the subsequently listed files are located.  If
@i{destination} is defined it will be used as a prefix to the
@i{path} (implied) file definition.
@i{source} is typically a temporary or build
location and
@i{dest} is its unrealized absolute pathname destination.
@comment TROFF INPUT: .SS "o  Recursive File Definition"
@comment MAN2TEXI: EON

@node o Recursive File Definition

@subsection o  Recursive File Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
  file *
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

Specifies every file in current source directory.

@comment WARNING: man/man5/sw.5:750:%%new font I started without closing previous font R

The }@i{directory} extended definition must be used before the recursive specification.
@comment TROFF INPUT: .SS "o  Explicit File Definition"
@comment MAN2TEXI: EON

@node o Explicit File Definition

@subsection o  Explicit File Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
  file [-t @i{type}] [-m @i{mode}] [-o @i{owner}[,@i{uid}]] [-g @i{group}[,@i{gid}]] [-n] [-v] source [@i{path}]
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:762:%%new font B started without closing previous font R

}@b{source}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@comment TROFF INPUT: .PP

@i{source} defines the pathname of the file to be used as the source of file data
and/or attributes.
If it is a relative path, then swpackage searches for this file relative to the
the source argument of the @b{directory} keyword, if set.
If @b{directory} keyword is not set then the search is relative to the
current working directory of the swpackage utility's invocation.
@comment TROFF INPUT: .PP

All attributes for the destination file are taken from the source file, unless a
@b{file@t{_}permissions} keyword is active, or the -m, -o, or -g options are also
included in the file specification.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@b{path}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{path} defines the destination path where the file will be created or installed.
If it is a relative path, then the destination path of the of the
@b{directory} keyword must be active and will be used as the path prefix.
If path is not specified then
@i{source} is used as the value of path and directory mapping applied (if active).
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@b{-t type}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{type} may one of 'd' (directory), or  'h' (hard link), or 's' (symbolic link).
@comment TROFF INPUT: .PP

-t d  Create a directory.
@comment TROFF INPUT: .br
@comment .br
If @i{path} is not specified
@i{source} is used as the path attribute.
@comment TROFF INPUT: .PP

-t h  Create a hard link.
@comment TROFF INPUT: .br
@comment .br
@i{path} and @i{source} are specified.
@i{source} is used as the value of the
@i{link@t{_}source} attribute, and
@i{path} is the value of the path attribute.
@comment TROFF INPUT: .PP

-t s  Create a symbolic link.
@comment TROFF INPUT: .br
@comment .br
@i{path} and @i{source} are specified.
@i{source} is used as the value of the
@i{link@t{_}source} attribute, and
@i{path} is the value of the path attribute.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@b{-m mode}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{mode} defines the octal mode for the file.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .SS "o  Default Permission Definition"
@comment MAN2TEXI: EON

@node o Default Permission Definition

@subsection o  Default Permission Definition

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
  file@t{_}permissions [-m @i{mode}] [-u @i{umask}] [-o [@i{owner}[,]][@i{uid}]] [-g [@i{group}[,]][@i{gid}]]
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

Applies to subsequently listed file definitions in a fileset.
These attributes will apply where the file attributes were not specified explicitly in a
file definition.

@comment WARNING: man/man5/sw.5:832:%%new font B started without closing previous font R

Subsequent }@b{file@t{_}permissions} definitions
simply replace previous definitions (resetting all the options).
@comment TROFF INPUT: .PP

To reset the file@t{_}permission state (i.e. turn it off) use one of the following:
    file@t{_}permissions ""
@comment TROFF INPUT: .br
@comment .br
	or the preferred way is
@comment TROFF INPUT: .br
@comment .br
    file@t{_}permissions -u 000
@comment TROFF INPUT: .SS "o  Excluding Files"
@comment MAN2TEXI: EON

@node o Excluding Files

@subsection o  Excluding Files

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
   exclude source
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

Excludes a previously included file or an entire directory.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .SS "o  Including Files"
@comment MAN2TEXI: EON

@node o Including Files

@subsection o  Including Files

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br

@comment WARNING: man/man5/sw.5:859:%%new font I started without closing previous font R

   include <}@i{filename}
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:865:%%new font I started without closing previous font R

The contents of }@i{filename} may be more definitions for files.
The syntax of the included file is PSF syntax.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .SH "DISTRIBUTOR KEYWORDS"
@comment MAN2TEXI: EON

@node DISTRIBUTOR KEYWORDS

@section DISTRIBUTOR KEYWORDS

@comment TROFF INPUT: .PP

A software definition file (INFO, INDEX or psf) may contain keywords not recognized by the standard.
Such keywords will be parsed as an attribute keyword, that is as an attribute of the
containing object (keyword) software definition.
@comment TROFF INPUT: .SH "PACKAGE SECURITY"
@c DEBUG: print_menu("DISTRIBUTOR KEYWORDS")
@comment MAN2TEXI: EON

@node PACKAGE SECURITY

@section PACKAGE SECURITY

@comment TROFF INPUT: .PP

The Package Security Attributes are distribution attributes stored as separate files.  They are implementation extensions.
They consist of archive digests, catalog signature, catalog signature header, and individual file md5, sha1, and sha512 digests.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "Archive Digests"
@c DEBUG: print_menu("PACKAGE SECURITY")

@ifnottex
@menu
* Archive Digests::
* Adjunct Md5 Digest::
* Catalog Signature Header::
* Catalog Signature::
* File Digests::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Archive Digests

@subsection Archive Digests

@comment TROFF INPUT: .PP

@i{md5sum}, @i{sha1sum}, and @i{sha512sum} are the md5 and sha1 and sha512 digests (ascii representations) of the
leading package directories that do not have the @b{catalog} pathname component
followed by the
@i{software file storage structure} portion of the uncompressed serial access package file including all archive format trailer blocks.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{md5sum}
@comment TROFF INPUT: .br
@comment .br
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{sha1sum}
@comment TROFF INPUT: .br
@comment .br
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{sha512sum}
@comment TROFF INPUT: .br
@comment .br
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "Adjunct Md5 Digest"
@comment MAN2TEXI: EON

@node Adjunct Md5 Digest

@subsection Adjunct Md5 Digest

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:897:%%new font I started without closing previous font R

}@i{adjunct@t{_}md5sum} is the same as the
@i{md5sum} excluding symbolic links.
If a package does not contain symbolic links the
@i{md5sum} and
@i{adjunct@t{_}md5sum} will be identical.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{adjunct@t{_}md5sum}@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

Explanation: This attribute is called 'adjunct' because it is a digest of a subset of the files in the package.
It exists to facilitate verifying file integrity of the directory form of a package
in an environment where the modification time of symbolic link files are not preserved from the serial
archive by the tar utility or operating system.

@comment WARNING: man/man5/sw.5:913:%%new font I started without closing previous font R

The ability to verify even the }@i{adjunct@t{_}md5sum} from
the directory form of the package is dependent on the tar creating utility and
other attributes of a POSIX.2 environment.
@comment TROFF INPUT: .SS "Catalog Signature Header"
@comment MAN2TEXI: EON

@node Catalog Signature Header

@subsection Catalog Signature Header

@comment TROFF INPUT: .PP

The @i{sig@t{_}header} file is a ustar header that is
identical bit-for-bit to the ustar header of the signature file.  It always precedes the signature
file archive members.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{sig@t{_}header}@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:927:%%new font I started without closing previous font R

The }@i{sig@t{_}header} protects the tar header of the signature files from tampering.
This is required because neither the signature file bytes nor the signature tar header are
included in the signed data.
@comment TROFF INPUT: .SS "Catalog Signature"
@comment MAN2TEXI: EON

@node Catalog Signature

@subsection Catalog Signature

@comment TROFF INPUT: .PP

The signature protects the metadata section of the archive.  The contents of payload section are only included
in the form of a crytographic digest.  The sha1 digest is preferred over the md5 digest for technical reasons.
If the metadata section does not contain the payload section digests then there is no way to verify the
payload from the signature.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
       <@i{path}>/@b{catalog}/<@i{dfiles}>/@b{signature}@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP


@comment WARNING: man/man5/sw.5:943:%%new font I started without closing previous font R

The signed data is the }@i{exported catalog structure} of the uncompressed serial archive package file
up to but not including the first byte of the @i{software file storage structure} followed by two (2) 512 byte null blocks if tar format, and no trailer bytes if not tar format.
The signature file archive member itself is not included in the signed stream, it is intended that the
<@i{path}>/@b{catalog}/<@i{dfiles}>/@b{md5sum} file is included in the signed stream.
@comment TROFF INPUT: .PP

The signature file is ASCII armored.
The last printable character of the signature is followed by one or more
newline characters (0x0A).
The total length of the file must match the file size specified
in the size field of the @b{sig@t{_}header} file.
The ustar header of every signature archive member shall be identical
to the @b{sig@t{_}header} file.
The padded size is predetermined [by swpackage] and currently set
to be 1024 octets.
This means the armored sig file has a length limitation of 1023 octets.
@comment TROFF INPUT: .PP

If multiple signature archive members exist they must follow one another in the
archive with no other intervening files; and, the same
@b{sig@t{_}header} file is the ustar header for all the signature
archive members.
A signature archive member, whether alone or one of many, is never
part of the signed data stream.
@comment TROFF INPUT: .SS "File Digests"
@comment MAN2TEXI: EON

@node File Digests

@subsection File Digests

@comment TROFF INPUT: .PP

File digests are attributes of the @b{file} software definition. They appear in
the INFO file.
       @i{file}.cksum
       @i{file}.md5sum
       @i{file}.sha1sum
       @i{file}.sha512sum
@comment TROFF INPUT: .PP

Each file can have none or all of these digests.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .SH "SOFTWARE DEFINITION FILES"
@comment MAN2TEXI: EON

@node SOFTWARE DEFINITION FILES

@section SOFTWARE DEFINITION FILES

@comment TROFF INPUT: .PP

The metadata files, INDEX, INFO and PSF, contain information about the
software in the form of @i{software definitions}.
The INDEX and INFO files appear
in a package directory structure.
They are automatically generated by the 'swpackage' command.
The location in the directory structure indicates the higher level object
to which their data pertains.
The PSF file does not appear in the package.
It is created by a person or program and it directs
the action of the swpackage utility.
It is internal data unless released by the distributor.
@comment TROFF INPUT: .PP

The files contain keywords (and values) to represent the attributes defined in the standard.  There are three (3)
different keyword types: object, attribute, and, extended. The object keyword type has no value and there are
eleven (11) of these corresponding to the Software Definitions defined above:
@b{installed@t{_}software},
@b{distribution},
@b{media},
@b{bundle},
@b{vendor},
@b{category},
@b{product},
@b{subproduct},
@b{fileset},
@b{control@t{_}file},
@b{file}.

Each object keyword is followed by and newline and attributes in the form of keyword/value pairs.  Whitespace separates the keyword and
value.  Whitespace outside of a quoted value is not significant.
A quoted value can span multiple lines.  An object keyword with its list of attribute keywords (and values)
forms a @i{Software Definition}.
A @i{Software Definition} is terminated by the start of the next @i{Software Definition}.
Extended keywords (meaning Extended Definitions) only appear in a PSF file.
@comment TROFF INPUT: .PP

The order  of objects (i.e @i{Software Definition}s) is significant and
a containment  hierarchy is determined according to parser's grammar.
@comment TROFF INPUT: .SS "Additional Syntax Rules"
@c DEBUG: print_menu("SOFTWARE DEFINITION FILES")

@ifnottex
@menu
* Additional Syntax Rules::
* Software Definition File Grammar::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Additional Syntax Rules

@subsection Additional Syntax Rules

@comment TROFF INPUT: .IP "   \(bu" 6

A '#' (pound) character designates a comment.  A comment may begin a line or appear at the
end of a single line containing the keyword/value pair.
@comment TROFF INPUT: .IP "   \(bu" 6

A value may be quoted by the '"' (double quote) character; and, multi-line values must be quoted.
Trailing white space from an unquoted value will be removed.
@comment TROFF INPUT: .IP "   \(bu" 6

The order of attributes is not significant although the INDEX file grammar requires the @i{layout@t{_}version} attribute
appear first in
distribution or installed software object.
@comment TROFF INPUT: .IP "   \(bu" 6

The ", #, and, \@tie{}characters must be escaped with a backslash (\\) in a quoted value.
@comment TROFF INPUT: .IP "   \(bu" 6

If a value begins with a < (less than), the value is interpreted as a filename
whose contents will be treated as a quoted value although the storage of the attribute
will be in the form of a control file (i.e. a separate file in the control directory).
For INDEX files, the filename is relative to the control directory in which this attribute is contained.
For PSF files, the filename is a path on the host.
@comment TROFF INPUT: .SS "Software Definition File Grammar"
@comment MAN2TEXI: EON

@node Software Definition File Grammar

@subsection Software Definition File Grammar

@comment TROFF INPUT: .PP

A PSF may contain all @i{Software Definitions}.  An INDEX file does not contain
@b{control@t{_}file},
or
@b{file} definitions. An INFO file contains only
@b{control@t{_}file},
and
@b{file} definitions.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
     software@t{_}definition@t{_}file : INDEX
                              | INFO
                              | PSF
                              ;

     PSF :  distribution@t{_}definition
            swo@t{_}contents
            ;

     INDEX : swo@t{_}definition
             swo@t{_}contents
            ;

     INFO : fileset@t{_}contents
            ;

     swo@t{_}definition : distribution@t{_}definition
                    | @i{installed@t{_}software}
                    ;

     distribution@t{_}definition : @i{distribution}
                                         @i{media}
                             ;

     swo@t{_}contents : @i{vendor}(s)
                   | @i{category}(s)
                   | products
                   | bundles
                   ;

     products : @i{product}
                product@t{_}contents
                ;

     bundles : @i{bundle}
                ;

     product@t{_}contents :  @i{control@t{_}file}s
       /* control@t{_}files not valid in INDEX file */
                     | @i{subproduct}s
                     |  filesets
		     ;

     filesets : @i{fileset}
      /* fileset@t{_}contents not valid in INDEX file */
                fileset@t{_}contents
                ;

     fileset@t{_}contents :  @i{control@t{_}file}s
                      | @i{file}s
                      ;
@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SH "EXAMPLE PACKAGE"
@comment MAN2TEXI: EON

@node EXAMPLE PACKAGE

@section EXAMPLE PACKAGE

@comment TROFF INPUT: .SS "Layout"
@c DEBUG: print_menu("EXAMPLE PACKAGE")

@ifnottex
@menu
* Layout::
* Hypothetical PSF file::
* INDEX File swm-1 0/catalog/INDEX::
* INFO File swm-1 0/catalog/dfiles/INFO::
* INFO File swm-1 0/catalog/gsoft@t{_}swm/bin/INFO::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node Layout

@subsection Layout

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
 swm-1.0/catalog
 swm-1.0/catalog/INDEX
 swm-1.0/catalog/dfiles
 swm-1.0/catalog/dfiles/INFO
 swm-1.0/catalog/dfiles/md5sum
 swm-1.0/catalog/dfiles/sha1sum
 swm-1.0/catalog/dfiles/adjunct@t{_}md5sum
 swm-1.0/catalog/dfiles/sig@t{_}header
 swm-1.0/catalog/dfiles/signature
 swm-1.0/catalog/gsoft@t{_}swm
 swm-1.0/catalog/gsoft@t{_}swm/pfiles
 swm-1.0/catalog/gsoft@t{_}swm/pfiles/INFO
 swm-1.0/catalog/gsoft@t{_}swm/pfiles/remove
 swm-1.0/catalog/gsoft@t{_}swm/pfiles/configure
 swm-1.0/catalog/gsoft@t{_}swm/bin
 swm-1.0/catalog/gsoft@t{_}swm/bin/INFO
 swm-1.0/catalog/gsoft@t{_}swm/bin/postinstall
 swm-1.0/catalog/gsoft@t{_}swm/bin/configure
 swm-1.0/catalog/gsoft@t{_}swm/doc
 swm-1.0/catalog/gsoft@t{_}swm/doc/INFO
 swm-1.0/catalog/gsoft@t{_}swm/doc/postinstall
 swm-1.0/gsoft@t{_}swm
 swm-1.0/gsoft@t{_}swm/bin
 swm-1.0/gsoft@t{_}swm/bin/usr/bin/swpackage
 swm-1.0/gsoft@t{_}swm/bin/usr/bin/sw@t{_}build
 swm-1.0/gsoft@t{_}swm/doc
 swm-1.0/gsoft@t{_}swm/doc/usr/man/man1/swpackage.1

@comment WARNING: man/man5/sw.5:1133:%%new font R started without closing previous font R

 swm-1.0/gsoft@t{_}swm/doc/usr/man/man1/sw@t{_}build.1}
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "Hypothetical PSF file"
@comment MAN2TEXI: EON

@node Hypothetical PSF file

@subsection Hypothetical PSF file

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br

 distribution
   control@t{_}directory swm-1.0  #Implementation Extension.
   vendor
     the@t{_}term@t{_}vendor@t{_}is@t{_}misleading  false # True or False
     tag greatsoft
     title Greatersoft Corporation
     description "Greatersoft Corporation, Inc."
   product
     tag swm
     title POSIX 1387 package builder
     revision 1.0
     control@t{_}directory gsoft@t{_}swm
     vendor@t{_}tag greatsoft
     description A package building Utility.
     machine@t{_}type i386
     control@t{_}file
     	path remove
        source /var/tmp/sw/remove.source
     configure /var/tmp/sw/configure.source
     fileset
        tag bin
        control@t{_}directory bin
        title Executable Files
        state available
     	postinstall /var/tmp/sw/bin/postinstall
        configure /var/tmp/sw/bin/configure
        file -m 0755 -o root -g root /var/tmp/sw/build/bin/swpackage  \\
                     /usr/bin/swpackage
        file -m 0755 -o root -g root /var/tmp/sw/build/bin/sw@t{_}build  \\
                     /usr/bin/sw@t{_}build
   fileset
      tag doc
      control@t{_}directory doc
      title Manual Pages
      state available
      postinstall /var/tmp/sw/bin/postinstall
      file -m 0644 -o root -g root /var/tmp/sw/build/man/swpackage.1 \\
                /usr/man/man1/swpackage.1
      file
         mode 0644
         owner root
         group  root
         source /var/tmp/sw/build/man/sw@t{_}build.1
         path /usr/man/man1/sw@t{_}build.1@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "INDEX File swm-1\&.0/catalog/INDEX"
@comment MAN2TEXI: EON

@node INDEX File swm-1 0/catalog/INDEX

@subsection INDEX File swm-1.0/catalog/INDEX

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br

 distribution
   layout@t{_}version 1.0
   tag swm-1.0
   uuid 880ccf8b-de2c-4422-bff0-fd686279da73
   md5sum < md5sum
   adjunct@t{_}md5sum < adjunct@t{_}md5sum
   sig@t{_}header < sig@t{_}header
   signature < signature
   media
     sequence@t{_}number 1
   vendor
     the@t{_}term@t{_}vendor@t{_}is@t{_}misleading  false # True or False
     tag greatsoft
     title Greatersoft Corporation
     description "Greatersoft Corporation, Inc."
   product
     tag swm
     title POSIX 1387 package builder
     revision 1.0
     instance@t{_}id 1
     control@t{_}directory gsoft@t{_}swm
     vendor@t{_}tag greatsoft
     description A package building Utility.
     machine@t{_}type i386
     fileset
        tag bin
        control@t{_}directory bin
        size 196643
        title Executable Files
        state available
     fileset
        tag doc
        control@t{_}directory doc
        size 19643
        title Manual Pages

@comment WARNING: man/man5/sw.5:1229:%%new font R started without closing previous font R

        state available}
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "INFO File swm-1\&.0/catalog/dfiles/INFO"
@comment MAN2TEXI: EON

@node INFO File swm-1 0/catalog/dfiles/INFO

@subsection INFO File swm-1.0/catalog/dfiles/INFO

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

 control@t{_}file
   path INFO
   tag INFO
   size 92
 control@t{_}file
   path md5sum
   tag md5sum
   size 36
 control@t{_}file
   path adjunct@t{_}md5sum
   tag adjunct@t{_}md5sum
   size 36
 control@t{_}file
   path sig@t{_}header
   tag sig@t{_}header
   size 512
 control@t{_}file
   path signature
   tag signature
   size 512 @r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .SS "INFO File swm-1\&.0/catalog/gsoft_swm/bin/INFO"
@comment MAN2TEXI: EON

@node INFO File swm-1 0/catalog/gsoft@t{_}swm/bin/INFO

@subsection INFO File swm-1.0/catalog/gsoft@t{_}swm/bin/INFO

@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

 control@t{_}file
   path INFO
   tag INFO
   size 337

 control@t{_}file
   path postinstall
   type f
   size 803
   cksum 3928827394
   mode 550
   uid 0
   gid 0
   owner root
   group root
   mtime 739080341

 control@t{_}file
   path configure
   type f
   size 432
   cksum 3934546394
   mode 550
   uid 0
   gid 0
   owner root
   group root
   mtime 739340771

 file
   path /usr/bin/swpackage
   type f
   size 80860
   cksum 3929827394
   mode 755
   uid 0
   gid 0
   owner root
   group root
   mtime 739080771

 file
   path /usr/bin/sw@t{_}build
   type f
   size 120860
   cksum 9894925524
   mode 755
   uid 0
   gid 0
   owner root
   group root

@comment WARNING: man/man5/sw.5:1313:%%new font R started without closing previous font R

   mtime 7393808731 }
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP


@comment TROFF INPUT: .SH "SWBIS PSF CONVENTIONS"
@comment MAN2TEXI: EON

@node SWBIS PSF CONVENTIONS

@section SWBIS PSF CONVENTIONS

@comment TROFF INPUT: .PP

This section describes attribute usage and conventions imposed by the swbis implementation.
Not all attributes are listed here.  Those that are have important effects or
particular interest.
@comment TROFF INPUT: .SS "o Distribution Attributes"
@c DEBUG: print_menu("SWBIS PSF CONVENTIONS")

@ifnottex
@menu
* o Distribution Attributes::
* o Bundle Attributes::
* o Product Attributes::
* o Fileset Attributes::
* o Example Source Package PSF::
* o Example Runtime (Binary) Package PSF::

@end menu
@end ifnottex

@comment MAN2TEXI: EON

@node o Distribution Attributes

@subsection o Distribution Attributes

@comment TROFF INPUT: .PP

The standard defines a limited set of attributes for the distribution object.
An expanded set is suggested by the informative annex however a conforming
implementation is not required act on them.  The reason for this is a
distribution may be acted upon by a conforming utility in such a way that attributes
of the @b{distribution} become invalid.
For this reason, some attributes that refer to an entire "package" [in other package managers]
are referred from the product object and attain their broadened scope by the distributor's
convention that their distribution contains just one
@b{product}.
@comment TROFF INPUT: .PP

For example, the package NAME and VERSION are referred from the product tag and revision,
not the distribution's.  This convention supports multiple products in a distribution and
is consistent with the standard.
@comment TROFF INPUT: .PP

@b{tag}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{tag} is the short, file system friendly, name of the distribution.
Providing a distribution tag is optional.  The swbis implementation will use this as the
[single] path name prefix if there is no distribution.control@t{_}directory attribute.
A distribution tag attribute and swpackage's response to it is an implementation extension.
The leading package path can also be controlled with the ''-W dir'' option.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{control@t{_}directory}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{control@t{_}directory}, in a distribution object, is the constant leading package path.
Providing this attribute is optional.
A distribution control@t{_}directory attribute and swpackage's response to it is an implementation extension.
The leading package path can also be controlled with the ''-W dir'' option.  This attribute will be
generated by swpackage if not set in a PSF.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .SS "o Bundle Attributes"
@comment MAN2TEXI: EON

@node o Bundle Attributes

@subsection o Bundle Attributes

@comment TROFF INPUT: .PP

A @b{bundle} defines a collection of products whether or not
the distribution has all the products present.
@comment TROFF INPUT: .PP

@b{tag}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{tag} is the short, file system friendly, name of the bundle.
This value is used by the swbis implementation as a path name component in the
installed software catalog.  If it is not present the product tag is used.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .SS "o Product Attributes"
@comment MAN2TEXI: EON

@node o Product Attributes

@subsection o Product Attributes

@comment TROFF INPUT: .PP

A @b{product} defines the software product.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .PP

@b{tag}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{tag} is the short, file system friendly, name of the product.
This value is used by the swbis implementation as a path name component in the
installed software catalog.  It is required.  The swbis implementation uses it in a way
that is analogous to the RPMTAG@t{_}NAME attribute, namely as the public recognizable name of
the package.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{control@t{_}directory}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

Is the directory name in the distribution under which the product contents are located.
This value has no affect on the installed software catalog.  If it is not given in a PSF
then the
@i{tag} is used.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{revision}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

Is the product revision.  It should not contain a "RELEASE" attribute part or other
version suffix modifiers.
This value is used by the swbis implementation as a path name component in the
installed software catalog.  It is required by swinstall.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{vendor@t{_}tag}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

This is a short identifying name of the distributor that supplied the product and
may associate (refer to) a @b{vendor} object from the INDEX file that
has a matching tag attribute.
This attribute is optional.
This attribute value should strive to be unique among all distributors. The swbis implementation
modifies the intended usage slightly as a string that strives to be globally unique for a given
product.@b{tag} and product.@b{revision}.
In this capacity it serves to distinguish products with the same revision and tag from the same or
different distributor.  It most closely maps to the RPMTAG@t{_}RELEASE or "debian@t{_}revision" attributes.
It is one of the version distinguishing attributes of a product specified by the standard.
It is transfered into the installed@t{_}software catalog (not as a path name component) by swinstall.
If this attribute exists there should also be a
@b{vendor} object in the PSF in the distribution object that has this tag.
This attribute is assigned the value of RPMTAG@t{_}RELEASE by
swpackage when translating an RPM.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{architecture}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

This string is one of the version attributes.  It is used to disambiguate
products that have the same @b{tag}, @b{revision} and @b{vendor@t{_}tag}.  It is not used for determining a products
compatibility with a host.
The form is implementation defined.
swbis uses the output of GNU @b{config.guess} as the value of
this string.  A wildcard pattern should not be used.
The canonical swbis architecture string can be
listed with @b{swlist}. For example
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
swlist -a architecture @@ localhost@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

 Here are some example outputs from real systems.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display
    System      `uname -srm`              architecture
Red Hat 8.0:  Linux 2.4.18 i686        i686-pc-linux-gnu
OpenSolaris:  SunOS 5.11 i86pc         i386-pc-solaris2.11
NetBSD 3.1:   NetBSD 3.1 i386          i386-unknown-netbsdelf3.1
Red Hat 4.1:  Linux 2.0.36 i586        i586-pc-linux-gnulibc1

@comment WARNING: man/man5/sw.5:1453:%%new font R started without closing previous font R

Debian 3.1:   Linux 2.6.8-2-386 i686   i686-pc-linux-gnu}
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .PP

@b{os@t{_}name}
@b{os@t{_}release}
@b{os@t{_}version}
@b{machine@t{_}type}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

These attributes are used to determine compatibility with a host.
They correspond to the @b{uname} attributes defined by POSIX.1.
If an value is nil or non-existent it is assumed to match the host.
All attributes must match for there to be compatibility.  Distributors may
wish to make these values a shell pattern in their PSF's so to match
the intended collection of hosts.
swbis uses @b{fnmatch} (with FLAGS=0) to determine a match.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------

@comment TROFF INPUT: .SS "o Fileset Attributes"
@comment MAN2TEXI: EON

@node o Fileset Attributes

@subsection o Fileset Attributes

@comment TROFF INPUT: .PP

A @b{fileset} defines the fileset.
@comment TROFF INPUT: .br
@comment .br
@comment TROFF INPUT: .PP

@b{tag}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

@i{tag} is the short, file system friendly, name of the fileset.
It is required although selection of filesets is  not yet supported therefore the end user
will have little to do with the fileset tag.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP

@b{control@t{_}directory}
@comment TROFF INPUT: .RS

@c ---------------------------------------------------------------------
@quotation

Is the directory name in the product under which the fileset contents are located.
This value has no affect on the installed software catalog.  If it is not given in a PSF
then the
@i{tag} is used.
@comment TROFF INPUT: .RE

@end quotation

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .SS "o Example Source Package PSF"
@comment MAN2TEXI: EON

@node o Example Source Package PSF

@subsection o Example Source Package PSF

@comment TROFF INPUT: .PP

This PSF packages every file is current directory. It uses nil control directories
so the package structure does not change relative to a vanilla tarball.
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
 distribution
   description "fooit - a program from fooware
that does everything."
   title "fooit - a really cool program"
   COPYING < /usr/local/fooware/legalstuff/COPYING
 vendor
   the@t{_}term@t{_}vendor@t{_}is@t{_}misleading false
   tag fooware
   title fooware Consultancy Services, Inc.
   description ""
 vendor
   the@t{_}term@t{_}vendor@t{_}is@t{_}misleading true
   tag myfixes1
   title Bug fixes, Set 1
   description "a place for more detailed description"
 product
   tag fooit
   control@t{_}directory ""
   revision 1.0
   vendor@t{_}tag myfixes1  # Matches the vendor object above
 fileset
    tag fooit-SOURCE
    control@t{_}directory ""
    directory .
    file *
    exclude catalog@r{
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP


@comment TROFF INPUT: .SS "o Example Runtime (Binary) Package PSF"
@comment MAN2TEXI: EON

@node o Example Runtime (Binary) Package PSF

@subsection o Example Runtime (Binary) Package PSF

@comment TROFF INPUT: .PP

This is a sample PSF for a runtime package.  It implies multiple products (e.g. sub-packages)
using the bundle.contents attribute.  Since the bundle and product tags exist in a un-regulated
namespace and are seen by end users they should be carefully chosen.   Note that the bundle
and product have the same tag which may force downstream users to disambiguate using software
selection syntax such as fooit,bv=* or fooit,pv=* .
@comment TROFF INPUT: .PP

@comment TROFF INPUT: .nf

@c ---------------------------------------------------------------------
@display

@comment TROFF INPUT: .br
@comment .br
 distribution
   description "fooit - a program from fooware
that does everything."
   title "fooit - a really cool program"
   COPYING < /usr/local/fooware/legalstuff/COPYING

     vendor
        the@t{_}term@t{_}vendor@t{_}is@t{_}misleading false
        tag fooware
        title fooware Consultancy Services, Inc.
        description "Provider of the programs
 that do everything"

     vendor
        the@t{_}term@t{_}vendor@t{_}is@t{_}misleading true
         tag fw0
         title fooware fixes
         description "More fixes from the fooware users"

#  Bundle definition:  Use a bundle
     bundle
         tag fooit
         vendor@t{_}tag fooware
         contents fooit,v=fw0 fooit-devel fooit-doc

#  Product definition:
     product
         tag fooit   # This is the package name
         revision 1.0 # This is the package version
         vendor@t{_}tag fw0 # This is a release name e.g. RPMTAG@t{_}RELEASE
         postinstall scripts/postinstall
     fileset
          tag fooit-RUN
          file doc/man/man1/fooit.1 /usr/man/man1/fooit.1

@comment WARNING: man/man5/sw.5:1577:%%new font R started without closing previous font R

          file src/fooit /usr/bin/fooit}
@comment TROFF INPUT: .fi

@end display

@c ---------------------------------------------------------------------
@comment TROFF INPUT: .PP


@comment TROFF INPUT: .SH "APPLICABLE STANDARDS"
@comment MAN2TEXI: EON

@node APPLICABLE STANDARDS

@section APPLICABLE STANDARDS

@comment TROFF INPUT: .PP

IEEE Std 1387.2-1995 (Identical to ISO 15068-2:1999),
Open Group CAE C701
@comment TROFF INPUT: .SH "SEE ALSO"
@c DEBUG: print_menu("APPLICABLE STANDARDS")
@comment MAN2TEXI: EON

@node SEE ALSO

@section SEE ALSO

 XDSA C701 http://www.opengroup.org/publications/catalog/c701.htm
@comment TROFF INPUT: .br
@comment .br
 swbisparse(1) -- An implementation extension parser utility.
@comment TROFF INPUT: .br
@comment .br
 swcopy(8)
 swinstall(8)
 swpackage(5)
 swpackage(8)
 swverify(8)
@comment TROFF INPUT: .SH "IDENTIFICATION"
@c DEBUG: print_menu("SEE ALSO")
@comment MAN2TEXI: EON

@node IDENTIFICATION

@section IDENTIFICATION

 Copyright (C) 2005 Jim Lowe
 Version: 1.12
 Last Updated: 2006-01
 Copying Terms: GNU Free Documentation License
@comment TROFF INPUT: .SH "BUGS"
@c DEBUG: print_menu("IDENTIFICATION")
@comment MAN2TEXI: EON

@node BUGS

@section BUGS

@comment TROFF INPUT: .PP

None
@comment  created by instant / docbook-to-man, Sun 27 Jul 2014, 20:44
@bye
