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

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

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

NNAAMMEE #

 OpenBSD::PackingElement - "pkg_add(1)" packing-elements object hierarchy

SSYYNNOOPPSSIISS #

     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);

DDEESSCCRRIIPPTTIIOONN #

 "OpenBSD::PackingElement" is the base class for all elements in a
 packing-list (see OOppeennBBSSDD::::PPaacckkiinnggLLiisstt(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
             OOppeennBBSSDD::::PPkkggSSppeecc(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.

CCAAVVEEAATTSS #

 Some aspects of this API are likely to change in the future, although the
 basic class hierarchy is now more or less worked out.

perl v5.36.3 2020-12-20 OpenBSD::PackingElement(3p)