author | Kevin Crowe <Kevin.Crowe@oracle.com> |
Fri, 08 Jul 2011 06:16:47 -0700 | |
changeset 380 | e92b3b4a1c66 |
parent 151 | f9e42a3f7095 |
child 3836 | 56af60eb6020 |
permissions | -rw-r--r-- |
2 | 1 |
|
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
2 |
Getting started with the Userland Consolidation |
2 | 3 |
|
4 |
||
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
5 |
Getting Started |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
6 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
7 |
This README provides a very brief overview of the gate, how to retrieve |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
8 |
a copy, and how to build it. Detailed documentation about the Userland |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
9 |
gate can be found in the 'doc' directory. Questions or comments about |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
10 |
the gate can be addressed to [email protected]. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
11 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
12 |
Overview |
2 | 13 |
|
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
14 |
The Userland consolidation maintains a Mercurial gate at |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
15 |
|
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
16 |
ssh://[email protected]//hg/userland/gate |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
17 |
|
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
18 |
This gate contains build recipies, patches, IPS manifests, etc. necessary |
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
19 |
to download, prep, build, test, package and publish open source software. |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
20 |
The build infrastructure is similiar to that of the SFW consolidation in |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
21 |
that it makes use of herarchical Makefiles which provide dependency and |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
22 |
recipe information for building the components. In order to build the |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
23 |
contents of the Userland gate, you need to clone it. Since you are |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
24 |
reading this, you probably already have. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
25 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
26 |
Getting the Bits |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
27 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
28 |
As mentioned, the gate is stored in a Mercurial repository. In order to |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
29 |
build or develop in the gate, you will need to clone it. You can do so |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
30 |
with the following command |
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
31 |
|
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
32 |
$ hg clone ssh://[email protected]//hg/userland/gate /scratch/clone |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
33 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
34 |
This will create a replica of the various pieces that are checked into the |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
35 |
source code management system, but it does not retrieve the community |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
36 |
source archives associated with the gate content. To download the |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
37 |
community source associated with your cloned workspace, you will need to |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
38 |
execute the following: |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
39 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
40 |
$ cd /scratch/clone/components |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
41 |
$ gmake download |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
42 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
43 |
This will use GNU make and the downloading tool in the gate to walk through |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
44 |
all of the component directories downloading and validating the community |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
45 |
source archives from the gate machine or their canonical source repository. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
46 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
47 |
There are two variation to this that you may find interesting. First, you |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
48 |
can cause gmake(1) to perform it's work in parallel by adding '-j (jobs)' |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
49 |
to the command line. Second, if you are only interested in working on a |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
50 |
particular component, you can change directories to that component's |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
51 |
directory and use 'gmake download' from that to only get it's source |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
52 |
archive. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
53 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
54 |
Building the Bits. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
55 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
56 |
You can build individual components or the contents of the entire gate. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
57 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
58 |
Component build |
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
59 |
|
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
60 |
If you are only working on a single component, you can just build it using |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
61 |
following: |
26
8a9f4e791832
packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset
|
62 |
|
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
63 |
setup the workspace for building components |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
64 |
|
151
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
65 |
$ cd (your-workspace)/components ; gmake setup |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
66 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
67 |
build the individual component |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
68 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
69 |
$ cd (component-dir) ; gmake publish |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
70 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
71 |
Complete Top Down build |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
72 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
73 |
Complete top down builds are also possible by simply running |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
74 |
|
151
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
75 |
$ cd (your-workspace)/components |
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
76 |
$ gmake publish |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
77 |
|
151
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
78 |
The 'publish' target will build each component and publish it to the |
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
79 |
workspace IPS repo. |
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
80 |
Tools to help facilitate build zone creation will be integrated |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
81 |
shortly. If the zone you create to build your workspace in does not have |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
82 |
networking enabled, you can pre-download any community source archives into |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
83 |
your workspace from the global with: |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
84 |
|
151
f9e42a3f7095
7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
38
diff
changeset
|
85 |
$ cd (your-workspace)/components |
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
86 |
$ gmake download |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
87 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
88 |
You can add parallelism to your builds by adding '-j (jobs)' to your gmake |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
89 |
command line arguments. |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
90 |
|
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
91 |
The gate should only incrementally build what it needs to based on what has |
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
26
diff
changeset
|
92 |
changed since you last built it. |