author | Stefan Teleman <stefan.teleman@oracle.com> |
Tue, 17 Mar 2015 19:06:56 -0700 | |
changeset 3966 | cca72467a46d |
parent 3817 | 30b42c38bbc4 |
child 4813 | 5e86eaf216ff |
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. |
2142
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
83 |
* org.opensolaris.consolidation is the name of the consolidation delivering |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
84 |
the package. In Userland, this is $(CONSOLIDATION) (which expands to |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
85 |
"Userland" during the build). Manifests in the Userland gate can also |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
86 |
decorate this package attribute with an 'incorporate={incorporation-name}' |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
87 |
decoration to specify where the package should be incorporated at the end |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
88 |
of the userland build. A special value of 'none' will cause the package |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
89 |
to be unincorporated and float freely from the rest of the rest of the |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
90 |
packages. Note that unincorporated packages don't automatically get |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
91 |
updated with the rest of the system when 'pkg update' is run unless the |
813e4817e573
18139749 userland-incorporator should allow generation of multiple incorporations
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
1907
diff
changeset
|
92 |
unincorporated package(s) are specified on the command line. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
93 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
94 |
Mogrified Manifest |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
95 |
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
|
96 |
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
|
97 |
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
|
98 |
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
|
99 |
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
|
100 |
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
|
101 |
$(MACH) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
102 |
$(MACH32) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
103 |
$(MACH64) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
104 |
$(PUBLISHER) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
105 |
$(CONSOLIDATION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
106 |
$(BUILD_VERSION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
107 |
$(SOLARIS_VERSION) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
108 |
$(OS_VERSION) |
166
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
109 |
$(IPS_COMPONENT_VERSION) |
db8a55996482
6979538 /usr/share/gettext/po/Rules-quot contains garbage
Marcel Telka <marcel.telka@oracle.com>
parents:
151
diff
changeset
|
110 |
$(COMPONENT_VERSION) |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
111 |
$(COMPONENT_PROJECT_URL) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
112 |
$(COMPONENT_ARCHIVE_URL) |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
113 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
114 |
Dependencies Generated |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
115 |
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
|
116 |
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
|
117 |
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
|
118 |
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
|
119 |
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
|
120 |
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
|
121 |
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
|
122 |
Ex: |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
123 |
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
|
124 |
pkg.debug.reason=usr/bin/vipw type=require |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
125 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
126 |
depend fmri=__TBD pkg.debug.depend.file=sh \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
127 |
pkg.debug.depend.path=usr/bin \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
128 |
pkg.debug.depend.reason=usr/bin/psmandup \ |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
129 |
pkg.debug.depend.type=script type=require |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
130 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
131 |
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
|
132 |
package(s). |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
133 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
134 |
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
|
135 |
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
|
136 |
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
|
137 |
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
|
138 |
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
|
139 |
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
|
140 |
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
|
141 |
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
|
142 |
|
413599fe2d31
15960689 pkgdepend resolve takes longer than it might
Danek Duvall <danek.duvall@oracle.com>
parents:
255
diff
changeset
|
143 |
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
|
144 |
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
|
145 |
generated in the previous step. This makes the resolution step a great deal |
3817
30b42c38bbc4
15786608 SUNBT7162754 create new meta package developer/opensolaris/userland
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2143
diff
changeset
|
146 |
faster, but requires that you include a static list of these packages in |
30b42c38bbc4
15786608 SUNBT7162754 create new meta package developer/opensolaris/userland
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2143
diff
changeset
|
147 |
your component Makefile REQUIRED_PACKAGES macro. You can automatically |
30b42c38bbc4
15786608 SUNBT7162754 create new meta package developer/opensolaris/userland
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2143
diff
changeset
|
148 |
add REQURIED_PACKAGES settings for the packages used in dependency |
30b42c38bbc4
15786608 SUNBT7162754 create new meta package developer/opensolaris/userland
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2143
diff
changeset
|
149 |
resolution by running "gmake REQUIRED_PACKAGES". Once you have done so, |
30b42c38bbc4
15786608 SUNBT7162754 create new meta package developer/opensolaris/userland
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2143
diff
changeset
|
150 |
you should manually verify the Makefile additions. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
151 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
152 |
Manifest Validation |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
153 |
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
|
154 |
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
|
155 |
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
|
156 |
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
|
157 |
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
|
158 |
$(WS_TOP)/tools/python/userland-lint |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
159 |
|
1907
446472de62e9
PSARC 2014/151 Python 3.4
John Beck <John.Beck@Oracle.COM>
parents:
1428
diff
changeset
|
160 |
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
|
161 |
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
|
162 |
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
|
163 |
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
|
164 |
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
|
165 |
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
|
166 |
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
|
167 |
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
|
168 |
|
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
169 |
Publication. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
170 |
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
|
171 |
published to the workspace package repository. |
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
172 |
|
2143
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
173 |
Renames |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
174 |
|
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
175 |
Renames in IPS are tricky. We will use a case study to illustrate how |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
176 |
this needs to work. |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
177 |
|
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
178 |
All of the library/python-2/FOO modules that we had in Userland at the |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
179 |
time were renamed to library/python/FOO in s12_41. This involved: |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
180 |
* changing the FMRI to drop the "-2" |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
181 |
* adding an optional dependency on the old name at the version and build |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
182 |
in which the rename occurred; this forces the rename |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
183 |
* depend type=optional fmri=library/python-2/FOO-$(PYV)@VERSION,BUILD |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
184 |
where FOO is the component name (e.g., "alembic", "amqp", etc.), |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
185 |
"$(PYV)" is that literal string, VERSION was the expanded value of |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
186 |
COMPONENT_VERSION from each component's Makefile (e.g., "0.6.0" |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
187 |
for alembic, "1.0.12" for amqp, etc.), and BUILD was set to |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
188 |
"5.12-5.12.0.0.0.41.0". Note that BUILD needs to be set to |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
189 |
the value of the build you are integrating into. |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
190 |
* one or more new manifests (typically one for the versionless package, |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
191 |
plus one for each versioned instance of the package) with actions: |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
192 |
* set name=pkg.fmri value=pkg:/library/python-2/FOO@VERSION,BUILD |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
193 |
* set name=pkg.renamed value=true |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
194 |
* set name=org.opensolaris.consolidation value=$(CONSOLIDATION) |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
195 |
* depend fmri=library/python/FOO type=require |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
196 |
where FOO, VERSION and BUILD are all as above. |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
197 |
|
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
198 |
So far, not too bad. This gets slightly more complicated when back- |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
199 |
porting in that BUILD needs to be set to the back-port build (e.g., |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
200 |
"5.11-0.175.3.0.0.8.0", as was the case for tkinter-27) rather than |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
201 |
the S12 build. |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
202 |
|
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
203 |
If the component is at the same version as when the rename was done, then |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
204 |
that's it. But if the component has since been upgraded, then care must |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
205 |
be taken to set VERSION in both places above to the value that it was in |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
206 |
s12_41 when the rename was originally done. In particular, the latest |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
207 |
version of a package name in an earlier release branch must not be greater |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
208 |
than the latest version of that same package name in the newer release |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
209 |
branch. Otherwise the audits from Release Engineering will complain and |
82f79e5e7f43
19782852 document how to do IPS renames in Userland
John Beck <John.Beck@Oracle.COM>
parents:
2142
diff
changeset
|
210 |
our gatekeeper will make you do a follow-up push to fix this. |
46
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
211 |
|
d4d60962c33f
generate detectable dependencies at build time
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
212 |
# vi:set fdm=marker expandtab ts=4: |