|
|
1.1 ! root 1: .so tmac.tr ! 2: .sv |1.25i ! 3: .LP ! 4: .ce 10 ! 5: \f3An Overview of the Porting Process for Version 5.9 of Icon\fR ! 6: .sp 2 ! 7: Ralph E. Griswold ! 8: .sp 1 ! 9: October 12, 1984 ! 10: .ce 0 ! 11: .sp 2 ! 12: .NH ! 13: Introduction ! 14: .PP ! 15: The process of porting Version 5.9 of Icon to a new computer ! 16: is described in detail in [1]. ! 17: This document is a companion to [1] an provides details of ! 18: testing to be carried out during the porting process. ! 19: .PP ! 20: Porting Icon starts out in the same way as installing an existing ! 21: implementation of Icon [2]. ! 22: At a point in the installation process, the installer becomes a ! 23: porter and provides the code needed for the new computer. The porter ! 24: then becomes an installer again and completes the port by completing ! 25: the installation. ! 26: .PP ! 27: To carry out the port, following the instructions in [2] through ! 28: Section 2.2 (\fIConfiguring the Icon System\fR). In the root directory, ! 29: referred to as \*Mv5g\fR, configure Icon using ! 30: .Ds ! 31: Icon-setup \-port \-host \fIname ! 32: .De ! 33: where \fIname\fR is the value to be produced by the Icon keyword ! 34: \*M&host\fR. ! 35: .PP ! 36: Now carry out the porting process as described in [1]. ! 37: When this is complete, ! 38: .Ds ! 39: make Clean ! 40: .De ! 41: to remove any object files left over from the porting process. Then ! 42: follow the instructions in [2], starting with Section 2.3 ! 43: (\fICompiling Icon\fR). ! 44: .NH ! 45: Test Programs ! 46: .PP ! 47: There are three sub-directories in \*Mv5g\fR ! 48: that contain test programs ! 49: for use by the porter: ! 50: .IP \*Mv5g/port\fR 1i ! 51: This sub-directory contains programs and reference data for step-by-step ! 52: testing and checking ! 53: of each component of the port. ! 54: .IP \*Mv5g/samples\fR ! 55: This sub-directory contains standard programs that are used to test existing implementations of ! 56: Icon and which should be run at the completion of a port to be sure ! 57: that Icon works properly over a range of applications. ! 58: .IP \*Mv5g/test\fR ! 59: This sub-directory contains ! 60: programs and reference data for testing a wide range of Icon features, ! 61: including boundary conditions and unusual computations. ! 62: These programs may be useful in final checking of a new implementation ! 63: and in locating obscure errors. ! 64: .LP ! 65: In each of \*Mport\fR, \*Msamples\fR, and \*Mtest\fR, there is a \*MMakefile\fR ! 66: with a number of entries for performing different tests. In all cases, ! 67: standard test output is supplied in a sub-directory named \*Mdistr\fR and newly ! 68: created test output is placed in a sub-directory named \*Mlocal\fR. ! 69: The standard test output was produced on a VAX-11 running under 4.2bsd ! 70: \*U. ! 71: .Un ! 72: The scripts used by the \*MMakefile\fRs assume that the components ! 73: of the ported Icon system reside in their standard places in the ! 74: distribution hierarchy [2]. If this is not the case, the shell scripts ! 75: will have to be modified. ! 76: .PP ! 77: Each test compares the standard output in \*Mdistr\fR to the ! 78: newly created output in \*Mlocal\fR and reports any differences. ! 79: Some differences are to be expected, even in a correct port, since ! 80: output may depend on machine-dependent parameters, the local ! 81: environment, and so forth. In general, the causes of such irrelevant ! 82: differences should be obvious. ! 83: .NH ! 84: Testing During the Porting Process ! 85: .PP ! 86: The porting process consists of building the components of the Icon ! 87: system one by one. There is a test for each step. ! 88: Go to the directory \*Mv5g/port\fR for testing during the porting process. ! 89: .PP ! 90: Before testing, assign the value \*M1\fR to the environment variable \*MICONCORE\fR. ! 91: This will cause the Icon interpreter to produce a core dump in case of ! 92: an error, which may be helpful in debugging. ! 93: .NH 2 ! 94: The Translator ! 95: .PP ! 96: Once the translator is constructed, test it by ! 97: .Ds ! 98: make Tran ! 99: .De ! 100: which runs the translator on a number of Icon programs, ! 101: produces ucode output in \*M.u1\fR and \*M.u2\fR files, ! 102: and compares it with corresponding standard output ! 103: files. ! 104: Since the translator is machine-independent and written ! 105: entirely in C, there should not be any differences. ! 106: .NH 2 ! 107: The Linker ! 108: .PP ! 109: When the new linker is successfully compiled, test it by ! 110: .Ds ! 111: make Link ! 112: .De ! 113: which runs the Icon linker on the files produced by the translator during ! 114: the preceding test and produces linker debugging output in ! 115: \&\*M.ux\fR files. ! 116: This process is comparatively slow because of the generation of ! 117: debugging output. ! 118: The format of \*M.ux\fR files is somewhat dependent on ! 119: computer and operating system details. In addition, the indexes of ! 120: built-in functions, which appear in the \*M.ux\fR files, are determined ! 121: by the extensions that are included in the Icon system when it is configured ! 122: [2]. Consequently, ! 123: there are likely to be differences \(em even extensive ones \(em ! 124: between the locally generated \*M.ux\fR files and the distributed ones. ! 125: Differences are not checked by \*Mmake\0Link\fR, but they can be ! 126: determined separately by ! 127: .Ds ! 128: make Linkcheck ! 129: .De ! 130: If extensive differences are encountered, ! 131: it may be necessary to examine the output in ! 132: \*Mlocal\fR manually. ! 133: .NH 2 ! 134: The Run-Time System ! 135: .PP ! 136: There are a number of steps in building the run-time system, and ! 137: each step should be checked separately. ! 138: The first test is ! 139: .Ds ! 140: make Basis ! 141: .De ! 142: which checks the elementary components of the run-time system that ! 143: are needed to run simple Icon programs. ! 144: The components involved are \*Miconx/start.s\fR, \*Mrt/setbound.s\fR, ! 145: \*Mlib/invoke.s\fR, \*Miconx/interp.s\fR, \*Mlib/efail.s\fR, ! 146: and \*Mlib/pfail.s\fR. See [1] for details. The remaining tests, and ! 147: the components of the run-time system that they check, in order, are: ! 148: .Ds ! 149: .ta 1.6i ! 150: make Arith # rt/arith.s ! 151: make Fail # rt/fail.s ! 152: make Pret # lib/pret.s ! 153: make Esusp # lib/esusp.s ! 154: make Lsusp # lib/lsusp.s ! 155: make Psusp # lib/psusp.s ! 156: make Suspend # rt/suspend.s ! 157: make Display # functions/display.c ! 158: make Gc # rt/gcollect.s\fR and \*Mrt/sweep.c ! 159: .De ! 160: .sp -1 ! 161: .NH ! 162: Complete Testing ! 163: .PP ! 164: Once the port is complete and all the tests above have been passed ! 165: successfully, the tests in the \*Msamples\fR and \*Mtest\fR ! 166: directories should be performed. ! 167: .NH 2 ! 168: Testing the Sample Programs ! 169: .PP ! 170: In the directory \*Mv5g/samples\fR, do ! 171: .Ds ! 172: make Std ! 173: .De ! 174: This test runs a number of sample programs and compares their output ! 175: with standard output. Differences should occur only in the ! 176: test program \*Mhello.icn\fR, which contains environment- and time-dependent ! 177: code. ! 178: .PP ! 179: Two groups of extensions to Version 5.9 can be included, optionally, when the Icon ! 180: system initially configured. See [2]. ! 181: If the sets extension is included in the port, ! 182: then ! 183: .Ds ! 184: make Set ! 185: .De ! 186: to test these features. If the experimental extensions to Version 5.9 ! 187: are included also, then ! 188: .Ds ! 189: make Xpx ! 190: .De ! 191: Alternatively, if both group of extensions are included, the three tests above ! 192: can be performed by ! 193: .Ds ! 194: make All ! 195: .De ! 196: .sp -1 ! 197: .NH 2 ! 198: Detailed Testing ! 199: .PP ! 200: Final detailed testing ! 201: should be done in the directory \*Mv5g/test\fR, using ! 202: .Ds ! 203: make Std ! 204: make Set ! 205: make Xpx ! 206: .De ! 207: or ! 208: .Ds ! 209: make All ! 210: .De ! 211: as appropriate. ! 212: .PP ! 213: The following programs may show differences for the indicated reasons: ! 214: .IP \*Mstd02.icn\fR .9i ! 215: The output may differ because of the number of hash chains in tables ! 216: is an installation-dependent parameter that affects the internal ! 217: organization of tables, to which this test is sensitive. ! 218: .IP \*Mstd06.icn\fR ! 219: This program contains environmental- and time-dependent code and its ! 220: output will certainly vary from the standard output. ! 221: .IP \*Mstd21.icn\fR ! 222: This program may terminate prematurely on systems with limited memory space. ! 223: .IP \*Mstd22.icn\fR ! 224: The output may differ for the same reasons as for \*Mstd02.icn\fR. ! 225: .IP \*Mstd26.icn\fR ! 226: The output may differ slightly because of differences in \*Mqsort\fR. ! 227: .IP \*Mstd29.icn\fR ! 228: This program calls operating system utilities; the output ! 229: may differ if these calls have different formats for their output. ! 230: .IP \*Mstd33.icn\fR ! 231: This program may terminate prematurely on systems with limited memory space. ! 232: .IP \*Mstd37.icn\fR ! 233: The output may differ for the same reasons as for \*Mstd02.icn\fR. ! 234: .IP \*Mset01.icn\fR ! 235: The output may differ because of the number of hash chains in sets ! 236: is an installation-dependent parameter that affects the internal ! 237: organization of sets, to which this test is sensitive. ! 238: .IP \*Mset02.icn\fR ! 239: The output may differ for the same reasons as for \*Mset01.icn\fR. ! 240: .PP ! 241: If the random numbers produced by the ported system differ from those ! 242: produced by the standard one, several tests may show differences in the ! 243: order of results or in the results themselves. ! 244: Any other differences that show up in these tests should be examined carefully. ! 245: .PP ! 246: Note that almost all of the tests end with an Icon run-time error. ! 247: This is intentional, and is used to check run-time error ! 248: detection in as many situations as possible. ! 249: .SH ! 250: References ! 251: .LP ! 252: 1. Mitchell, William H. \fIPorting the UNIX Implementation of Icon\fR. ! 253: Technical Report TR 83-10d, Department of Computer Science, ! 254: The University of Arizona. August 1984. ! 255: .LP ! 256: 2. Griswold, Ralph E. and William H. Mitchell. \fIInstallation and ! 257: Maintenance Guide for Version 5.9 of Icon\fR. Technical Report ! 258: TR 84-13a, Department of Computer Science, The University of Arizona. ! 259: October 1984.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.