@c Copyright (C) 2004 Jim Lowe
@c This is part of the swbis manual.
@c For copying conditions, see the file gcc.texi.

@node Status
@chapter What features are working?

In summary, alot is working and alot is not. 

@command{swpackage} is the most complete utility. It implements all
of the ISO/IEC 15068-2 features of the Product Specification File,
the input file of @command{swpackage}.

@command{swpackage} can create POSIX tar archives with a POSIX
file layout with an embedded GPG signature and
payload digest (md5 and sha1).  This capability is
mature and safe, but for those who are paranoid about
using a new tool to create archives of your data, there
is @command{swign}. @command{swign} signs the current working directory, presumably
a directory containing your source tree, and then uses @command{tar} to emit the archive.
The result is a package, created by GNU tar, which looks like a
source tar archive with a leading directory.  The archive has 
the ./catalog/ directory which contains the package metadata,
GPG signature and digests which are stored as separate regular files,
and as ascii text of course.

@command{swinstall} is usable though missing some Posix features.  Control script
execution is implemented for checkinstall, preinstall, and postinstall.
Dependency checks are not implemented.  Only packages with one product and one fileset
are supported.  @command{swinstall} can install RPM packages on/to hosts that have neither
@command{rpm} nor @command{swinstall}.

@command{swcopy} is usable though missing lots of POSIX capability.
It can be used to translate an RPM to a POSIX package with a single path name prefix.
It can unpack and copy archives from host to host.

@command{swverify} is usable though missing lots of POSIX capability.
It most stable feature is verifying signed tar archives (i.e. packages
signed according to how GNU swpackage does it).  The ability to
verify the GPG signature and file metadata of installed software (as opposed to
the compressed tarball) is a work in progress.

Below is more detail about current capabilities.

@itemize @bullet

@item
Installing POSIX packages

Command: @command{swinstall}

@command{swinstall} is missing many features but it is useful
for packages with a single fileset and product and if control
script execution is not required.  It can install RPMs to the
local or a remote host (but the postinst script will not be
executed.)

@item
Copying POSIX packages

Command: @command{swcopy}

@command{swcopy} is missing many features specified in the POSIX
spec.  Several degenerative basic features work and can be useful.
It can unpack compressed tar archives handling compression transparently.
It can copy directories from host to host.
It can be used as a copying tool for arbitrary data, however this is not
its intended application.  Unfortunately, many of its intended uses don't
work yet.

@item
Handling RPM Packages

Command: @command{swinstall}  or @command{swcopy}

@command{swcopy} can translate RPMs to a tar archive.  This is useful for
installing the contents of a source RPM into a single directory.

@command{swinstall} can install a RPM as a POSIX package (i.e by translating
first).

@item
Package Creation

Command: @command{swpackage} 

@command{swpackage} is at a beta release level.  It supports
all Product Specification File (PSF) features in the IEEE spec.

@item
Package Verification

Command: @command{swverify} 

@command{swverify} is used to verify the payload digests and
GPG signature (if any) of a POSIX package (i.e. tar archive in POSIX format).
Currently, @command{swverify} does not completely
implement verification of installed software.

@item
Creating GPG Signed Source Packages.

Command: @command{swign} 

@command{swign} is a ad-hoc implementation extension utility.

@command{swign} is used to create a GPG signed POSIX package
from the contents of the current directory.  The intended use
is for creation of signed source tar archives.

It is a shell script that uses @command{swpackage} and @command{gpg} and
GNU @command{tar}.  Since the created archive is written to
stdout by GNU @command{tar} and makes sanity checks using 
standard utilities it is safe to use.

@end itemize

