author | John Beck <John.Beck@Oracle.COM> |
Fri, 12 Sep 2014 13:40:49 -0700 | |
changeset 2089 | 99dd558dda74 |
parent 1907 | 446472de62e9 |
child 2142 | 813e4817e573 |
permissions | -rw-r--r-- |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
1 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
2 |
Userland Consolidation Packaging Guidelines. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
3 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
4 |
Each component that integrates into the Userland consolidation must have at |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
5 |
least one package manifest that describes the content to be delivered. In some |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
6 |
cases components *may* deliver through multiple packages. Canonical component |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
7 |
package manifests must be placed in the component's build directory. They also |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
8 |
must be named *.p5m. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
9 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
10 |
In order to understand what must go in the content of a package manifest, |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
11 |
it's useful to have an understanding of how a canonical manifest is transformed |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
12 |
into a final manifest used for package publication. Manifest transformation |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
13 |
takes the following basic path: |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
14 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
15 |
canonical manifest |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
16 |
(.../{component}/{component}.p5m) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
17 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
18 |
v |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
19 |
mogrified manifest |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
20 |
(.../{component}/{build-dir}/manifest-$(MACH)-{component}.mogrified) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
21 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
22 |
v |
181
87e11e685b1f
7003927 userland should postprocess packaged files
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
166
diff
changeset
|
23 |
mangled manifest file contents |
87e11e685b1f
7003927 userland should postprocess packaged files
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
166
diff
changeset
|
24 |
(.../{component}/{build-dir}/manifest-$(ARCH)-{component}.mangled) |
87e11e685b1f
7003927 userland should postprocess packaged files
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
166
diff
changeset
|
25 |
| |
87e11e685b1f
7003927 userland should postprocess packaged files
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
166
diff
changeset
|
26 |
v |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
27 |
dependencies generated |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
28 |
(.../{component}/{build-dir}/manifest-$(MACH)-{component}.depend) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
29 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
30 |
v |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
31 |
dependencies resolved |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
32 |
(.../{component}/{build-dir}/manifest-$(MACH)-{component}.depend.res) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
33 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
34 |
v |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
35 |
manifest validation |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
36 |
(.../{component}/{build-dir}/.linted-$(MACH)) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
37 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
38 |
v |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
39 |
publication manifest |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
40 |
(.../{component}/{build-dir}/manifest-$(MACH)-{component}.published) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
41 |
| |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
42 |
v |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
43 |
publication |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
44 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
45 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
46 |
Canonical Manifest |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
47 |
The canonical manifest contains actions that can't otherwise be generated |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
48 |
automatically from the data encapsulated in the component Makefile, gate |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
49 |
transformations, build tree, and packaging tools. This includes actions |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
50 |
for license information, some path related attributes, legacy actions, |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
51 |
non-discoverable dependencies, users, groups, drivers, and others. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
52 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
53 |
Actions that are associated with objects that are specific to a single |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
54 |
architecture should be tagged with a 'variant.arch' attribute specific to |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
55 |
the architecture that applied to the action. Ex: |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
56 |
file path=/usr/lib/$(MACH64)/libx86onlybits.so variant.arch=i386 |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
57 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
58 |
Actions for editable files must include an appropriate 'preserve' attribute: |
151
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
46
diff
changeset
|
59 |
file path=etc/gnu/a2ps.cfg preserve=true mode=0644 |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
60 |
|
1393
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
61 |
license actions should be placed in the canonical manifest, as should a |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
62 |
handful of other special actions noted in the "Manually generated actions" |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
63 |
section just below. |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
64 |
|
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
65 |
Manually generated actions |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
66 |
* com.oracle.info.description is a terse description of what utilities, |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
67 |
libraries and/or services the package provides. This should be short, |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
68 |
specific, concise text, identifying the technology covered by the |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
69 |
associated license(s). It should fit naturally in the sentence "This |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
70 |
package may contain XXX." For example, "XXX" might be "the tar command" |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
71 |
or "bzip2 compression software." When appropriate, this may begin with |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
72 |
"portions of" or another, more specific qualifying clause. |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
73 |
* com.oracle.info.tpno is the Oracle 3rd party license number. |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
74 |
* info.classification is "org.opensolaris.category.2008:FOO" where FOO |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
75 |
varies according to the sorts of utilities, libraries and/or services |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
76 |
that the package provides. Existing packages contain most useful |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
77 |
values; check them out to find the closest match. For a complete |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
78 |
list of allowed values, refer to the Solaris system file |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
79 |
/usr/share/lib/pkg/opensolaris.org.sections . |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
80 |
* org.opensolaris.arc-caseid is typically "PSARC/YYYY/###" and multiple |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
81 |
different values are allowed. |
300d3de848bb
16726438 manifest-metadata-template needs work
John Beck <John.Beck@Oracle.COM>
parents:
1235
diff
changeset
|
82 |
* pkg.summary is a short synopsis of what the package provides. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
83 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
84 |
Mogrified Manifest |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
85 |
The canonical manifest is combined with a set of the transforms |
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
86 |
in $(WS_TOP)/transforms, and a set of macros to more complete |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
87 |
package manifest using pkgmogrify(1). The transforms apply default |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
88 |
attributes to the various actions in the canonical manifest(s). More |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
89 |
detail about the attributes can be found in the transform file themselves. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
90 |
The macros applied at the time of mogrification are as follows: |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
91 |
$(MACH) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
92 |
$(MACH32) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
93 |
$(MACH64) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
94 |
$(PUBLISHER) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
95 |
$(CONSOLIDATION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
96 |
$(BUILD_VERSION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
97 |
$(SOLARIS_VERSION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
98 |
$(OS_VERSION) |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
99 |
$(IPS_COMPONENT_VERSION) |
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
100 |
$(COMPONENT_VERSION) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
101 |
$(COMPONENT_PROJECT_URL) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
102 |
$(COMPONENT_ARCHIVE_URL) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
103 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
104 |
Dependencies Generated |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
105 |
The mogrified manifest and the prototype install tree are passed through |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
106 |
pkgdepend(1) to generate a set of dependencies for the package content. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
107 |
These dependencies are only those that "pkgdepend generate" can determine |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
108 |
on its own. Additional dependencies that cannot be automatically |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
109 |
determined by pkgdepend(1) should be placed in the canonical manifest. |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
110 |
Statically defined dependencies should be described in a canonical manifest |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
111 |
in an unresolved form (ie. the form generated by "pkgdepend generate"). |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
112 |
Ex: |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
113 |
depend fmri=__TBD pkg.debug.depend.file=etc/passwd \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
114 |
pkg.debug.reason=usr/bin/vipw type=require |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
115 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
116 |
depend fmri=__TBD pkg.debug.depend.file=sh \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
117 |
pkg.debug.depend.path=usr/bin \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
118 |
pkg.debug.depend.reason=usr/bin/psmandup \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
119 |
pkg.debug.depend.type=script type=require |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
120 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
121 |
This will allow the next step to resolve all dependencies to their proper |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
122 |
package(s). |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
123 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
124 |
Dependencies Resolved |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
125 |
The manifest with unresolved dependencies is passed through pkgdepend(1) |
1235
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
126 |
again to resolve dependencies against the package repositories. The result |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
127 |
is a manifest that is suitable for publication. All these manifests are |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
128 |
processed together in a single step, which is more efficient than resolving |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
129 |
dependencies in each manifest separately. While each manifest ends up with |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
130 |
a .depend.res copy in the build directory, the umbrella dependency |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
131 |
resolution target is {build-dir}/.resolved-$(MACH). |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
132 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
133 |
The resolution step is also set up to use the -e flag to pkgdepend resolve, |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
134 |
which limits the set of packages it looks at to resolve the dependencies it |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
135 |
generated in the previous step. This makes the resolution step a great deal |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
136 |
faster, but requires that you keep a static list of these packages checked |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
137 |
into the workspace, and update it when packages are added to it. Having |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
138 |
extra packages in there is safe. |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
139 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
140 |
In order to create this list, build and publish your component (or at least |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
141 |
through the resolution stage) without a file "resolve.deps" in the component |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
142 |
directory, and run "gmake sample-resolve.deps". If the file is empty (that |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
143 |
is, no computed dependencies were found), a warning will be emitted and the |
1428
94d2b78b3e05
17205829 Update device ids data files to current versions as of 2013.07
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
1393
diff
changeset
|
144 |
file will be removed, as pkgdepend currently errors out in that case. If a |
94d2b78b3e05
17205829 Update device ids data files to current versions as of 2013.07
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
1393
diff
changeset
|
145 |
component has no dependencies that pkgdepend can discover and resolve, you |
94d2b78b3e05
17205829 Update device ids data files to current versions as of 2013.07
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
1393
diff
changeset
|
146 |
can set EXTDEPFILES = $(NULLDEPFILE) in your component Makefile to get the |
94d2b78b3e05
17205829 Update device ids data files to current versions as of 2013.07
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
1393
diff
changeset
|
147 |
performance benefits without providing a placeholder resolve.deps yourself. |
1235
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
148 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
149 |
To test, run "gmake clean" and re-publish. |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
150 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
151 |
Don't forget to "hg add resolve.deps"! |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
152 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
153 |
Note that there is a possibility the list of dependencies will be different |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
154 |
on different architectures, so you should run this on both sparc and x86, |
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
155 |
and combine the two lists. Please keep the files sorted. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
156 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
157 |
Manifest Validation |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
158 |
The resolved manifest(s) and prototype install tree are passed through |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
159 |
a set of validations. This includes running pkglint(1), comparing the |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
160 |
manifest content to the prototype install tree, and validation of the file |
185
773dda89f186
7036473 dependency resolution should happen in one step for all component's packages
Danek Duvall <danek.duvall@oracle.com>
parents:
181
diff
changeset
|
161 |
content of the prototype install tree. Any anomalies are reported. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
162 |
Content validation is performed by extension to pkglint(1) in |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
163 |
$(WS_TOP)/tools/python/userland-lint |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
164 |
|
1907
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
165 |
Note that when integrating new packages, and one or more of them depends |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
166 |
on or more of the others, then this may result: |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
167 |
WARNING pkglint.action005.1 obsolete dependency check skipped: |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
168 |
unable to find dependency (target pkg) for (source pkg) |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
169 |
This means that the target package was not found in the reference repo, |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
170 |
which was the source of the pkglint cache that was created when 'gmake |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
171 |
setup' was run after the workspace was created; thus the warning is |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
172 |
harmless and can be ignored in this circumstance. |
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
173 |
|
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
174 |
Publication. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
175 |
Once manifest validation has occurred, the package(s) is/are finally |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
176 |
published to the workspace package repository. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
177 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
178 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
179 |
# vi:set fdm=marker expandtab ts=4: |