Changes To KitCreator

Changes to "KitCreator" between 2010-09-27 22:42:55 and 2010-09-27 22:46:33

101
102
103
104
105
106
107
108
109


110
111
112
113
114
115





116
117
118
119
120
121
122
123
124
125
126
127
128
129
130













131
132
133

134
135
136

137
138
139

140
141
142

143
144
145
146
147
148
149
150
151







152
153
154
155
156
157
158
159
101
102
103
104
105
106
107


108
109






110
111
112
113
114















115
116
117
118
119
120
121
122
123
124
125
126
127



128



129



130



131









132
133
134
135
136
137
138

139
140
141
142
143
144
145







-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-







      </ol>
    </li>
  </ol>
</p>

<hr>

<div class="kitcreator_longtext">
  <b>Method of Operation</b>
<p class="kitcreator_longtext">
  <b>Method of Operation</b><br/>
  <p>
    <i>Details:</i> The general mechanism that enables a Tclkit to operate is a small Tcl initialization routine linked statically to the core libraries needed to operate a Tcl interpreter, the Tcl VFS Layer, and a database-backed (Metakit) Virtual File System that is appended to the end of the executable.</p><p>This project brings together all of the required pieces, plus some additional pieces that were found in the original Tclkit:
    <ol type="1">
      <li>Tk (dynamically linked)</li> 
      <li>Itcl (dynamically linked)</li>
    </ol>
  <i>Details:</i> The general mechanism that enables a Tclkit to operate is a small Tcl initialization routine linked statically to the core libraries needed to operate a Tcl interpreter, the Tcl VFS Layer, and a database-backed (Metakit) Virtual File System that is appended to the end of the executable.</p><p>This project brings together all of the required pieces, plus some additional pieces that were found in the original Tclkit:
  <ol type="1">
    <li>Tk (dynamically linked)</li> 
    <li>Itcl (dynamically linked)</li>
  </ol>
  </p>
  <p>
    The source code for these pieces are downloaded, compiled, and linked, and the database containing the appropriate filesystem data is created.  What sets this project apart from other similar projects is that:
    <ol type="1">
      <li>It attempts to be modular;</li> 
      <li>It supports cross-compiling;</li> 
      <li>It downloads the source from their original repositories;</li> 
      <li>It allows you to specify an arbitrary version of Tcl (including CVS); and</li> 
      <li>It uses GNU Autoconf scripts for compiling the part of the Tclkit that brings the whole thing together (the Kitsh)</li>
    </ol>
    To accomplish these goals the following mechanisms are in place:
    <ol type="1">
      <li>The top-level "kitcreator" script; and</li> 
      <li>Per-project subdirectories, each containing a "build.sh" script</li>
    </ol>
  The source code for these pieces are downloaded, compiled, and linked, and the database containing the appropriate filesystem data is created.  What sets this project apart from other similar projects is that:
  <ol type="1">
    <li>It attempts to be modular;</li> 
    <li>It supports cross-compiling;</li> 
    <li>It downloads the source from their original repositories;</li> 
    <li>It allows you to specify an arbitrary version of Tcl (including CVS); and</li> 
    <li>It uses GNU Autoconf scripts for compiling the part of the Tclkit that brings the whole thing together (the Kitsh)</li>
  </ol>
  To accomplish these goals the following mechanisms are in place:
  <ol type="1">
    <li>The top-level "kitcreator" script; and</li> 
    <li>Per-project subdirectories, each containing a "build.sh" script</li>
  </ol>
  </p>
  <p>
    The top-level "kitcreator" script is very simple.  Its only job is to interpret command line arguments, and call the per-project "build.sh" scripts. For the "tcl" project it also finds the appropriate "tclConfig.sh" (and stores this path in TCLCONFIGDIR) to enable subsequent build scripts to find the appropriate Tcl to link against.
  The top-level "kitcreator" script is very simple.  Its only job is to interpret command line arguments, and call the per-project "build.sh" scripts. For the "tcl" project it also finds the appropriate "tclConfig.sh" (and stores this path in TCLCONFIGDIR) to enable subsequent build scripts to find the appropriate Tcl to link against.<br/>
  </p>
  <p>
    The per-project "build.sh" scripts are entirely autonomous.  They are responsible for downloading the source code for the appropriate version that will compile and link against the current version of Tcl (user requested version can be found in "TCLVERS", while the actual version must be requested from the "tclConfig.sh" script), compiling it, installing a functional copy into the per-project "inst" directory, and installing anything that needs to be in the Tclkit's VFS root into the per-project "out" directory.
  The per-project "build.sh" scripts are entirely autonomous.  They are responsible for downloading the source code for the appropriate version that will compile and link against the current version of Tcl (user requested version can be found in "TCLVERS", while the actual version must be requested from the "tclConfig.sh" script), compiling it, installing a functional copy into the per-project "inst" directory, and installing anything that needs to be in the Tclkit's VFS root into the per-project "out" directory.<br/>
  </p>
  <p>
    The exception to this is the "kitsh" project.  It is the glue that binds all the individual projects together into a single executable.  Its build script does not create an "inst" or an "out" directory because it is not a library. Instead, it collects all the other project's "out" directories into a single directory (starpack.vfs), as well a static file (boot.tcl).  It then compiles the source code, and then installs the Metakit database containing the VFS onto the resulting executable.
  The exception to this is the "kitsh" project.  It is the glue that binds all the individual projects together into a single executable.  Its build script does not create an "inst" or an "out" directory because it is not a library. Instead, it collects all the other project's "out" directories into a single directory (starpack.vfs), as well a static file (boot.tcl).  It then compiles the source code, and then installs the Metakit database containing the VFS onto the resulting executable.<br/>
  </p>
  <p>
    If the "mk4tcl" project fails to build (or is not requested to be built), the rest of the project will be built using zip files instead of Metakit databases.
  If the "mk4tcl" project fails to build (or is not requested to be built), the rest of the project will be built using zip files instead of Metakit databases.<br/>
  </p>
  <p>
    To create the storage database, one of two Tclkits is used (tried in this order):
    <ol type="1">
      <li>The Tclkit specified by the TCLKIT environment variable (or "tclkit" if that variable is not set) if it is functional; or</li> 
      <li>The built Tclkit itself</li>
    </ol>
    The second method will not work if the built Tclkit is not executable on the current platform (i.e., in the case of cross-compilation) and so it may be necessary to bootstrap a runnable Tclkit first.
  </p>
  To create the storage database, one of two Tclkits is used (tried in this order):
  <ol type="1">
    <li>The Tclkit specified by the TCLKIT environment variable (or "tclkit" if that variable is not set) if it is functional; or</li> 
    <li>The built Tclkit itself</li>
  </ol>
  The second method will not work if the built Tclkit is not executable on the current platform (i.e., in the case of cross-compilation) and so it may be necessary to bootstrap a runnable Tclkit first.
</p>
</div>

<hr>

<p><b>Included Packages</b></p><table cellspacing=0 cellpadding=0 summary='' class=wikit_table><thead><tr class='wikit_table_header'><th class="wikit_table_header_cell"> Package Name </th><th class="wikit_table_header_cell"> Package Version </th><th class="wikit_table_header_cell"> Included When...   </th><th class="wikit_table_header_cell"> Linking Method </th></tr></thead><tbody><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Tk           </td><td class="wikit_table_row_cell"> <i>same as Tcl</i> </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Dynamic        </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Incr Tcl     </td><td class="wikit_table_row_cell"> 3.4b1           </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Dynamic        </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> starkit      </td><td class="wikit_table_row_cell"> 1.3.2           </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Metakit      </td><td class="wikit_table_row_cell"> 2.4.9.7         </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> TclVFS       </td><td class="wikit_table_row_cell"> 20080503        </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> PWB          </td><td class="wikit_table_row_cell"> 1.1             </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Rechan       </td><td class="wikit_table_row_cell"> 1.0             </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Zlib         </td><td class="wikit_table_row_cell"> 1.1             </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Thread       </td><td class="wikit_table_row_cell"> 2.6.5           </td><td class="wikit_table_row_cell"> --enable-threads   </td><td class="wikit_table_row_cell"> Dynamic        </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Registry     </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Building for Win32 </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> DDE          </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Building for Win32 </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> http         </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> opt          </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> msgcat       </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Always             </td><td class="wikit_table_row_cell"> Static         </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> tcltest      </td><td class="wikit_table_row_cell"> <i>varies</i>      </td><td class="wikit_table_row_cell"> Unless MINBUILD    </td><td class="wikit_table_row_cell"> Static         </td></tr></tbody></table><hr><p><b>Tested Platforms</b></p><table cellspacing=0 cellpadding=0 summary='' class=wikit_table><thead><tr class='wikit_table_header'><th class="wikit_table_header_cell"> Operating System </th><th class="wikit_table_header_cell"> CPU Architecture </th><th class="wikit_table_header_cell"> Tcl Version </th><th class="wikit_table_header_cell"> Compiler </th><th class="wikit_table_header_cell"> Cross-compile </th></tr></thead><tbody><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Linux 2.6   </td><td class="wikit_table_row_cell"> x86     </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> gcc 4.1.2         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Linux 2.6   </td><td class="wikit_table_row_cell"> x86     </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> gcc 4.1.2         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Linux 2.6   </td><td class="wikit_table_row_cell"> x86     </td><td class="wikit_table_row_cell"> CVS HEAD </td><td class="wikit_table_row_cell"> gcc 4.1.2         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Solaris 8   </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> gcc 3.4.6         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Solaris 8   </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> gcc 3.4.6         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Solaris 10  </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> gcc 3.4.3         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Solaris 10  </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> gcc 3.4.3         </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Solaris 10  </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> SunStudio 12      </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Solaris 10  </td><td class="wikit_table_row_cell"> SPARC   </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> SunStudio 12      </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> HP/UX 11iv1 </td><td class="wikit_table_row_cell"> PA-RISC </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> gcc               </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> HP/UX 11iv1 </td><td class="wikit_table_row_cell"> PA-RISC </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> gcc               </td><td class="wikit_table_row_cell"> no </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Linux       </td><td class="wikit_table_row_cell"> ARM     </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> gcc 4.3.3         </td><td class="wikit_table_row_cell"> yes </td></tr><tr class='wikit_table_row_odd'><td class="wikit_table_row_cell"> Windows     </td><td class="wikit_table_row_cell"> x86     </td><td class="wikit_table_row_cell"> 8.4.19   </td><td class="wikit_table_row_cell"> mingw32 gcc 3.4.2 </td><td class="wikit_table_row_cell"> yes </td></tr><tr class='wikit_table_row_even'><td class="wikit_table_row_cell"> Windows     </td><td class="wikit_table_row_cell"> x86     </td><td class="wikit_table_row_cell"> 8.5.8    </td><td class="wikit_table_row_cell"> mingw32 gcc 3.4.2 </td><td class="wikit_table_row_cell"> yes </td></tr></tbody></table><hr><p><b>Versioning Information</b></p><p><i>Version Numbers</i></p><p><ol type="1" class="wikit_ol_depth_0"><li>The version number for a KitCreator release is in the following format:<ol type="a" class="wikit_ol_depth_1"><li><i>Major</i>.<i>Minor</i>.<i>Revision</i>.<i>Version Control Tag</i></li> 
</ol></li> 
<li>The components are incremented based on various criteria:<ol type="a" class="wikit_ol_depth_1"><li><i>Major</i>: When the interface changes in an incompatible way possibly with no way to revert to the previous behavior</li> 
<li><i>Minor</i>: When the basic functionality is altered or any interfaces changes are mode (all interface changes that are incompatible will support the previous behavior); Substantial new features</li>