Track the Origins of Dependencies

The dependency engine tracks the origin of dependencies. This can be useful when debugging complex flows. The origin of a dependency can be one of the following:
  1. FDL: this is a dependency described using the Flow Description Language FDL
  2. Capsule: this is a dependency described in a capsule
  3. Interception: this is a dependency captured by intercepting the operating system calls
  4. Instrumentation: this is a dependency captured by calling the VIL or the VILtools
  5. Wrapper: this is a dependency related to the use of a wrapper
  6. Extra: another type of dependency

The origin of a dependency is shown as a set of 7 flags, with the following meaning:

Flag Description
f-------- FDL
-c------- Capsule
--r------ Interception (most often seen as --rv----)
---v----- Instrumentation (VIL or VilTools)
----w---- Wrapper (vw, vov, vrt, ... )
-----x--- Extra dependency
------s-- Sticky flag (normally coming from FDL)
-------o- Old dependency (orange)
--------n New dependency (yellow)
---------F File ready flag
----------W Wait for input flag

Strictly speaking, the flag 's' for 'sticky' is not really an origin, but is nevertheless an important attribute of a dependency.

The origin of dependencies is now part of the default output of vsx, where the default format (see option -O), includes the keyword "@ORIGIN@"

Any dependency can have multiple origins, for example from FDL and from a capsule. For example, let's start with one line of FDL:
% vovsh -x 'J vw cp aa bb'
% vsx !
000001847 VALID      f---------- aa
  >>>> Node 000076523  INVALID  vw cp aa bb
000001848 INVALID    f---------- bb
In this example, both dependencies for aa and bb are f------ because they are coming from the one line of FDL. After execution of the tool, things change:
% vw cp aa bb
% vsx !
000001847 VALID      fc-----on-- aa
000001851 VALID      ----w---n-- /bin/cp
  >>>> Node 000076524  VALID  vw cp aa bb
000001848 VALID      fc-----on-- bb

Now, the origin for the aa dependency is fc------- meaning that it is coming from both the FDL and from the capsule for the tool "cp". The new dependency for the file /bin/cp is coming from the wrapper vw which always declares the executable as an input.