Source code file content
16431724 Adjust how license text and Oracle internal tracking numbers are propagated
Size: 5288 bytes, 1 line
Userland Consolidation Packaging Guidelines.
Each component that integrates into the Userland consolidation must have at
least one package manifest that describes the content to be delivered. In some
cases components *may* deliver through multiple packages. Canonical component
package manifests must be placed in the component's build directory. They also
must be named *.p5m.
In order to understand what must go in the content of a package manifest,
it's useful to have an understanding of how a canonical manifest is transformed
into a final manifest used for package publication. Manifest transformation
takes the following basic path:
mangled manifest file contents
The canonical manifest contains actions that can't otherwise be generated
automatically from the data encapsulated in the component Makefile, gate
transformations, build tree, and packaging tools. This includes actions
for license information, some path related attributes, legacy actions,
non-discoverable dependencies, users, groups, drivers, and others.
Actions that are associated with objects that are specific to a single
architecture should be tagged with a 'variant.arch' attribute specific to
the architecture that applied to the action. Ex:
file path=/usr/lib/$(MACH64)/libx86onlybits.so variant.arch=i386
Actions for editable files must include an appropriate 'preserve' attribute:
file path=etc/gnu/a2ps.cfg preserve=true mode=0644
license actions should be placed in the canonical manifest.
The canonical manifest is combined with a set of the transforms
in $(WS_TOP)/transforms, and a set of macros to more complete
package manifest using pkgmogrify(1). The transforms apply default
attributes to the various actions in the canonical manifest(s). More
detail about the attributes can be found in the transform file themselves.
The macros applied at the time of mogrification are as follows:
The mogrified manifest and the prototype install tree are passed through
pkgdepend(1) to generate a set of dependencies for the package content.
These dependencies are only those that "pkgdepend generate" can determine
on its own. Additional dependencies that cannot be automatically
determined by pkgdepend(1) should be placed in the canonical manifest.
Statically defined dependencies should be described in a canonical manifest
in an unresolved form (ie. the form generated by "pkgdepend generate").
depend fmri=__TBD pkg.debug.depend.file=etc/passwd \
depend fmri=__TBD pkg.debug.depend.file=sh \
This will allow the next step to resolve all dependencies to their proper
The manifest with unresolved dependencies is passed through pkgdepend(1)
again to resolve dependencies against the package repositories. The
result is a manifest that is suitable for publication. All these
manifests are processed together in a single step, which is more
efficient than resolving dependencies in each manifest separately.
While each manifest ends up with a .depend.res copy in the build
directory, the umbrella dependency resolution target is
The resolved manifest(s) and prototype install tree are passed through
a set of validations. This includes running pkglint(1), comparing the
manifest content to the prototype install tree, and validation of the file
content of the prototype install tree. Any anomalies are reported.
Content validation is performed by extension to pkglint(1) in
Once manifest validation has occurred, the package(s) is/are finally
published to the workspace package repository.
# vi:set fdm=marker expandtab ts=4: