The LINK Database
To establish dependencies with symbolic links, the LINK database must be used.
This section assumes that are familiar with the "symbolic link" in a UNIX file system. For information about symbolic links, you can use the UNIX command man ln.
# Create a link called 'bar' for to a file called 'foo'
#   bar → foo
R "unix"
T vw ln -s foo bar
O -db LINK barNotice that the file foo in the example above does not even need to
                exist, and therefore it is not considered an input to "ln". The link bar →
                    foo is created whether foo exists or not. The job ln -s
                    ... can be run at any time, even before foo exists,
                but not before the jobs that use the symbolic link bar. 
The timestamp of the link is not the same as the timestamp of the file. You can have an old link that points to a young file. Recreating the link will normally change the timestamp of the link.
### ---- in the middle of a script ....
### All symbolic links used to expand foobar and abc will be declared
### as inputs to the current job.
VovOutput -links foobar || exit 1
VovInput -links abc  || exit 1All symbolic links are declared as input dependencies. (The only tool that has a LINK
                as output is "ln" or some other application that call the symlink()
                system call. ) 
setenv VOV_VW_TRACK_LINKS 1
vw cp aa bbExamples
/project/ivy/releases/current      -> milestoneA
/project/ivy/releases/milestoneA   -> serials/00014
/project/ivy/releases/serials/0014/file.txt- 
                        VovInput current/file.txt VovInput -db FILE current/file.txtThese commands are equivalent, because FILE is the default database. They both create an input dependency with FILE serials/0014/file.txt, because the links "current" and "milestoneA" are both traversed. 
- 
                        VovInput -db LINK -quote currentThis creates an input dependency for the symbolic link current → milestoneA. The path "current" is not expanded because it is quoted by the option -quote.
- 
                        VovInput -links current/file.txtThis command creates three dependencies: one for FILE serials/0014/file.txt and two for the links that have been traversed. This is equivalent to these three lines:VovInput -db FILE /project/ivy/releases/serials/0014/file.txt VovInput -db LINK -quote /project/ivy/releases/serials/current VovInput -db LINK -quote /project/ivy/releases/serials/milestoneA
- 
                        VovInput -db LINK currentWithout the -quote option, this creates an input dependency for the directory serials/0014, but in the "LINK" database, which is actually a silly thing to do. Behaviorally, this is not much different from having a dependency on a "FILE" serials/0014. 
- 
                        VovInput -links -db LINK currentThis is the same as above, but in addition we also have dependencies on the two links that have been traversed. 
- 
                        VovInput -links -db FILE currentThis is better than above, because the expanded path "current" is actually a directory, and not a link. 
Option -links in FDL
## This is legitimate FDL. 
T vw cp aa bb
O -links bb
I -links aa# More useful is to use -links in  a capsule-on-the-fly
T vw ./myjob aa bb
CAPSULE {
   I -links aa
   O -links bb
}Debugging symlinks
# This goes in the equiv.tcl file.
# It activates debugging for both the equivalence subsystem
# and the symlink subsystem
vtk_equivalences_debug 1This change will have an effect when you run another job. Remember to revert the change after you are done debugging.
Links into the DesignSync Caches
##
## Avoid expanding links into the DesignSync caches.
## This is normally set in the setup.tcl file.
W#
setenv VOV_SYNC_CACHE_DIR /some/location/sync1/cache:/other/location/sync33/cache