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