NAME
OpenBSD::PackingElement - "pkg_add(1)" packing-elements object hierarchy
SYNOPSIS
package OpenBSD::PackingElement;sub method{}package OpenBSD::PackingElement::Depend;sub method{my ($self, @args) = @_;# do something}package main;use OpenBSD::PackingList;$plist = OpenBSD::PackingList->fromfile($filename);$plist->visit('method', @args);
DESCRIPTION
"OpenBSD::PackingElement" is the base class for all elements in a packing-list (see OpenBSD::PackingList(3p) and pkg_create(1)).
Manipulation of packing-lists mostly occurs through visitor patterns such as "OpenBSD::PackingList::visit": client code defines a method for each relevant class in the hierarchy and calls "$plist->visit('method')" to perform the processing.
Most actual objects have one property: their "name".
- ::Meta
-
base class for all meta information that can be reordered at will.
- ::Unique
-
meta information with uniqueness properties.
- ::Arch
-
architecture requirements.
- ::ExtraInfo
-
some unique properties, like
"PKGPATH"and allowed-for-ftp status.
- ::Name
-
the package name.
- ::LocalBase
-
the local base for the package.
- ::NoDefaultConflict
-
special annotation that package should not have any
"stem-*"conflict marker.
- ::SpecialFile
-
special files like the package description or install script.
- ::FCONTENTS
-
contents file.
- ::FDESC
-
package description.
- ::DisplayFile
-
abstract class for special files that can be displayed. provides method
prepare($state)to display the file.- ::FDISPLAY
-
message displayed during package install.
- ::FUNDISPLAY
-
message displayed during package uninstall.
- ::Option
-
factory for
@option
- ::Comment
-
comments in the packing-lists. The constructor is actually a factory, since some comments evolve to some other class.
- ::CVSTag
-
special class of comments that get reordered to the front of packing-lists.
- ::Depend
-
all dependency information.
- ::Wantlib
-
shared library needed for the package.
- ::Dependency
-
package needed, with the following properties:
"pkgpath"is the path used to create the dependency,"pattern"is the OpenBSD::PkgSpec(3p) pattern used to match the dependency,"def"is the default value of the dependency computed during build, to use for comparing package signatures and to fulfill default dependencies.
- ::Conflict
-
conflict information.
- ::Annotation
-
stuff that doesn't really exist as objects, but is used to add properties to objects.
- ::Ignore
-
mark next object as ignored.
- ::sha
-
mark last file with a checksum.
- ::size
-
mark last file with a size.
- ::symlink
-
mark last file as a symlink.
- ::hardlink
-
mark last file as a hardlink.
- ::temp
-
mark last file with a temporary name. Used during extraction of packages for replacement.
- ::Object
-
somewhat concrete elements in packing-lists. This is the base class for objects with a location in the filesystem. It defineds method
"fullname", to access the complete name of the object.Note that all objects with file names use relative names except for
"::Extra","::Sample"and"::Sampledir"- ::FileObject
-
abstract class corresponding to files and directories. Default constructor depends on a
"dirclass"property, that may create objects from another class if their name ends with a"/". The full object name is normally computed relative to the current working directory as set in"::State".- ::FileBase
-
abstract class for files.
- ::File
-
actual file objects present in the packing-list.
- ::InfoFile
-
GNU info file objects.
- ::Shell
-
files with shell properties.
- ::Manpage
-
man pages.
- ::Lib
-
shared library files.
- ::Sample
-
file objects not present in the packing-list.
- ::DirlikeObject
-
abstract class for directories.
- ::DirRm
-
deprecated.
- ::DirBase
-
- ::Dir
-
normal directory, with specialized versions.
- ::Infodir
-
directory holds GNU info files.
- ::Fontdir
-
directory holds X11 fonts.
- ::Mandir
-
directory is the root of a set of manpages.
- ::Sampledir
-
directory is used to hold configuration files or similar objects.
- ::Action
-
stuff that performs some action during addition/removal of package.
- ::NewAuth
-
- ::NewUser
-
user that needs to be created for the package to work.
- ::NewGroup
-
group that needs to be created for the package to work.
- ::ExeclikeAction
-
escape mechanism for embedded code that needs to be run.
- ::Exec
-
code to run during installation.
- ::Unexec
-
code to run during deinstallation.
- ::Extraunexec
-
extra code to run during deinstallation with -c.
- ::State
-
annotation-like stuff that can't be easily moved around because it influences surrounding objects (mostly derived from
"::FileObject").- ::Cwd
-
change the current working directory.
- ::Owner
-
change the current file owner.
- ::Group
-
change the current file group.
- ::Mode
-
change the current file mode.
CAVEATS
Some aspects of this API are likely to change in the future, although the basic class hierarchy is now more or less worked out.