Thanks for the replies, Danek and Shawn.  Below is what I have included
in the doc I am preparing.  A few things to highlight:

 - this all relates to how a pkg FMRI would formally be written as
   an nvlist and should just reflect how pkg FMRI strings are already
   used in practice while conforming to the protocol spec

 - I defined SVR4 pkg scheme as scheme version 0, and that for IPS
   as scheme version 1.  Scheme version is required in the protocol.

 - While it is just an IPS publisher that constitutes the authority
   information, this is embedded within the 'authority' nvlist
   in the FMRI definition;  that just to match existing FMRI schemes.

   Other authority members in use in the protocol are server-id
   (the hostname), {chassis,product,domain,host}-id and product-sn.
   While you'd never render this in a pkg FMRI string on the cmdline
   they do have their standard used - eg if we transmit the FMRI
   to a fault manager in another domain then attaching the hostname
   we started on is valuable (and required in the protocol).

 - I have claimed that publisher is required for a full identification
   of a package in a formal FMRI.  My understanding is that where
   publisher is absent that implies a search through known publishers,
   but that's just a convenience semantic and to specify a package
   in full you must include the publisher.

A.3.10 "pkg" FMRI scheme

        Scheme version 0, defined in [1], corresponds to SVR4 packaging:

        Member Name             Data Type       Stability
        ----------------------- --------------- --------------------
        version (0)             uint8           Committed
        scheme ("pkg")                string          Committed
        authority               nvlist          See A.3.1
        pkg-basedir             string          Committed
        pkg-inst                string          Committed
        pkg-version             string          Committed

        String form:

        pkg://[authstr]/<pkg-name>/:version=<pkg-version>
        
        Scheme version 1 corresponds to IPS packaging:

        Member Name             Data Type       Stability
        ----------------------- --------------- --------------------
        version (1)             uint8           Committed
        scheme ("pkg")                string          Committed
        authority               nvlist          See below
        pkg-name                string          Committed
        [pkg-version]           nvlist          Committed

        The 'authority' nvlist is supplemented to specify
        the package publisher (see pkg(5)):

        Member Name             Data Type       Stability
        ----------------------- --------------- --------------------
        publisher               string          Committed

        The 'pkg-version' is defined as follows:

        Member Name             Data Type       Stability
        ----------------------- --------------- --------------------
        release                 string          Committed
        [built-on]              string          Committed
        [branch]                string          Committed
        [timestamp]             string          Committed

        While 'authority' also includes the publisher name we continue
        to embed it within a separate 'authority' nvlist to match all
        other FMRI definitions.  While the publisher name is optional
        on some command line sequences for pkg(5) (implying a search through
        known publishers, for instance) it is not optional when fully
        identifying a package in a formal FMRI.

        The 'pkg-name' is the actual name (stem) of the package.

        The 'release' is the primary version of the component, written
        as a dotsequence string (an arbitrary-length, dot-separated series
        of non-zero-leading decimal digits).

        The 'built-on' value is the OS version on which the component was
        built, again specified as a dotsequence.

        The 'branch' specified the source branch version, as a dotsequence.

        The 'timestamp' in an ISO8601 date string "YYYYMMDDTHHMMSSZ"

        String form:

                pkg://[pkgauthstr]/<pkg-name>
                    [@<release>[,<built-on>][-<branch>][:<timestamp>]

                pkgauthstr = <publisher> authstr

        (where earlier in the doc we have)

        authstr = [:server-id=<server-id>]
                                [:chassis-id=<chassis-id>]
                                [:product-sn=<product-sn>]
                                [:product-id=<product-id>]
                                [:domain-id=<domain-id>]
                                [:host-id=<host-id>]

Thanks

Gavin
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to