1 # Getting started with the Userland Consolidation |
1 # Getting started with the Userland Consolidation |
2 |
2 |
3 ## Getting Started |
3 ## Getting Started |
4 This README provides a very brief overview of the gate, how to retrieve |
4 This README provides a very brief overview of the gate (i.e., source |
5 a copy, and how to build it. Detailed documentation about the Userland |
5 code repository), how to retrieve a copy, and how to build it. Detailed |
6 gate can be found in the 'doc' directory. |
6 documentation about the Userland gate can be found in the `doc` directory. |
7 |
7 |
8 ## Overview |
8 ## Overview |
9 The Userland consolidation maintains a project at |
9 The Userland consolidation maintains a project at |
10 |
10 |
11 https://github.com/oracle/solaris-userland |
11 https://github.com/oracle/solaris-userland |
12 |
12 |
13 That repo contains build recipes, patches, IPS manifests, etc. necessary |
13 That repo contains build recipes, patches, IPS (i.e., pkg(7)) manifests, |
14 to download, prep, build, test, package and publish open source software. |
14 and other files necessary to download, prep, build, test, package and publish |
15 The build infrastructure is similar to that of the SFW consolidation in |
15 open source software. The build infrastructure makes use of hierarchical |
16 that it makes use of hierarchical Makefiles which provide dependency and |
16 Makefiles which provide dependency and recipe information for building |
17 recipe information for building the components. In order to build the |
17 the components. In order to build the contents of the Userland gate, |
18 contents of the Userland gate, you need to clone it. Since you are |
18 you need to clone it. Since you are reading this, you may already have. |
19 reading this, you probably already have. |
|
20 |
19 |
21 ## Getting the Bits |
20 ## Getting the Bits |
22 As mentioned, the gate is stored in a Mercurial repository. In order to |
21 The canonical repository internal to Oracle is stored in Mercurial, and |
23 build or develop in the gate, you will need to clone it. You can do so |
22 is mirrored to an external Git repository on GitHub. In order to build |
24 with the following command |
23 or develop in the gate, you will need to clone it. You can do so with one |
|
24 of the following commands. Internal: |
25 |
25 |
26 $ git clone https://github.com/oracle/solaris-userland.git /scratch/clone |
26 $ hg clone ssh://[email protected]//gates/gate /scratch/clone |
|
27 |
|
28 External: |
|
29 |
|
30 $ git clone https://github.com/oracle/solaris-userland /scratch/clone |
27 |
31 |
28 This will create a replica of the various pieces that are checked into the |
32 This will create a replica of the various pieces that are checked into the |
29 source code management system, but it does not retrieve the community |
33 source code management system, but it does not retrieve the community |
30 source archives associated with the gate content. To download the |
34 source archives associated with the gate content. To download the |
31 community source associated with your cloned workspace, you will need to |
35 community source associated with your cloned workspace, you will need to |
37 This will use GNU make and the downloading tool in the gate to walk through |
41 This will use GNU make and the downloading tool in the gate to walk through |
38 all of the component directories downloading and validating the community |
42 all of the component directories downloading and validating the community |
39 source archives from the gate machine or their canonical source repository. |
43 source archives from the gate machine or their canonical source repository. |
40 |
44 |
41 There are two variation to this that you may find interesting. First, you |
45 There are two variation to this that you may find interesting. First, you |
42 can cause gmake(1) to perform it's work in parallel by adding '-j (jobs)' |
46 can cause gmake(1) to perform its work in parallel by adding `-j (jobs)` |
43 to the command line. Second, if you are only interested in working on a |
47 to the command line. Second, if you are only interested in working on a |
44 particular component, you can change directories to that component's |
48 particular component, you can change directories to that component's |
45 directory and use 'gmake download' from that to only get it's source |
49 directory and use `gmake download` from that to only get its source |
46 archive. |
50 archive. |
47 |
51 |
48 ## Building the Bits. |
52 ## Building the Bits. |
49 You can build individual components or the contents of the entire gate. |
53 You can build individual components or the contents of the entire gate. |
50 |
54 |
64 Complete top down builds are also possible by simply running |
68 Complete top down builds are also possible by simply running |
65 |
69 |
66 $ cd (your-workspace)/components |
70 $ cd (your-workspace)/components |
67 $ gmake publish |
71 $ gmake publish |
68 |
72 |
69 The 'publish' target will build each component and publish it to the |
73 The `publish` target will build each component and publish it to the |
70 workspace IPS repo. |
74 workspace IPS repo. |
71 |
75 |
72 Tools to help facilitate build zone creation will be integrated |
76 - You can add parallelism to your builds by adding `-j (jobs)` to your gmake |
73 shortly. If the zone you create to build your workspace in does not have |
|
74 networking enabled, you can pre-download any community source archives into |
|
75 your workspace from the global with: |
|
76 |
|
77 $ cd (your-workspace)/components |
|
78 $ gmake download |
|
79 |
|
80 - You can add parallelism to your builds by adding '-j (jobs)' to your gmake |
|
81 command line arguments. |
77 command line arguments. |
82 - The gate should only incrementally build what it needs to based on what has |
78 - The gate should only incrementally build what it needs to based on what has |
83 changed since you last built it. |
79 changed since you last built it. |
84 |
80 |
85 # Copyright |
81 # Copyright |