README.md
changeset 7785 51080767e1a9
parent 7769 96a1241fc627
equal deleted inserted replaced
7783:9db1925bee3c 7785:51080767e1a9
     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