-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Document the meaning of deptypes #3768
Description
@tgamblin @krafczyk @davydden @certik @scheibelp
In #3347 and similar, I'm coming to believe we don't really know what we mean by build, link and run dependencies. I'm hoping we can clarify that in this thread.
First of all, I believe we need a list of the different kinds of things that might happen when A->B. Here is a probably incomplete list:
- B's module loaded by A's module?
- B added to A's build environment?
- B added to A's RPATH?
- B built as a prerequisite for A?
- ...any other effects that MIGHT happen?
Next, we need a specification of how a deptype affects the above behaviours (or should affect the behaviors) For example:
deptype=build: (4), (2)
deptype=link: (3)
deptype=run: (1)
Finally, we need to figure out what, if anything, happens transitively. If A->B->C, deptype(A->B)=x and deptype(B->C)=y, then how does that affect A's behavior? There are only 3 deptypes, but now 9 combinations of 2-level transitive deptypes we have to decide upon. Ideally, we won't need any special rules for transitive deptypes; but if we must, we must.
If we can get these right, then we have a definition of deptypes that we can rely upon and work with in cases like #3347.