From 77e92ceba9d1964f5f4ccf035d3e04052c1040b0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 16 Jan 2013 13:13:45 +0100 Subject: [PATCH] update changes in log file for dependencies based on discussion --- docs/dev/logs/2012-12-11.dependencies | 90 ++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 15 deletions(-) diff --git a/docs/dev/logs/2012-12-11.dependencies b/docs/dev/logs/2012-12-11.dependencies index e5506564..5e673b23 100644 --- a/docs/dev/logs/2012-12-11.dependencies +++ b/docs/dev/logs/2012-12-11.dependencies @@ -8,28 +8,88 @@ __git bar __package git --state present -require="__git/foo" git bar: +require="__git/foo" __git bar: __git bar __git foo __package git --state present __package git --state present - __git foo - __package git --state present + __git foo <---| + __package git --state present ---| -> detects circular dependency +-------------------------------------------------------------------------------- + +require="__apt_repository/somewhere-where-you-can-find-package-git __git/foo" __git bar + + __git bar + __apt_repository somewhere-where-you-can-find-package-git + + __git foo + __package git --state present + __package_apt git depends nachher auf __apt_repository + __package git --state present + __git foo <---| + __package git --state present ---| + __apt_repository somewhere-where-you-can-find-package-git + +possible solutions: + - __package git does not depend on __git foo (clear dependency) + - because it DOES NOT depend on it! + - but we don't know whether this is always true :-/ + - multiple instances of __package git exist, with + - different required BY + - different requirements + - define non inheritent dependencies (?) + - because __git bar really depends only on __git foo + - proposal: introduce require_non_recursive and require_recursive (previously: require) + +-------------------------------------------------------------------------------- + +__package foo + __package_apt foo + +__package bar + __package_apt bar + +require="__package/foo" __package bar + + __package bar + __package foo + __package_apt foo + __package_apt bar + __package foo + -------------------------------------------------------------------------------- -__package abc - __package_apt abc +__type1 var1 + __type2 FIX -__sometype def - __package abc - __package_apt abc +__type1 var2 + __type2 FIX +-------------------------------------------------------------------------------- +facts: + - use is different from require="", as use makes USED depend on parent deps + - use = called/defined in the manifest of a type + - it is currently not recorded, where an object gained its requirements and autorequirements +-------------------------------------------------------------------------------- +requirements: + - a type should be a black box: + I can require an object and it is ensured, + everything it needs is executed before me. + +-------------------------------------------------------------------------------- +possible implementations +- requiring it should include everything it USES +-------------------------------------------------------------------------------- +solutions: + __type1 DEPENDS but does not use __type2 FIX + + -------------------------------------------------------------------------------- Change proposal: @@ -59,14 +119,14 @@ Order: For __package: -__sometype def - __package abc +__sometype bar + __package foo -__package abc - __package_apt abc +__package foo + __package_apt foo -1) __package_apt/abc (leaf node) +1) __package_apt/foo (leaf node) -2) __package/abc (new leaf node) +2) __package/foo (new leaf node) -3) __sometype/def (new leaf node) +3) __sometype/bar (new leaf node)