blob: 3c72a3b564df5cdba2172997fb10e15c9d89c557 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
* Dependencies form a simple directed graph:
- Modules can depend (or interface-depend) on any module, except itself.
- Cyclic dependencies ARE allowed! (unlike in many other languages)
* Method 1 to handle multi-versioned modules/dependencies:
- Module-Version combinations are the nodes.
- Dependencies (from module A ver X to module B ver Y) are the edges.
- Versions "depend" on the earlier version
- XXX this does not work with implementation-depends because we may
want to eliminate old dependencies in old versions.
- Maybe this can be used for interface-depends though?
* Method 2 to handle multi-versioned modules/dependencies:
- Modules are the nodes
- Dependencies are the edges
- This can be used for implementation-depends.
* "Local" dependencies between files/symbols form a directed graph
- Loops and cycles are allowed, but a structure may not contain
itself except indirectly via pointers (including via function pointers).
|