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:
- FDL: this is a dependency described using the Flow Description Language FDL
- Capsule: this is a dependency described in a capsule
- Interception: this is a dependency captured by intercepting the operating system calls
- Instrumentation: this is a dependency captured by calling the VIL or the VILtools
- Wrapper: this is a dependency related to the use of a wrapper
- 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.