Skip to content

Document the meaning of deptypes #3768

@citibeth

Description

@citibeth

@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:

  1. B's module loaded by A's module?
  2. B added to A's build environment?
  3. B added to A's RPATH?
  4. B built as a prerequisite for A?
  5. ...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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions