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.
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).
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).
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
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.
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