Skip to main content
Jump to: navigation, search

Difference between revisions of "Buckminster Project/docs/drafts/DependencySpec"

(Buckminster Dependency Specification)
 
 
Line 1: Line 1:
 +
==Buckminster Dependency Specification==
 
<p>Buckminster creates component dependency graphs using a Dependency Specification,  
 
<p>Buckminster creates component dependency graphs using a Dependency Specification,  
 
henceforth referred to as &quot;dspec&quot;. A dspec is
 
henceforth referred to as &quot;dspec&quot;. A dspec is
Line 6: Line 7:
 
be added as needed (see
 
be added as needed (see
 
[[Buckminster_Project/docs/drafts/ResourceMap#Component_type|Component type]]).</p>
 
[[Buckminster_Project/docs/drafts/ResourceMap#Component_type|Component type]]).</p>
==DSpec elements==
+
===DSpec elements===
 
<p>A dspec defines the top-level element <i>dependencies</i> as a list of <i>
 
<p>A dspec defines the top-level element <i>dependencies</i> as a list of <i>
 
dependency</i> elements.</p>
 
dependency</i> elements.</p>
Line 21: Line 22:
 
Action Specification with one single action that requires all dependencies and  
 
Action Specification with one single action that requires all dependencies and  
 
imposes default behavior for the resolution.</p>
 
imposes default behavior for the resolution.</p>
==Version Designator==
+
===Version Designator===
 
<p>A version designator appoints the specific component versions that will  
 
<p>A version designator appoints the specific component versions that will  
 
satisfy a component request. It uses the semantics similar the OSGi Version  
 
satisfy a component request. It uses the semantics similar the OSGi Version  
Line 32: Line 33:
 
major.minor.micro[.qualifier] scheme.<br>
 
major.minor.micro[.qualifier] scheme.<br>
 
&nbsp;</p>
 
&nbsp;</p>
==Version Type==
+
===Version Type===
 
<p>The type knows how to parse and compare versions. Buckminster comes with the  
 
<p>The type knows how to parse and compare versions. Buckminster comes with the  
 
following predefined version types:<dl>
 
following predefined version types:<dl>

Latest revision as of 06:06, 12 December 2005

Buckminster Dependency Specification

Buckminster creates component dependency graphs using a Dependency Specification, henceforth referred to as "dspec". A dspec is either obtained using a dspec builder or exists as a physical file in the component that it defines. Buckminster delivers dspec builders for Eclipse update-site's, features, plug-ins, and fragments. New builders can be added as needed (see Component type).

DSpec elements

A dspec defines the top-level element dependencies as a list of dependency elements.

A dependency consists at least of a component name. The dependency may optionally contain a version designator and a version type.

A dependency graph is always implicit since dependencies appoint other components and all components can be viewed in terms of a dspec. This implicit graph must be a Directed Acyclic Graph (DAG).

One of the fundamental concepts of  Buckminster is that a component does not really have any dependencies unless you do something with it. The dependency graph might be very different for different needs. This very important extension to the overall concept is covered by the Action Specification. A free standing Dependency Specification can be seen as an Action Specification with one single action that requires all dependencies and imposes default behavior for the resolution.

Version Designator

A version designator appoints the specific component versions that will satisfy a component request. It uses the semantics similar the OSGi Version Range and appoints versions using a mathematical interval notation. See Mathematical Convention for Interval Notation. The notation "2.3.4" is equivalent to the mathematical range "[2.3.4,∞)". The version designator differs from the OSGi range in that the version in itself is interpreted by a version type. OSGi uses a fixed major.minor.micro[.qualifier] scheme.
 

Version Type

The type knows how to parse and compare versions. Buckminster comes with the following predefined version types:

OSGi
Assumes that the version has the following grammar:
    version   ::= major( '.' minor ( '.' micro ( '.' qualifier )? )? )?
    major     ::= number // See 1.4.2
    minor     ::= number
    micro     ::= number
    qualifier ::= ( alphanum | ’_’ | '-' )+

String
Will allow any string that does not contain the characters that delimit ranges.

New version types can be added using the extension-point org.eclipse.buckminster.core.versionTypes.

Back to the top