Check-in [2203d001cd]
Overview
Comment:Enabled Mk4vfs compression

Added appropriate licensing information.

Updated README

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:2203d001cd3c5de03d3dea945eb3095afa6f5086
User & Date: rkeene on 2010-09-26 04:39:48
Other Links: manifest | tags
Context
2010-09-26
04:39
Fixed typo check-in: 6ad3fbe8a5 user: rkeene tags: trunk
04:39
Enabled Mk4vfs compression

Added appropriate licensing information.

Updated README check-in: 2203d001cd user: rkeene tags: trunk

04:39
KitCreator 0.0.7.x check-in: bbb991803b user: rkeene tags: trunk, 0.0.7
Changes

Added LICENSE version [abcc194246].

            1  +The MIT License is applied to all files in this distribution, except:
            2  +	kitsh/buildsrc/kitsh-0.0/boot.tcl
            3  +	kitsh/buildsrc/kitsh-0.0/kitInit.c
            4  +	kitsh/buildsrc/kitsh-0.0/license.terms
            5  +	kitsh/buildsrc/kitsh-0.0/pwb.c
            6  +	kitsh/buildsrc/kitsh-0.0/rechan.c
            7  +	kitsh/buildsrc/kitsh-0.0/zlib.c
            8  +
            9  +Please see "kitsh/buildsrc/kitsh-0.0/license.terms" for licensing information
           10  +regarding these files.
           11  +
           12  +All others are licensed under the terms of the MIT License, below:
           13  +The MIT License
           14  +
           15  +Copyright (c) 2010  Roy S. Keene
           16  +
           17  +Permission is hereby granted, free of charge, to any person obtaining a copy
           18  +of this software and associated documentation files (the "Software"), to deal
           19  +in the Software without restriction, including without limitation the rights
           20  +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
           21  +copies of the Software, and to permit persons to whom the Software is
           22  +furnished to do so, subject to the following conditions:
           23  +
           24  +The above copyright notice and this permission notice shall be included in
           25  +all copies or substantial portions of the Software.
           26  +
           27  +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
           28  +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
           29  +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
           30  +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
           31  +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
           32  +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
           33  +THE SOFTWARE.

Modified README from [7af6d9d17c] to [6d75316e4a].

     1      1   This will build a Tclkit named "tclkit-<version>".
     2      2   
            3  +---------------
            4  +Using This Tool
            5  +---------------
     3      6   Usage:
     4      7   	kitcreator [{<version> | cvs_<cvsTag> | clean | distclean}]
     5      8   	           [<configure_options...>]
     6      9   
     7     10   	Where:
     8     11   		version            is a Tcl version number (e.g., 8.4.19)
     9     12   		cvsTag             is a CVS release tag (e.g., HEAD)
................................................................................
    59     62   		diff patches.  This script is generally more well tested with
    60     63   		GNU Patch. 
    61     64   
    62     65   	3. TCLKIT
    63     66   		Specify the path to a Tclkit that is runnable on the current
    64     67   		system.  The default is "tclkit".  A working tclkit is required
    65     68   		for cross-compiling Tclkits.
           69  +
           70  +
           71  +
           72  +-------------------
           73  +Method of Operation
           74  +-------------------
           75  +Summary:
           76  +	1. "kitcreator" calls */build.sh
           77  +	2. */build.sh downloads and compiles appropriate software
           78  +	3. */build.sh installs software into "inst" (run-time + compile-time)
           79  +	4. */build.sh installs run-time software into "out", this will be
           80  +	   included in the Tclkit as if it were the root directory of the
           81  +	   Tclkit (combined with other "out" directories)
           82  +	5. kitsh/build.sh compiles a "main" function and links all the built
           83  +	   libraries together into an executable
           84  +	6. kitsh/build.sh combines all the "out" directories into one
           85  +	7. kitsh/build.sh creates a Metakit database from the combined
           86  +	   directories and appends that to the compiled executable using:
           87  +		a. A Tclkit found in the environment variable "TCLKIT" (tclkit
           88  +		   if unset) if it is functional; or
           89  +		b. The built kit itself (does not work for cross-compiling)
           90  +
           91  +Details:
           92  +	The general mechanism that enables a Tclkit to operate is a small Tcl
           93  +initialization routine linked statically to the core libraries needed to
           94  +operate a Tcl interpreter, the Tcl VFS Layer, and a database-backed (Metakit)
           95  +Virtual File System that is appended to the end of the executable.
           96  +
           97  +This project brings together all of the required pieces, plus some additional
           98  +pieces that were found in the original Tclkit:
           99  +	1. Tk (dynamically linked)
          100  +	2. Itcl (dynamically linked)
          101  +
          102  +These source code for these pieces are downloaded, compiled, and linked, and
          103  +the database containing the appropriate filesystem data is created.  What sets
          104  +this project apart from other similar projects is that:
          105  +	1. It attempts to be modular;
          106  +	2. It supports cross-compiling;
          107  +	3. It downloads the source from their original repositories;
          108  +	4. It allows you to specify an arbitrary version of Tcl (including
          109  +	   CVS); and
          110  +	5. It uses GNU Autoconf scripts for compiling the part of the Tclkit
          111  +	   that brings the whole thing together (the Kitsh)
          112  +
          113  +To accomplish these goals the following mechanisms are in place:
          114  +	1. The top-level "kitcreator" script; and
          115  +	2. Per-project subdirectories, each containing a "build.sh" script
          116  +
          117  +The top-level "kitcreator" script is very simple.  It's only job is to
          118  +interpret command line arguments, and call the per-project "build.sh" scripts.
          119  +For the "tcl" project it also finds the appropriate "tclConfig.sh" (and stores
          120  +this path in TCLCONFIGDIR) to enable subsequent build scripts to find the
          121  +appropriate Tcl to link against.
          122  +
          123  +The per-project "build.sh" scripts are entirely autonomous.  They are
          124  +responsible for downloading the source code for the appropriate version that
          125  +will compile and link against the current version of Tcl (user requested
          126  +version can be found in "TCLVERS", while the actual version must be requested
          127  +from the "tclConfig.sh" script), compiling it, installing a functional copy
          128  +into the per-project "inst" directory, and installing anything that needs to
          129  +be in the Tclkit's VFS root into the per-project "out" directory.
          130  +
          131  +The exception to this is the "kitsh" project.  It is the glue that binds all
          132  +the individual projects together into a single executable.  Its build script
          133  +does not create an "inst" or an "out" directory because it is not a library.
          134  +Instead, it collects all the other project's "out" directories into a single
          135  +directory (starpack.vfs), as well a static file (boot.tcl).  It then compiles
          136  +the source code, and then installs the Metakit database containing the VFS
          137  +onto the resulting executable.
          138  +
          139  +To create the Metakit database, one of two Tclkits is used (tried in this
          140  +order):
          141  +	1. The Tclkit specified by the TCLKIT environment variable (or
          142  +	   "tclkit" if that variable is not set) if it is functional; or
          143  +	2. The built Tclkit itself
          144  +
          145  +The second method will not work if the built Tclkit is not executable on the
          146  +current platform (i.e., in the case of cross-compilation) and so it may be
          147  +necessary to bootstrap a runnable Tclkit first.

Modified kitsh/build.sh from [a9fcedbcad] to [f495d0968a].

    13     13   
    14     14   KITSHVERS="0.0"
    15     15   BUILDDIR="$(pwd)/build/kitsh-${KITSHVERS}"
    16     16   OUTDIR="$(pwd)/out"
    17     17   INSTDIR="$(pwd)/inst"
    18     18   OTHERPKGSDIR="$(pwd)/../"
    19     19   export KITSHVERS BUILDDIR OUTDIR INSTDIR OTHERPKGSDIR
           20  +
           21  +if [ -z "${ENABLECOMPRESSION}" ]; then
           22  +	ENABLECOMPRESSION="1"
           23  +fi
           24  +export ENABLECOMPRESSION
    20     25   
    21     26   rm -rf 'build' 'out' 'inst'
    22     27   mkdir 'out' 'inst' || exit 1
    23     28   
    24     29   
    25     30   (
    26     31   	cp -r 'buildsrc' 'build'
................................................................................
    51     56   
    52     57   	# Intall VFS onto kit
    53     58   	## Determine if we have a Tclkit to do this work
    54     59   	TCLKIT="${TCLKIT:-tclkit}"
    55     60   	if echo 'exit 0' | "${TCLKIT}" >/dev/null 2>/dev/null; then
    56     61   		## Install using existing Tclkit
    57     62   		### Call installer
    58         -		"${TCLKIT}" installvfs.tcl kit starpack.vfs
           63  +		"${TCLKIT}" installvfs.tcl kit starpack.vfs "${ENABLECOMPRESSION}"
    59     64   	else
    60     65   		## Bootstrap (cannot cross-compile)
    61     66   		### Call installer
    62     67   		cp kit runkit
    63         -		echo 'set argv [list kit starpack.vfs]' > setup.tcl
           68  +		echo "set argv [list kit starpack.vfs {${ENABLECOMPRESSION}}]" > setup.tcl
    64     69   		echo 'if {[catch { clock seconds }]} { proc clock args { return 0 } }' >> setup.tcl
    65     70   		echo 'source installvfs.tcl' >> setup.tcl
    66     71   		echo | ./runkit
    67     72   	fi
    68     73   
    69     74   	exit 0
    70     75   ) || exit 1
    71     76   
    72     77   exit 0

Modified kitsh/buildsrc/kitsh-0.0/installvfs.tcl from [9c5d7ceaab] to [848dac55a9].

     1      1   #! /usr/bin/env tclsh
     2      2   
     3         -if {[llength $argv] != 2} {
     4         -	puts stderr "Usage: installvfs.tcl <kitfile> <vfsdir>"
            3  +set opt_compression 1
            4  +if {[llength $argv] < 2} {
            5  +	puts stderr "Usage: installvfs.tcl <kitfile> <vfsdir> \[<enable_compression>\]"
     5      6   
     6      7   	exit 1
     7      8   }
     8      9   
     9     10   set kitfile [lindex $argv 0]
    10     11   set vfsdir [lindex $argv 1]
           12  +if {[lindex $argv 2] != ""} {
           13  +	set opt_compression [lindex $argv 2]
           14  +}
    11     15   
    12     16   if {[catch {
    13     17   	package require vfs::mk4
    14     18   }]} {
    15     19   	catch {
    16     20   		load "" vfs
    17     21   		load "" Mk4tcl
    18     22   
    19     23   		source [file join $vfsdir lib/vfs/vfsUtils.tcl]
    20     24   		source [file join $vfsdir lib/vfs/vfslib.tcl]
    21     25   		source [file join $vfsdir lib/vfs/mk4vfs.tcl]
    22     26   	}
    23     27   }
           28  +set mk4vfs::compress $opt_compression
    24     29   
    25     30   proc copy_file {srcfile destfile} {
    26     31   	switch -glob -- $srcfile {
    27     32   		"*.tcl" - "*.txt" {
    28     33   			set ifd [open $srcfile r]
    29     34   			set ofd [open $destfile w]
    30     35   

Added kitsh/buildsrc/kitsh-0.0/license.terms version [092b3f4c55].

            1  +LICENSE
            2  +
            3  +  The Tclkit-specific sources are license free, they just have a copyright.
            4  +  Hold the author(s) harmless and any lawful use is permitted.
            5  +
            6  +  This does *not* apply to any of the sources of the other major Open Source
            7  +  Software used in Tclkit, which each have very liberal BSD/MIT-like licenses:
            8  +  	Tcl/Tk, Incrtcl, Metakit, TclVFS, Zlib