1. Structure 1.1. Top-level tarball hierarchy MLW.tar.gz is the original Hope tarball provided by Xanalys Limited on 2013-04-25. All its contents are contained in the directory hope/xanhope2-man/hope.0/compound/ Within that directory are 51 subdirectories, numbered from 0 to 63 (not all numbers are used). Each subdirectory contains from 1 to 5 compound directories, such as hope/xanhope2-man/hope.0/compound/9/MLWrts/. There's a total of 90 compound directories. The compound names (such as "MLWrts") are unique. These numbered directories are just a Hope implementation detail; compounds can be viewed as a single flat namespace. 1.2. Compound directory Each compound directory contains the following items: - an RCS directory containing a number of ,v files; see below - an empty directory named "*?lock" - an empty file called *lastsyncreq - an empty file called *lastupdate - a file called *claims. These are all empty except the following HQNlicshar/*claims .::=luke::=soft::=makedefs:solaris::=1.3::=919267278::=add -R argument for ucb lib MLWbasis/*claims MLWorks_10r3::=jkbrook::=soft::=__real_array2.sml::=1.1.1.1.3.1::=876420914::=[Bug #30245]\nMerging from trunk:\nFixing patterns -- RowMajor should be Array2.RowMajor &c. MLWorks_10r3::=jkbrook::=soft::=_mono_array2.sml::=1.1.1.1.3.1::=876420916::=[Bug #30245]\nMerging from trunk:\nFixing patterns -- RowMajor should be Array2.RowMajor &c. MLWdemo/*claims .::=brucem::=soft::=basis:__date_demo.sml::=1.2::=875262614::=[Bug #30269]\nDATE has changed, update to use new specification. .::=jkbrook::=soft::=foreign:stdio:README.txt::=1.1::=908816801::=[Bug #70184]\nUpdate for projects .::=johnh::=soft::=foreign:dirent:TEST.sh::=1.3::=921066464::=[Bug #190506]\nFix .lib pointer .::=johnh::=soft::=foreign:stdio:TEST.sh::=1.3::=921066499::=[Bug #190506]\nFix .lib pointer. .::=johnh::=soft::=foreign:ndbm:TEST.sh::=1.4::=921066541::=[Bug #190506]\nFix .lib pointer. .::=johnh::=soft::=foreign:add:Makefile.Irix::=1.3::=921149171::=[Bug #190506]\nFix include path and .lib filename to be correct for installation default. .::=johnh::=soft::=foreign:add:Makefile.Linux::=1.1::=921149172::=[Bug #190506]\nFix include path and .lib filename to be correct for installation default. .::=johnh::=soft::=foreign:add:Makefile.Solaris::=1.3::=921149173::=[Bug #190506]\nFix include path and .lib filename to be correct for installation default. MLWgui/*claims MLWorks_workspace_97::=johnh::=soft::=proj_workspace.sml::=1.1.1.2::=875029879::=[Bug #30071]\n Continuing work for Project Workspace - adding option for storing relative pathnames .::=johnh::=soft::=_error_browser.sml::=1.29::=900061324::=[Bug #30400]\nFix returning to and from tty mode. MLWinterpreter/*claims MLWorks_workspace_97::=johnh::=soft::=_incremental.sml::=1.137.2.7::=885902890::=[Bug #30071]\nMerge check_mo and check_module changes from trunk. MLWorks_workspace_97::=johnh::=soft::=incremental.sml::=1.67.2.5::=885902893::=[Bug #30071]\nMerge check_mo and check_module changes from trunk. MLWorks_workspace_97::=johnh::=soft::=_shell_utils.sml::=1.113.2.7::=885902895::=[Bug #30071]\nMerge check_mo and check_module changes from trunk. MLWlexer/*claims MLWlexer_basis_io_1996::=davids::=soft::=__lexer.sml::=1.16.1.1::=840641569::=** No reason given. ** MLWlambda/*claims .::=andreww::=soft::=_environ.sml::=1.55::=867683188::=[Bug #30106]\npropagating changes to valenv type. MLWmain/*claims MLWorks_workspace_97::=johnh::=soft::=_toplevel.sml::=1.240.2.7::=881773953::=[Bug #30071]\nSet object directory before doing compilation. MLWorks_workspace_97::=johnh::=soft::=_project.sml::=1.41.2.12::=885296590::=[Bug #30071]\nSupport for subprojects. MLWorks_workspace_97::=johnh::=soft::=project.sml::=1.12.2.5::=885296593::=[Bug #30071]\nSupport for subprojects. MLWrts/*claims .::=stephenb::=soft::=src:OS:Win32:foreign_loader.c::=1.3::=865945090::=[Bug #50010]\nget_name_table: replace the code that calculates the size of the\nfunction name table -- it is completely broken. MLWorks_workspace_97::=daveb::=soft::=GNUmakefile::=1.91.2.1::=881326695::=[Bug #30071]\nAdapting distribution to Project Workspace. MLWsrc/*claims MLWorks_workspace_97::=johnh::=soft::=mlworks.mlp::=1.1.1.1::=886421114::=[Bug #30071]\nAdding MIPS/Irix configuration. MLWsrc-images/*claims MLWorks_workspace_97::=johnh::=soft::=I386:NT:Makefile::=1.84.2.2::=875175967::=[Bug #30071]\nMove *proj_files before *project MLWtest_suite/*claims .::=johnh::=soft::=COMPILE_FILE.sh::=1.11::=864725374::=[Bug #20033]\nRemove call to perl. MLWtest_suite-debugger/*claims MLWorks_11r1::=jkbrook::=soft::=debugger_options.ans::=1.10.1.1.1.2.1.1::=876241992::=[Bug #70011]\nMerging from MLWorks_10r3:\nAvoid dependence on exact contents of shell structures .::=johnh::=soft::=debugger_options.ans::=1.13::=893673031::=[Bug #30229]\nReflect recent changes to mode and compiler options. MLWtest_suite-shell/*claims MLWorks_11r1::=jkbrook::=soft::=shell_file_load_object_1.ans::=1.11.1.1.1.2.1.1::=876242144::=[Bug #70011]\nMerging from MLWorks_10r3:\nModify answer files as loading mo module messages no longer produced MLWorks_11r1::=jkbrook::=soft::=shell_file_load_object_2.ans::=1.11.1.1.1.2.1.1::=876242145::=[Bug #70011]\nMerging from MLWorks_10r3:\nModify answer files as loading mo module messages no longer produced MLWorks_11r1::=jkbrook::=soft::=shell_file_load_object_3.ans::=1.10.1.1.1.2.1.1::=876242147::=[Bug #70011]\nMerging from MLWorks_10r3:\nModify answer files as loading mo module messages no longer produced MLWtools/*claims MLWorks_11::=jkbrook::=soft::=inst.bat::=1.12.1.2.1.2::=872070917::=[Bug #20091]\nRemoving reference to MLextra.dll MLWutils/*claims MLWorks_workspace_97::=johnh::=soft::=mlworks_timer.sml::=1.1.1.2::=886092144::=[Bug #30071]\nMerge in timer changes. MLWorks_workspace_97::=johnh::=soft::=__mlworks_timer.sml::=1.1.1.2::=886092459::=[Bug #30071]\nMerge in timer changes. - A few compounds also contain files called *parents, *remove, or *syncherror, as follows: HQNlicshar/*parents LISPhqnls::=LCL-5-0-0-beta-0 HQNlicserv::=LCL-5-0-0-beta-0 HQNlicadmin::=LCL-5-0-0-beta-0 HQNlicmake::=LCL-5-0-0-beta-0 HQNlicsigs::=LCL-5-0-0-beta-0 HQNlicep::=LCL-5-0-0-beta-0 HQNlictools::=LCL-5-0-0-beta-0 SWprod_motif::=LCL-5-0-0-beta-0 SWprod_coreRip::=LCL-5-0-0-beta-0 SWprod_jac::=LCL-5-0-0-beta-0 HQNlicshar/*syncherror Synch error by paulm running 'status -rec -show units, sub' unable to connect to site lwhope1-cam to synch: HQNliclient, HQNc-standard, HQNlicshar You may need to use -local. Error: ports'masterConnect The master of 'HOPEInnards', 'lwhope1-cam' is not a known server! HQNliclient/*parents LISPhqnls::=LCL-5-0-0-beta-0 HQNlicmake::=LCL-5-0-0-beta-0 HQNlictools::=LCL-5-0-0-beta-0 SWprod_jac::=LCL-5-0-0-beta-0 SWprod_coreRip::=LCL-5-0-0-beta-0 SWprod_motif::=LCL-5-0-0-beta-0 HQNliclient/*syncherror Synch error by paulm running 'status -rec -show units, sub' unable to connect to site lwhope1-cam to synch: HQNliclient, HQNc-standard, HQNlicshar You may need to use -local. Error: ports'masterConnect The master of 'HOPEInnards', 'lwhope1-cam' is not a known server! HQNc-standard/*remove parent::=::=SWplug_hqmuldev::=::=Removing trunk of child, to add branch of child to branch of parent (I hope!) HQNc-standard/*syncherror Synch error by paulm running 'status -rec -show units, sub' unable to connect to site lwhope1-cam to synch: HQNliclient, HQNc-standard, HQNlicshar You may need to use -local. Error: ports'masterConnect The master of 'HOPEInnards', 'lwhope1-cam' is not a known server! 1.3. RCS directories Each RCS directory contains only files ending ,v. These are RCS files. All RCS files in all compounds only use branch "1" on the trunk. 1.4. Versioned Hope metadata files. Each compound includes three versioned files of Hope metadata, which appear in the compound's RCS directory: *attributes,v *definitions,v *parents,v These record versioning of the Hope-specific metadata. Each line in each of these files represents a tuple, using the string ::= as a separator. In a given compound, every branch of each of these RCS files is named (with a single exception: branch 1.394.1 of *parents,v in HQNc-standard). Each metadata RCS file for a given compound has the same set of branch names. We regard this set as the compound's branch names, together with ".", which means 'the trunk'. An example is "MLWorks_11r1". Some appear to be development branches ("MLWorks_MM_adapt" or "JFHgui"). There are 157 branch names in our tarball, but only 23 on MLW-specific compounds. Likewise, in a given compound, each of these metadata RCS files has the same set of named revisions. We regard this set as the compound's revision names. An example is "MLWorks_Beta_1996_06_07". There are 210 revision names in our tarball, but only 35 on MLW compounds. These are the same as "checkpoints". 1.4.1. *attributes The *attributes metadata file contains these tuples: (comp, , ) (unit, , , ) These define key/value attributes for the overall compound and for units within the compound. The metadata file is versioned (so can change over time, branch, etc). For the 'comp' tuples, is one of the following: _binary always false _versionControlled always true _compression always false _pcNaming true (HQNc_standard) or false (all other compounds) _directory a directory name: 82 different values (some are repeated) _compoundDescription 'No description supplied' (59 compounds), '-not-supplied' (30 compounds), 'Test files for the debugger' (MLWtest_suite-debugger) 61 compounds have this key _CompoundMasterLoc cam1 (55 compounds), man1 (3), cam2 (3), kendall1 (1). MLWgui_tests-listener appears in both cam1 and kendall1 (presumably it was migrated) a set of 55 compounds also have these keys: _rev an RCS revision: 1237 different values. _mode generally 511 (octal 777); compound MLWscripts also has 365 (octal 555) but changes to 511. _mtime a timestamp: 1745 different values from 864410077 (1997-05-23T17:54:37) to 1000782764 (2001-09-18T03:12:44) and 3 compounds (HQNlicshar HQNliclient HQNc-standard) have this key freezeStatus frozen or controlled (all have both these values) Of all these compound attributes, the _directory ones are certainly useful. Possibly the _rev, _mtime might be useful to us for understanding compound-level change tracking. The others are not useful. For the 'unit' tuples, is one of the following: _comment 19 different strings, such as '#' and '*'. _binary true (456 units) or false (1184 units) 23 units in 6 compounds have this key: _mode octal 555, 444, 666, or 550 one unit in MLWtest_suite-basis has both these keys: BugNo 1614 bug-number 1614 two units in HQNlicshar have this key: _mtime There are 3798 different (compound, unit) pairs with 'unit' tuples. It seems unlikely that any of these 'unit' tuples are useful to us in future, even for defining the units; unit definitions are in the *definitions metadata file. 1.4.2. *definitions The *definitions metadata file contains these tuples: (subcomp, ,