README
author John Beck <John.Beck@Oracle.COM>
Wed, 15 Mar 2017 12:33:24 -0700
changeset 7760 4ab84455407c
parent 3836 56af60eb6020
child 7763 2a3817cf33cb
permissions -rw-r--r--
25727021 s/java.net/github.com/g
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
125cd5d2cd9e include gmake example
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     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
125cd5d2cd9e include gmake example
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     3
125cd5d2cd9e include gmake example
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     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
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
     9
    gate can be found in the 'doc' directory.
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    10
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    11
Overview
2
125cd5d2cd9e include gmake example
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    12
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    13
    The Userland consolidation maintains a project at
3836
56af60eb6020 18554579 Userland gate README still refers to opensolaris.org repo & mailing list
Mike Sullivan <Mike.Sullivan@Oracle.COM>
parents: 151
diff changeset
    14
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    15
         https://github.com/oracle/solaris-userland
3836
56af60eb6020 18554579 Userland gate README still refers to opensolaris.org repo & mailing list
Mike Sullivan <Mike.Sullivan@Oracle.COM>
parents: 151
diff changeset
    16
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    17
    That repo contains build recipes, patches, IPS manifests, etc. necessary
26
8a9f4e791832 packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 2
diff changeset
    18
    to download, prep, build, test, package and publish open source software.
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    19
    The build infrastructure is similar to that of the SFW consolidation in
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    20
    that it makes use of hierarchical Makefiles which provide dependency and
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    21
    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
    22
    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
    23
    reading this, you probably already have.
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    24
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    25
Getting the Bits
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    26
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    27
    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
    28
    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
    29
    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
    30
    
7760
4ab84455407c 25727021 s/java.net/github.com/g
John Beck <John.Beck@Oracle.COM>
parents: 3836
diff changeset
    31
      $ git clone https://github.com/oracle/solaris-userland.git /scratch/clone
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    32
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    33
    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
    34
    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
    35
    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
    36
    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
    37
    execute the following:
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    39
      $ cd /scratch/clone/components
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    40
      $ gmake download
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    41
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    42
    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
    43
    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
    44
    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
    45
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    46
    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
    47
    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
    48
    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
    49
    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
    50
    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
    51
    archive.
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    52
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    53
Building the Bits.
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    54
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    55
    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
    56
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    57
  Component build
26
8a9f4e791832 packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 2
diff changeset
    58
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    59
    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
    60
    following:
26
8a9f4e791832 packaging changes including canonical manifest support with manifest validation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 2
diff changeset
    61
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    62
      setup the workspace for building components
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    63
151
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    64
        $ cd (your-workspace)/components ; gmake setup
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    65
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    66
      build the individual component
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    67
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    68
        $ cd (component-dir) ; gmake publish
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    69
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    70
  Complete Top Down build  
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    71
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    72
    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
    73
151
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    74
      $ cd (your-workspace)/components
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    75
      $ gmake publish
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    76
151
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    77
    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
    78
    workspace IPS repo.
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    79
    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
    80
    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
    81
    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
    82
    your workspace from the global with:
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    83
151
f9e42a3f7095 7030982 hgk is delivered 444, breaks 'hg view'
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 38
diff changeset
    84
      $ cd (your-workspace)/components
38
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    85
      $ gmake download
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    86
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    87
  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
    88
  command line arguments.
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    89
cd00ea74156e package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents: 26
diff changeset
    90
  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
    91
  changed since you last built it.