v.io/jiri@v0.0.0-20160715023856-abfb8b131290/profiles/README.md (about)

     1  # Profiles
     2  
     3  Profiles are used to manage external sofware dependencies and offer a balance
     4  between providing no support at all and a full blown package manager.
     5  A profile is a named collection of software required for a given system component or
     6  application. The name of the profile refers to all of the required software,
     7  which may a single library or a collection of libraries or SDKs.
     8  Current example profiles include 'syncbase' which consists of the leveldb and
     9  snappy libraries or 'android' which consists of all of the android components and
    10  downloads needed to build android applications.
    11  
    12  ## Targets
    13  
    14  Profiles generally refer to uncompiled source code that needs to be compiled for
    15  a specific "target". Targets hence represent compiled code and consist of:
    16  
    17  1. A 'tag' that can be used a short hand for refering to a target
    18  2. An 'architecture' that refers to the CPU to be generate code for
    19  3. An 'operating system' that refers to the operating system to generate code for
    20  4. An 'environment' which is a set of environment variables to use when compiling the profile
    21  
    22  Targets thus provide the basic support needed for cross compilation.
    23  
    24  ## The Supported Commands
    25  
    26  Profiles may be installed, updated or removed. When doing so, the name of the
    27  profile is required, but the other components of the target are optional and will
    28  default to the values of the system that the commands are run on (so-called
    29  native builds). Once a profile is installed it may be referred to by its tag
    30  for subsequent updates and removals.
    31  
    32  ## Adding Profiles
    33  
    34  Profiles are intended to be provided as go packages that register themselves
    35  with the profile command line tools via the *v.io/jiri/profiles* package.
    36  They must implement the interfaces defined by that package and be imported
    37  (e.g. import _ "myprofile") by the command line tools that are to use them.
    38  
    39  ## The Manifest
    40  
    41  The *profiles* package manages a manifest that tracks the installed profiles
    42  and their configurations. Other command line tools and packages are expected
    43  to read information about the currently installed profiles from this manifest
    44  via the *profiles* package.
    45