100 This will allow the next step to resolve all dependencies to their proper |
100 This will allow the next step to resolve all dependencies to their proper |
101 package(s). |
101 package(s). |
102 |
102 |
103 Dependencies Resolved |
103 Dependencies Resolved |
104 The manifest with unresolved dependencies is passed through pkgdepend(1) |
104 The manifest with unresolved dependencies is passed through pkgdepend(1) |
105 again to resolve dependencies against the package repositories. The |
105 again to resolve dependencies against the package repositories. The result |
106 result is a manifest that is suitable for publication. All these |
106 is a manifest that is suitable for publication. All these manifests are |
107 manifests are processed together in a single step, which is more |
107 processed together in a single step, which is more efficient than resolving |
108 efficient than resolving dependencies in each manifest separately. |
108 dependencies in each manifest separately. While each manifest ends up with |
109 While each manifest ends up with a .depend.res copy in the build |
109 a .depend.res copy in the build directory, the umbrella dependency |
110 directory, the umbrella dependency resolution target is |
110 resolution target is {build-dir}/.resolved-$(MACH). |
111 {build-dir}/.resolved-$(MACH). |
111 |
|
112 The resolution step is also set up to use the -e flag to pkgdepend resolve, |
|
113 which limits the set of packages it looks at to resolve the dependencies it |
|
114 generated in the previous step. This makes the resolution step a great deal |
|
115 faster, but requires that you keep a static list of these packages checked |
|
116 into the workspace, and update it when packages are added to it. Having |
|
117 extra packages in there is safe. |
|
118 |
|
119 In order to create this list, build and publish your component (or at least |
|
120 through the resolution stage) without a file "resolve.deps" in the component |
|
121 directory, and run "gmake sample-resolve.deps". If the file is empty (that |
|
122 is, no computed dependencies were found), a warning will be emitted and the |
|
123 file will be removed, as pkgdepend currently errors out in that case. |
|
124 |
|
125 To test, run "gmake clean" and re-publish. |
|
126 |
|
127 Don't forget to "hg add resolve.deps"! |
|
128 |
|
129 Note that there is a possibility the list of dependencies will be different |
|
130 on different architectures, so you should run this on both sparc and x86, |
|
131 and combine the two lists. Please keep the files sorted. |
112 |
132 |
113 Manifest Validation |
133 Manifest Validation |
114 The resolved manifest(s) and prototype install tree are passed through |
134 The resolved manifest(s) and prototype install tree are passed through |
115 a set of validations. This includes running pkglint(1), comparing the |
135 a set of validations. This includes running pkglint(1), comparing the |
116 manifest content to the prototype install tree, and validation of the file |
136 manifest content to the prototype install tree, and validation of the file |