27 dependencies generated |
27 dependencies generated |
28 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.depend) |
28 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.depend) |
29 | |
29 | |
30 v |
30 v |
31 dependencies resolved |
31 dependencies resolved |
32 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.resolved) |
32 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.depend.res) |
33 | |
33 | |
34 v |
34 v |
35 manifest validation |
35 manifest validation |
36 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.linted) |
36 (.../{component}/{build-dir}/.linted-$(MACH)) |
37 | |
37 | |
38 v |
38 v |
39 publication manifest |
39 publication manifest |
40 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.published) |
40 (.../{component}/{build-dir}/manifest-$(MACH)-{component}.published) |
41 | |
41 | |
46 Canonical Manifest |
46 Canonical Manifest |
47 The canonical manifest contains actions that can't otherwise be generated |
47 The canonical manifest contains actions that can't otherwise be generated |
48 automatically from the data encapsulated in the component Makefile, gate |
48 automatically from the data encapsulated in the component Makefile, gate |
49 transformations, build tree, and packaging tools. This includes actions |
49 transformations, build tree, and packaging tools. This includes actions |
50 for license information, some path related attributes, legacy actions, |
50 for license information, some path related attributes, legacy actions, |
51 non-discoverable dependencies, user, group, driver, and others. |
51 non-discoverable dependencies, users, groups, drivers, and others. |
52 |
52 |
53 Actions that are associated with objects that are specific to a single |
53 Actions that are associated with objects that are specific to a single |
54 architecture should be tagged with a 'variant.arch' attribute specific to |
54 architecture should be tagged with a 'variant.arch' attribute specific to |
55 the architecture that applied to the action. Ex: |
55 the architecture that applied to the action. Ex: |
56 file path=/usr/lib/$(MACH64)/libx86onlybits.so variant.arch=i386 |
56 file path=/usr/lib/$(MACH64)/libx86onlybits.so variant.arch=i386 |
83 |
83 |
84 Dependencies Generated |
84 Dependencies Generated |
85 The mogrified manifest and the prototype install tree are passed through |
85 The mogrified manifest and the prototype install tree are passed through |
86 pkgdepend(1) to generate a set of dependencies for the package content. |
86 pkgdepend(1) to generate a set of dependencies for the package content. |
87 These dependencies are only those that "pkgdepend generate" can determine |
87 These dependencies are only those that "pkgdepend generate" can determine |
88 on it's own. Additional dependencies that can not be automatically |
88 on its own. Additional dependencies that cannot be automatically |
89 determined by pkgdepend(1) should be placed in the canonical manifest. |
89 determined by pkgdepend(1) should be placed in the canonical manifest. |
90 Statically defined dependencies should be described in a canonical manifest |
90 Statically defined dependencies should be described in a canonical manifest |
91 in an unresolved form (ie. the form generated by "pkgdepend generate"). |
91 in an unresolved form (ie. the form generated by "pkgdepend generate"). |
92 Ex: |
92 Ex: |
93 depend fmri=__TBD pkg.debug.depend.file=etc/passwd \ |
93 depend fmri=__TBD pkg.debug.depend.file=etc/passwd \ |
100 |
100 |
101 This will allow the next step to resolve all dependencies to their proper |
101 This will allow the next step to resolve all dependencies to their proper |
102 package(s). |
102 package(s). |
103 |
103 |
104 Dependencies Resolved |
104 Dependencies Resolved |
105 The manifest with unresovled dependencies is passed through pkgdepend(1) |
105 The manifest with unresolved dependencies is passed through pkgdepend(1) |
106 again to resolve dependencies against the package repositories. The |
106 again to resolve dependencies against the package repositories. The |
107 result is a manifest that is suitable for publication. |
107 result is a manifest that is suitable for publication. All these |
|
108 manifests are processed together in a single step, which is more |
|
109 efficient than resolving dependencies in each manifest separately. |
|
110 While each manifest ends up with a .depend.res copy in the build |
|
111 directory, the umbrella dependency resolution target is |
|
112 {build-dir}/.resolved-$(MACH). |
108 |
113 |
109 Manifest Validation |
114 Manifest Validation |
110 The resolved manifest(s) and prototype install tree are passed through |
115 The resolved manifest(s) and prototype install tree are passed through |
111 a set of validations. This includes running pkglint(1), comparing the |
116 a set of validations. This includes running pkglint(1), comparing the |
112 manifest content to the prototype install tree, and validation of the file |
117 manifest content to the prototype install tree, and validation of the file |
113 content of the prototype install tree. Any anomolies are reported. |
118 content of the prototype install tree. Any anomalies are reported. |
114 Content validation is performed by extension to pkglint(1) in |
119 Content validation is performed by extension to pkglint(1) in |
115 $(WS_TOP)/tools/python/userland-lint |
120 $(WS_TOP)/tools/python/userland-lint |
116 |
121 |
117 Publication. |
122 Publication. |
118 Once manifest validation has occurred, the package(s) is/are finally |
123 Once manifest validation has occurred, the package(s) is/are finally |