OpenBSD::PackingElement(3p) | Perl Programmers Reference Guide | OpenBSD::PackingElement(3p)

# 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.

2020-12-20 | perl v5.40.1