VLB Construction

Concise Description

This section provides an overview of the VLB creation process.

A verification library (VLB) file contains information about all of the files on all of the nodes (note: that's nodes not subsystems, this allows different files to be sent to each node in a subsystem, if necessary) it supports. For the initial VLB delivery to USEC/PGDP, Electronic Visions has constructed a set of Windows NT command scripts (.CMD files) that contain the commands necessary to create a new VLB. The scripts exist in (and expect) a particular directory structure that contains all of the files that will be included in the VLB. When new files are to be distributed, the updated file should first be copied to the appropriate location in the VLB directory tree, then the new VLB should be created.

The primary command script is createvlb.cmd. This script will generate quite a bit of output to the display, and EVI typically redirects that output to a file (usually named 'create.log') for post-build analysis of any errors reported. Errors will be reported to the display even when the [normal] output is being logged. Because of the large amount of commonality between the PICS nodes, the VLB creation script was split into a number of smaller parts (named vXxxx.cmd, where Xxxx is the name of a particular subsystem or file set), some of which are called repeatedly for every node, others might only be called for the A&B nodes of a particular subsystem. The vXxxx.cmd files serve to show exactly where the raw files are stored, and where they will be installed on the target node(s). When new versions are received, the easiest way to use them is to copy them to the appropriate location(s) within the VLB folder tree, then create a new VLB from scratch.

The VLB creation script always produces a VCreate report that lists all of the files within the VLB and their version info (when available). The report is used by other customers to keep a record of what was distributed with a particular VLB.

Detailed Description

This section will describe EVI's method of VLB creation, and the layout/structure of the command files and source files used.

All of the files (commands and sources) are maintained in a single folder tree named \VLB. In general, the sub-folders reflect folders in the PICS root folder on the target nodes. The complete folder tree used by EVI looks like this:

Folder Name Typical Content
\VLB\ Command scripts and the output files (VLBs, creation logs and content reports)
     8800\ 8800 programs and configuration files
     bin\ Executable files and DLLs
     config\ Common configuration files
          Bridge\ Bridge-specific configuration files
          DARS\ DARS-specific configuration files
          eMux\ EVI's MUX-specific configuration files (our test system requires slightly different configuration from USEC/PGDP's live system, so we keep them separate this way)
          HMI\ HMI (display)-specific configuration files
          Mux\ MUX-specific configuration files
          Pdrs\ PDRS-specific configuration files
          Wan\ WAN-specific configuration files (the WAN nodes are those using ACC to access PICS from the plant network).
     data.base\ placeholder for static database files. Because the database itself is continually updated while PICS ris running, it is not verified or delivered through the VLB.
          csv\ placeholder for Comma Separated Value exported data files
          sync\ placeholder for primary/backup SDB synchronization scratch files
     groups\ placeholder for point group files
     html\ placeholder for PicsRPG-served web pages
          images\ placeholder for PicsRPG-served images
     Log\ placeholder for various application log files
     pages\ placeholder for common Recall Display pages
     PicsViews\ PicsViews application
          Views\ placeholder for PicsViews drawing files
     stage\ placeholder for the Shifty application's monitored folder
          sent\ placeholder for files that Shifty has successfully 'shifted' to the server.

A note about placeholders: The VLB system was not designed to monitor empty folders, but it will create a folder (when necessary) where a file needs to be stored. So, we have added some placeholder files in folders that have no active files delivered by the VLB, yet may be used by various applications (e.g. the Log folder where most all app send their logs).

Updating the VLB Sources

To make updating the VLB's source files easier, EVI created a pair of commands:  a script named getall.cmd and a program named checkvlb. The script is basically a series of copy commands that have the full path of the target and source.  When run, the script copies ALL source files, regardless of whether they've changed or not. checkvlb was created because we like to know exactly what source files have changed in each VLB being released. checkvlb uses the getall.cmd script as input and compares the target and source files. For all files that are different, checkvlb prints out how the file differ (size, date, one is missing, etc.) and the associated copy command, if any. If you only want to have the copy commands printed out, run checkvlb -b instead, and only the batch copy commands will be printed (these may be redirected to a command script and run).

Command Scripts

The createvlb.cmd and ecreatevlb.cmd scripts are the top-level scripts that are run to create either a USEC/PGDP VLB or an EVI ;VLB. Because there are only slight configuration differences being included by the two commands, only createvlb will be discussed, ecreatevlb works just the same (except it creates a VLB named EVIUSEC.VLB). The output from most of the scripts are commands for the VCreate utility, which will actually create the VLB itself.

As the top-level script, createvlb provides some feedback to the screen (or to a log, if the output is redirected) and runs a sequence of other scripts, some of which run their own sequence of even lower-level scripts.

Script Name Function/Operation
vSide Generates the commands for one side (A or B) of a basic PICS. Runs the vDLL, vCommon scripts for all nodes, plus vMUX, vMDI, vPDRS, vDARS and vBridge one for each specific node.
vCommon Creates all folders (via placeholders) and copies all files that are common to all PICS nodes, regardless of their function.
vDLL Copies all of the DLLs that are used by PICS applications.
vMUX Copies the files that are specific to the MUX subsystem.
vDARS Copies the files that are sepcific to the DARS subsystem.
vPDRS Copies the files that are sepcific to the PDRS subsystem.
vBridge Copies the files that are sepcific to the Bridge subsystem.
vDisplay Calls the vDLL, vCommon and vDEU scripts once for each of the possible standard display nodes.  Also calls the vLibra script for display node C310AD3.
The vDisplay script uses a special feature of the WindowsNT scripting language to read the names of all possible displays from a text file named dispnode.txt (also located in the \VLB folder).
vDEU Copies the files that are sepcific to a standard display node.
vLibra Copies the files that are sepcific to the display where the Libra (C-310 Scales) application runs.
vMDI Copies the files that are sepcific to the MDI subsystem.
vWAN Copies the files that are sepcific to a WAN workstation running Windows NT or newer.
vWAN9x Copies the files that are sepcific to a WAN workstation running Windows 95/98/Me

Notes on the VCreate Commands Generated

Most of the scripts above emit commands in the format that VCreate expects to find in an external command file (in this case, named vcreate.in). The command format is actually rather simple, consisting of only three values per line: source file name, target node name, target file name. Each of these parts is described in the following table.

Field Description
source file name This is a fully qualified file name for the original source. Normally, these are specified using relative notation (i.e. starting with ..\ instead of a drive letter).
target node name This is the full name of the PICS node where the file belongs. Full PICS node names contain a subsystem name, a dash, and a side letter (A or B). For example, PMUX-A is a full node name, while PMUX, PBridge and C310AD3 are NOT.
target file name This is also a fully qualified file name describing the destination of the file on the target node. The path and name may be different from the source file, VClient will rename it upon delivery. The path may include environment variables like SystemRoot or WindowsHome or other things that Windows may set to specify various system locations. The path may also contain the special variable Root Path that refers to the locally configured PICS Root Path (C:\PICS\ by default). Note that these variables must be enclosed with double percent marks (%%) so that the NT script processor does not try to resolve them for us. A single percent mark would refer to a local environment variable and would be interpreted by the script processor during VLB generation.

Output Files

Typically, EVI runs the VLB creation script with the output redirected to a log file, like this:

createvlb >create.log

The log file allows us to review the creation process for errors easily, rather than trying to see any errors as the thousands of lines being logged scroll past on the display.

The final results from the createvlb script are a VLB named USECPGDP.VLB and a content report named USECPGDP.TXT. The VLB must be renamed to match the PICS System Name, or Paducah.VLB at the USEC/PGDP site, because the VServer application uses the PICS System Name to locate the appropriate VLB. EVI chose to require the rename to help prevent accidental VLB replacements.

The contend report contains information from the VLB about when, where, and who created it followed by a listing of all of the source files it contains. Note that the VLB librarian is "smart" enough to store only one copy of each particular source file, even though it may be targeted to many different nodes and/or different names. The content report looks something like this:

Scanning library for integrity...Passed.
Verification Library header:
  Maximum files     :  1024
  Current files     :   167
  Maximum nodes     :   128
  Current nodes     :    95
  Files per node    :   256
  VLB Header Version:     1
  -- VLB Creation --
  Date/Time         : Thu Sep 22, 2005  02:14:34 PM (GMT)
  NT User Name      : steve
  NT Computer Name  : FRED
  -- VLB has not been updated --

2005/07/14 20:32   00.00.00.0      00.00.00.0        39122  lookup.bin
2005/06/07 19:56   02.00.02.0      01.00.61.0       114688  pics.cpl
2005/04/06 18:43   02.00.02.0      01.03.09.3        36864  deu.exe
2005/04/06 19:04   02.00.02.0      01.00.03.2        45056  gEdit.exe
2005/04/25 20:18   02.00.02.0      02.01.125.0        86016 monitor.exe
2005/04/01 15:34   00.00.00.0      00.00.00.0        40960  picsver.exe
2005/06/08 20:48   02.00.02.0      02.00.59.0       446464  redisp.exe
2005/07/28 15:30   02.00.02.0      01.00.07.2        65536  sdbcView.exe
2005/04/06 19:13   02.00.02.0      01.01.70.3       241664  taskmon.exe
2005/04/06 19:00   02.00.02.0      01.00.07.3       106496  vClient.exe
2005/08/10 15:23   02.00.02.0      01.00.13.0        40960  VPushC.exe
2005/04/06 19:03   02.00.02.0      02.00.54.1        24576  watchdog.exe
2004/07/01 15:41   00.00.00.0      00.00.00.0        16384  picsauth.exe
2004/07/01 15:41   01.00.00.24     01.00.03.0        41472  vlist.exe
2002/03/01 20:47   00.00.00.0      00.00.00.0       912966  ReDispBg(4x3).bmp
2003/10/06 19:07   00.00.00.0      00.00.00.0      1138422  ReDispBg(16x9).bmp
2002/04/25 13:42   00.00.00.0      00.00.00.0         4267  dbio.ini
2002/05/13 18:24   00.00.00.0      00.00.00.0          320  ReDisp.ini
2002/08/07 15:37   00.00.00.0      00.00.00.0           65  sdbcView.ini
2003/03/27 14:18   00.00.00.0      00.00.00.0          793  VPushC.ini
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.pgf
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.log
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2001/01/04 14:43   02.02.00.0      02.02.00.0        24576  DVnames.dll
2001/01/04 14:32   02.02.00.0      02.02.00.0        32818  DVnamesd.dll
2001/01/09 13:34   02.02.00.0      02.02.00.0      1675264  DVtools.dll
2001/01/09 13:01   02.02.00.0      02.02.00.0      2162738  DVTOOLSd.dll
2001/01/09 13:35   02.02.00.0      02.02.00.0       729088  dvwin.dll
2001/01/09 13:02   02.02.00.0      02.02.00.0      1568816  dvwind.dll
2005/04/01 14:59   02.00.02.0      01.00.03.2        69632  evColor.dll
2005/04/01 14:59   02.00.02.0      01.00.03.2       143415  evColorD.dll
2005/08/10 15:46   02.00.02.0      02.02.22.0       122880  Evi32.dll
2005/08/10 15:46   02.00.02.0      02.02.22.0       155699  Evi32D.dll
2005/04/07 13:29   02.00.02.0      01.00.01.7       110648  EviCntrd.dll
2005/04/07 13:29   02.00.02.0      01.00.01.7        32768  evicntrl.dll
2003/07/07 14:44   01.00.01.0      01.00.00.17       32768  evDibApi.dll
2003/07/07 14:44   01.00.01.0      01.00.00.17      114743  evDibApiD.dll
2005/04/07 13:29   02.00.02.0      01.00.03.3        53248  evifilesync.dll
2005/04/07 13:29   02.00.02.0      01.00.03.3       135231  eviFileSyncD.dll
2005/04/07 13:29   02.00.02.0      01.00.00.116      49152  EvIpcApi.dll
2005/07/05 13:31   02.00.02.0      01.00.00.116      49207  EvIpcApiD.dll
2005/04/01 14:54   02.00.02.0      01.00.00.4        45056  EVIShell.dll
2005/04/01 14:55   02.00.02.0      01.00.00.4       225337  EVIShellD.dll
2005/04/26 19:16   02.00.02.0      02.00.146.3        49152 EvPics32.dll
2005/04/26 19:16   02.00.02.0      02.00.146.3       135223 EvPics32D.dll
2004/06/30 17:02   01.00.00.24     01.00.01.0       245816  evRecald.dll
2004/06/30 17:01   01.00.00.24     01.00.01.0        53248  Evrecall.dll
2005/06/06 19:27   02.00.02.0      01.03.14.0        36864  EvSdbApi.dll
2005/06/06 19:27   02.00.02.0      01.03.14.0       114743  EvSdbApiD.dll
2005/04/07 13:29   02.00.02.0      01.02.01.2        36864  EvSdbCacheX.dll
2005/04/07 13:29   02.00.02.0      01.02.01.2        36924  EvSdbCacheXD.dll
2005/04/07 13:29   02.00.02.0      01.00.89.2        36864  EvSite.dll
2005/04/07 13:29   02.00.02.0      01.00.03.3       135168  evSiteCtrl.dll
2005/04/07 13:29   02.00.02.0      01.00.03.3       319545  EvSiteCtrlD.dll
2005/04/07 13:29   02.00.02.0      01.00.89.2        61497  EvSiteD.dll
2005/04/07 13:29   02.00.02.0      01.00.73.3        28672  EvTmApi.dll
2005/04/07 13:29   02.00.02.0      01.00.73.3       106549  EvTmApiD.dll
2005/04/06 18:38   02.00.02.0      01.01.08.3       102456  picsapi.dll
2005/04/06 18:38   02.00.02.0      01.01.08.3       196663  picsapid.dll
2000/02/21 12:41   01.00.03.0      01.00.03.0        96768  sfttr32.dll
2001/05/21 16:37   01.00.03.0      01.00.03.0       311358  SFTTR32d.dll
2005/07/14 20:31   01.00.01.0      01.00.03.3        86016  soh.dll
2002/07/22 19:05   06.01.9359.0      06.01.9359.0       290869 msvcrt.dll
1999/12/07 12:00   06.01.8637.0      06.01.8637.0        77878 msvcirt.dll
2005/04/06 19:03   02.00.02.0      01.02.02.3        36864  cadptime.exe
2002/05/17 17:42   00.00.00.0      00.00.00.0          344  cadptime.ini
1999/12/17 17:37   00.00.00.0      00.00.00.0        55708  8800ai.exe
2005/03/07 20:53   00.00.00.0      00.00.00.0       122736  8800av.exe
2005/03/08 14:28   00.00.00.0      00.00.00.0       124856  8800cpi.exe
1999/12/17 17:37   00.00.00.0      00.00.00.0        22952  8800di.exe
2000/05/16 21:15   00.00.00.0      00.00.00.0           43  aicard.bat
2001/10/09 16:56   00.00.00.0      00.00.00.0        25243  checknet.exe
2000/05/16 21:15   00.00.00.0      00.00.00.0           43  dicard.bat
2001/05/19 01:17   00.00.00.0      00.00.00.0         8273  timereso.com
2000/05/16 21:15   00.00.00.0      00.00.00.0         6970  vga.com
2001/05/19 09:46   00.00.00.0      00.00.00.0         8513  wdt.com
2005/08/03 20:02   00.00.00.0      00.00.00.0       112926  8800av.exe.linux
2005/08/03 20:00   00.00.00.0      00.00.00.0       131129  8800cpi.exe.linux
2005/06/14 14:55   00.00.00.0      00.00.00.0        57693  nc8800stat
2005/08/01 18:41   00.00.00.0      00.00.00.0          862  8800.conf
2005/04/06 19:03   00.00.00.0      00.00.00.0        98304  cadp2csv2.exe
2005/04/06 19:03   02.00.02.0      04.02.08.1       204800  dbio.exe
2001/09/07 15:42   00.00.00.0      00.00.00.0         6428  fakedata.ssl
2001/08/24 14:07   00.00.00.0      00.00.00.0         6428  fdnoinit.ssl
2005/04/06 18:44   02.00.02.0      02.00.03.2        61440  HiServ.exe
2005/04/06 18:44   02.00.02.0      02.00.02.3        28672  muxclk.exe
2005/08/04 18:51   02.00.02.0      02.01.178.0        86016 MuxCtl.exe
2005/05/27 14:09   02.00.02.0      02.01.02.1        40960  MuxSdb.exe
2005/04/06 18:47   02.00.02.0      01.00.03.3        36864  OpCon.pma
2005/04/06 19:05   02.00.02.0      01.00.03.2        73728  pedit.pma
2005/04/06 18:50   02.00.02.0      02.00.01.3        32768  PicsMmi.exe
2005/04/06 18:52   02.00.02.0      02.00.09.2       163840  PicsTest.exe
2005/04/06 18:54   02.00.02.0      01.01.31.1        36864  Point.pma
2005/04/06 18:55   02.00.02.0      01.02.08.3        53248  rtdb.exe
2005/05/27 18:51   02.00.02.0      02.01.06.0       192512  sdb.exe
2005/08/23 14:02   02.00.02.0      02.01.19.0       131072  sdBatch.exe
2005/04/06 18:59   02.00.02.0      01.04.00.2        98304  SdbCc.exe
2005/04/08 12:12   02.00.02.0      02.00.88.1        49152  SDServer.exe
2005/04/06 19:12   02.00.02.0      01.00.02.3        32768  sied.pma
2005/08/01 20:30   01.00.02.0      01.02.06.0        49152  SysLog.exe
2005/08/01 20:26   00.00.00.0      00.00.00.0         3253  SysLog.ini
2005/04/06 19:12   02.00.02.0      01.01.06.3       475136  sysmon.exe
2005/04/06 19:00   02.00.02.0      01.00.81.3        32768  SysPoint.exe
2002/12/04 13:54   00.00.00.0      00.00.00.0          184  SdClient.ini
2004/11/09 19:48   00.00.00.0      00.00.00.0          241  SdServer.ini
2005/08/10 20:09   00.00.00.0      00.00.00.0         9099  Systems.ini
2005/08/10 20:11   00.00.00.0      00.00.00.0        47565  TaskList.ini
2004/04/16 14:00   00.00.00.0      00.00.00.0          356  muxctl.ini
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2005/04/06 18:40   02.00.02.0      02.00.06.3        53248  AlarmLog.exe
2005/04/06 18:41   02.00.02.0      02.01.21.1        98360  AlarmSort.exe
2005/08/10 15:20   02.00.02.0      01.06.42.0        57344  MoData.exe
2005/08/18 18:00   02.00.02.0      01.00.42.0        57344  upData.exe
2005/08/17 19:10   02.00.02.0      01.04.24.0       114688  gPlot.exe
2005/08/03 17:33   02.00.02.0      02.00.14.0        77824  opal.exe
2005/06/28 13:17   02.00.02.0      01.04.14.0       315392  pgPlot.exe
2005/04/06 18:55   02.00.02.0      01.03.12.3        57344  rtremote.exe
2005/06/07 17:08   02.00.02.0      02.00.94.0        49152  SDClient.exe
2005/04/06 19:00   02.00.02.0      01.00.10.3        45056  SlopeInt.exe
2004/11/17 14:35   00.00.00.0      00.00.00.0          535  MoData.ini
2002/04/22 14:10   00.00.00.0      00.00.00.0         3914  AlarmLog.ini
2005/03/21 18:01   00.00.00.0      00.00.00.0         3646  AlarmSort.ini
2003/04/01 14:53   00.00.00.0      00.00.00.0         1242  opal.ini
2004/10/07 20:54   00.00.00.0      00.00.00.0        10101  pgPlot.ini
2003/07/01 18:15   00.00.00.0      00.00.00.0         2069  pgPlot.keys
2003/06/27 12:40   00.00.00.0      00.00.00.0        14114  pgPlot.points
2005/04/06 18:40   02.00.02.0      01.00.01.3        45056  AlarMon.exe
2005/04/06 19:05   00.00.00.0      00.00.00.0        69632  pdaDump.exe
2005/04/06 18:47   02.00.02.0      01.02.07.3        28672  PDRSarch.exe
2005/04/21 20:37   02.00.02.0      02.06.14.0       110592  PDRSrtrv.exe
2005/09/22 14:11   02.00.02.0      02.02.49.0       167988  PicsRPG.exe
2005/04/06 18:59   02.00.02.0      01.00.08.3        98304  Shifty.exe
2002/06/28 19:17   00.00.00.0      00.00.00.0          771  AlarMon.ini
2002/12/04 14:35   00.00.00.0      00.00.00.0           25  PDR-host.ini
2002/07/01 17:05   00.00.00.0      00.00.00.0          166  shifty.ini
2005/04/06 18:43   02.00.02.0      02.01.02.2        32768  DarsArch.exe
2005/04/06 18:43   00.00.00.0      00.00.00.0        24576  DarsDump.exe
2005/04/06 18:43   02.00.02.0      01.04.02.3        57344  DarsRtrv.exe
2005/04/06 18:44   02.00.02.0      02.01.01.3        40960  DarsSrvr.exe
2005/06/08 20:29   02.00.02.0      02.01.06.0        65536  acb.exe
2005/04/06 18:55   02.00.02.0      01.02.13.3        32768  RTServer.exe
2005/06/09 16:53   02.00.02.0      01.00.05.0        81920  VPushH.exe
2005/08/11 18:48   02.00.02.0      01.01.04.0        45056  gRecv.exe
2005/06/03 20:17   00.00.00.0      00.00.00.0          239  SdServer.ini
2005/06/09 13:24   00.00.00.0      00.00.00.0          850  VPushH.ini
2004/10/13 17:38   00.00.00.0      00.00.00.0         1007  VServer.ini
2005/07/14 14:00   00.00.00.0      00.00.00.0          488  gRecv.ini
2002/05/28 17:22   00.00.00.0      00.00.00.0          116  acc.ini
2005/04/06 18:55   02.00.02.0      01.01.72.3        45056  RtdbDde.exe
2005/08/02 18:23   02.00.02.0      02.00.04.3       135224  PicsViews.exe
2002/11/11 17:58   00.00.00.0      00.00.00.0            8  placeholder.txt
2005/06/28 13:44   02.00.02.0      01.01.27.0       147456  Libra.exe
2002/08/06 14:20   00.00.00.0      00.00.00.0        49664  io.dll
2005/06/15 14:10   00.00.00.0      00.00.00.0         3911  Libra.ini
2005/06/08 20:26   02.00.02.0      02.02.19.0       110592  acc.exe
2001/05/10 18:26   00.00.00.0      00.00.00.0           89  ACCLegal.txt
2001/10/18 17:47   00.00.00.0      00.00.00.0        29750  ACCLogo.bmp
2005/06/06 14:06   02.00.02.0      01.01.11.3        49152  rtclient.exe
2005/04/06 19:03   02.00.02.0      01.00.03.3        28672  VibrAnal.exe
2002/05/28 17:22   00.00.00.0      00.00.00.0          116  acc.ini
2005/06/07 14:40   00.00.00.0      00.00.00.0         5346  acctasks.ini
2003/04/09 15:20   00.00.00.0      00.00.00.0         2552  opal.ini
2005/06/09 15:13   00.00.00.0      00.00.00.0          293  SdClient.ini
2005/06/09 15:13   00.00.00.0      00.00.00.0          914  VPushC.ini