Package conary :: Package build :: Module packagepolicy :: Class ComponentRequires
[hide private]
[frames] | no frames]

Class ComponentRequires

source code

  action.Action --+            
                  |            
action.RecipeAction --+        
                      |        
      policy.BasePolicy --+    
                          |    
              policy.Policy --+
                              |
                             ComponentRequires
Known Subclasses:
derivedpolicy.ComponentRequires

NAME

r.ComponentRequires() - Create automatic intra-package, inter-component dependencies

SYNOPSIS

r.ComponentRequires([{'componentname': requiringComponentSet}] | [{'packagename': {'componentname': requiringComponentSet}}])

DESCRIPTION

The r.ComponentRequires() policy creates automatic, intra-package, inter-component dependencies, such as a corresponding dependency between :lib and :data components.

Changes are passed in using dictionaries, both for additions that are specific to a specific package, and additions that apply generally to all binary packages being cooked from one recipe. For general changes that are not specific to a package, use this syntax: r.ComponentRequires({'componentname': requiringComponentSet}). For package-specific changes, you need to specify packages as well as components: r.ComponentRequires({'packagename': 'componentname': requiringComponentSet}).

By default, both :lib and :runtime components (if they exist) require the :data component (if it exists). If you call r.ComponentRequires({'data': set(('lib',))}), you limit it so that :runtime components will not require :data components for this recipe.

In recipes that create more than one binary package, you may need to limit your changes to a single binary package. To do so, use the package-specific syntax. For example, to remove the :runtime requirement on :data only for the foo package, call: r.ComponentRequires({'foo': 'data': set(('lib',))}).

Note that r.ComponentRequires cannot require capability flags; use r.Requires if you need to specify requirements, including capability flags.

EXAMPLES

r.ComponentRequires({'openssl': {'config': set(('runtime', 'lib'))}})

Uses r.ComponentRequires to create dependencies in a top-level manner for the :runtime and :lib component sets to require the :config component for the openssl package.

Instance Methods [hide private]
 
__init__(self, *args, **keywords) source code
 
updateArgs(self, *args, **keywords)
The default way to update a class is to override any provided keywords.
source code
 
do(self) source code

Inherited from policy.Policy: compileFilters, doProcess, filterExpArgs, filterExpression, mtimeChanged, policyException, policyInclusion, walkDir

Inherited from policy.BasePolicy: dbg, error, info, postInit, postPolicy, warn

Inherited from policy.BasePolicy (private): _addClassName, _pathAllowed

Inherited from action.RecipeAction: doAction, doPrep, doSuggestAutoBuildReqs, init_error

Inherited from action.Action: addArgs

Inherited from action.Action (private): _applyDefaults

Class Variables [hide private]
  bucket = 8
  requires = (('PackageSpec', 7), ('ExcludeDirectories', 6))

Inherited from policy.Policy: filetree, invariantexceptions, invariantinclusions, invariantsubtrees, keywords, processUnmodified, recursive, rootdir

Inherited from policy.BasePolicy: allowUnusedFilters

Method Details [hide private]

__init__(self, *args, **keywords)
(Constructor)

source code 
Overrides: policy.Policy.__init__
(inherited documentation)

updateArgs(self, *args, **keywords)

source code 

The default way to update a class is to override any provided keywords. Subclasses which have the ability to provide more intelligent handling can override this method. This method is invoked automatically by recipe.py when a recipe references a policy object. It acts rather like __init__ except that it can meaningfully be called more than once for an object.

Some keyword arguments (at least exceptions and subtrees) should be appended rather than replaced.
Overrides: policy.BasePolicy.updateArgs
(inherited documentation)

do(self)

source code 
Overrides: policy.Policy.do