unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

prototype(4)                     File Formats                     prototype(4)



NAME
       prototype - package information file

DESCRIPTION
       prototype  is  an  ASCII file used to specify package information. Each
       entry in the file describes a single deliverable object. An object  may
       be  a  data  file,  directory,  source  file, executable object, and so
       forth. This file is generated by the package developer.

       Entries in a prototype file consist of several  fields  of  information
       separated  by  white  space.  Comment  lines begin with a ``#'' and are
       ignored. The fields are described below and must appear  in  the  order
       shown.

       part            An  optional field designating the part number in which
                       the object resides. A part is a collection of files and
                       is  the  atomic unit by which a package is processed. A
                       developer can choose criteria for grouping files into a
                       part  (for  example,  based on class). If this field is
                       not used, part 1 is assumed.



       ftype           A one-character field that  indicates  the  file  type.
                       Valid values are:

                       b        block special device




                       c        character special device



                       d        directory



                       e        a  file  to  be  edited  upon  installation or
                                removal (may be shared by several packages)



                       f        a standard executable or data file



                       i        installation script or information file



                       l        linked file



                       p        named pipe



                       s        symbolic link



                       v        volatile file (one whose contents are expected
                                to change, like a log file)



                       x        an exclusive directory accessible only by this
                                package




       class           The installation class to which the file belongs.  This
                       name  must  contain only alphanumeric characters and be
                       no longer than 12 characters. The field is  not  speci-
                       fied  for  installation scripts. (admin and all classes
                       beginning  with  capital  letters  are  reserved  class
                       names.)



       pathname        The  pathname  where the file will reside on the target
                       machine, for example,  /usr/bin/mail  or  bin/ras/proc.
                       Relative  pathnames  (those  that  do  not begin with a
                       slash) indicate that the file is relocatable. The form



                       path1=path2

                       may be used for two purposes: to define a link  and  to
                       define local  pathnames.

                       For  linked  files,  path1 indicates the destination of
                       the link and path2 indicates  the  source  file.  (This
                       format is mandatory for linked files.)

                       For  local  pathnames,  path1 indicates the pathname an
                       object should have on the machine where the entry is to
                       be  installed  and path2 indicates either a relative or
                       fixed pathname to a file on the host machine which con-
                       tains the actual contents.

                       A  pathname may contain a variable specification of the
                       form $variable. If variable begins with  a  lower  case
                       letter, it is a build variable. If variable begins with
                       an upper case letter, it is an install variable.  Build
                       variables  are bound at build time. If an install vari-
                       able is known at build time, its definition is inserted
                       into  the  pkginfo(4) file so that it will be available
                       at install time. If an install variable is not known at
                       build time, it will be bound at install time.



       major           The  major  device  number. The field is only specified
                       for block or character special devices.



       minor           The minor device number. The field  is  only  specified
                       for block or character special devices.



       mode            The octal mode of the file (for example, 0664). A ques-
                       tion mark (?) indicates that  the  mode  will  be  left
                       unchanged, implying that the file already exists on the
                       target machine. This field is not used for linked files
                       or packaging information files.

                       The  mode  can  be a variable specification of the form
                       $variable. If variable begins with a lower case letter,
                       it  is  a  build  variable.  If variable begins with an
                       upper case letter, it is  an  install  variable.  Build
                       variables  are bound at build time. If an install vari-
                       able is known at build time, its definition is inserted
                       into  the  pkginfo(4) file so that it will be available
                       at install time. If an install variable is not known at
                       build time, it will be bound at install time.



       owner           The  owner  of the file (for example, bin or root). The
                       field is limited to 14 characters in length. A question
                       mark   (?)  indicates  that  the  owner  will  be  left
                       unchanged, implying that the file already exists on the
                       target machine. This field is not used for linked files
                       or packaging information files.

                       The owner can be a variable specification of  the  form
                       $variable. If variable begins with a lower case letter,
                       it is a build variable.  If  variable  begins  with  an
                       upper  case  letter,  it  is an install variable. Build
                       variables are bound at build time. If an install  vari-
                       able is known at build time, its definition is inserted
                       into the pkginfo(4) file so that it will  be  available
                       at install time. If an install variable is not known at
                       build time, it will be bound at install time.



       group           The group to which the file belongs (for  example,  bin
                       or  sys).  The  field  is  limited  to 14 characters in
                       length. A question mark (?) indicates  that  the  group
                       will  be left unchanged, implying that the file already
                       exists on the target machine. This field  is  not  used
                       for linked files or packaging information files.

                       The  group  can be a variable specification of the form
                       $variable. If variable begins with a lower case letter,
                       it  is  a  build  variable.  If variable begins with an
                       upper case letter, it is  an  install  variable.  Build
                       variables  are bound at build time. If an install vari-
                       able is known at build time, its definition is inserted
                       into  the  pkginfo(4) file so that it will be available
                       at install time. If an install variable is not known at
                       build time, it will be bound at install time.



       An  exclamation point (!) at the beginning of a line indicates that the
       line contains a command. These commands are used to  incorporate  files
       in  other  directories, to locate objects on a host machine, and to set
       permanent defaults. The following commands are available:

       search          Specifies a list of  directories  (separated  by  white
                       space)  to search for when looking for file contents on
                       the host machine. The base name of the  path  field  is
                       appended  to  each  directory in the ordered list until
                       the file is located. Searches are not recursive.



       include         Specifies a pathname which points to another  prototype
                       file  to include. Note that search requests do not span
                       include files.



       default         Specifies a list of attributes (mode, owner, and group)
                       to  be  used by default if attribute information is not
                       provided for prototype entries which require the infor-
                       mation. The defaults do not apply to entries in include
                       prototype files.



       param=value     Places the indicated parameter in the current  environ-
                       ment. Spans to subsequent included prototype files.



       The  above  commands  may  have  variable substitutions embedded within
       them, as demonstrated in the two example prototype files below.

       Before files are overwritten during installation, they are copied to  a
       temporary  pathname.  The  exception  to  this rule is files whose mode
       includes execute permission, unless the  file  is  editable  (that  is,
       ftype  is e). For files which meet this exception, the existing version
       is linked to a temporary pathname, and the original  file  is  removed.
       This  allows  processes  which  are executing during installation to be
       overwritten.

EXAMPLES
       Example 1: Example 1:

       !PROJDIR=/usr/proj
       !BIN=$PROJDIR/bin
       !CFG=$PROJDIR/cfg
       !LIB=$PROJDIR/lib
       !HDRS=$PROJDIR/hdrs
       !search /usr/myname/usr/bin /usr/myname/src /usr/myname/hdrs
       i pkginfo=/usr/myname/wrap/pkginfo
       i depend=/usr/myname/wrap/depend
       i version=/usr/myname/wrap/version
       d none /usr/wrap 0755 root bin
       d none /usr/wrap/usr/bin 0755 root bin
       ! search $BIN
       f none /usr/wrap/bin/INSTALL 0755 root bin
       f none /usr/wrap/bin/REMOVE 0755 root bin
       f none /usr/wrap/bin/addpkg 0755 root bin
       !default 755 root bin
       f none /usr/wrap/bin/audit
       f none /usr/wrap/bin/listpkg
       f none /usr/wrap/bin/pkgmk
       # the following file starts out zero length but grows
       v none /usr/wrap/logfile=/dev/null 0644 root bin
       # the following specifies a link (dest=src)
       l none /usr/wrap/src/addpkg=/usr/wrap/bin/rmpkg
       ! search $SRC
       !default 644 root other
       f src /usr/wrap/src/INSTALL.sh
       f src /usr/wrap/src/REMOVE.sh
       f src /usr/wrap/src/addpkg.c
       f src /usr/wrap/src/audit.c
       f src /usr/wrap/src/listpkg.c
       f src /usr/wrap/src/pkgmk.c
       d none /usr/wrap/data 0755 root bin
       d none /usr/wrap/save 0755 root bin
       d none /usr/wrap/spool 0755 root bin
       d none /usr/wrap/tmp 0755 root bin
       d src /usr/wrap/src 0755 root bin

       Example 2: Example 2:

       # this prototype is generated by 'pkgproto' to refer
       # to all prototypes in my src directory
       !PROJDIR=/usr/dew/projx
       !include $PROJDIR/src/cmd/prototype
       !include $PROJDIR/src/cmd/audmerg/protofile
       !include $PROJDIR/src/lib/proto

SEE ALSO
       pkgmk(1), pkginfo(4)

       Application Packaging Developer's Guide

NOTES
       Normally, if a file is defined in  the  prototype  file  but  does  not
       exist,  that  file is created at the time of package installation. How-
       ever, if the file pathname includes a directory that  does  not  exist,
       the  file  will  not be created. For example, if the prototype file has
       the following entry:


              f none /usr/dev/bin/command


       and that file does not exist, it  will  be  created  if  the  directory
       /usr/dev/bin  already  exists  or  if  the  prototype also has an entry
       defining the directory:


              d none /usr/dev/bin




SunOS 5.10                        4 Oct 1996                      prototype(4)