Index: common/common.sh
==================================================================
--- common/common.sh
+++ common/common.sh
@@ -271,10 +271,14 @@
 
 	# Create pkgIndex files if needed
 	if [ -z "${tclpkg}" ]; then
 		tclpkg="${pkg}"
 	fi
+	echo "${tclpkg}" > "${installdir}/tcl-pkg-name"
+	if [ -n "${tclpkg_initfunc}" ]; then
+		echo "${tclpkg_initfunc}" > "${installdir}/tcl-init-func"
+	fi
 
 	if [ -z "${tclpkgversion}" ]; then
 		tclpkgversion="${version}"
 	fi
 

Index: kitcreator
==================================================================
--- kitcreator
+++ kitcreator
@@ -32,11 +32,11 @@
 		echo "Please remember to run 'build/pre.sh' if you expect this build to work." >&2
 	fi
 fi
 
 # Define the list of all packages, for cleaning purposes
-KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread dbus tls tclx tcc4tcl tcllib udp yajltcl tdom tuapi"
+KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread dbus tls tclx tcc4tcl tcllib udp yajltcl tdom tuapi tclcurl lmdb nano"
 
 # Always rebuild kitsh
 rm -f "kitsh/.success"
 for pkg in ${KITCREATOR_ALLPKGS} ${KITCREATOR_PKGS}; do
 	if [ "${mode}" != "retry" -o ! -f "${pkg}/.success" ]; then
@@ -73,27 +73,39 @@
 elif echo " ${CONFIGUREEXTRA} " | grep ' --disable-threads ' >/dev/null 2>/dev/null; then
 	KITCREATOR_ADD_ENABLE_THREADS='0'
 fi
 
 # Determine cross-compile status
+kitsh_dir="$(cd kitsh/buildsrc/kitsh-* && pwd)" || exit 1
 host_os="$(echo " ${CONFIGUREEXTRA} " | sed 's@^.* --host=\([^ ]*\) .*$@\1@
 t x
 d
 :x')"
 build_os="$(echo " ${CONFIGUREEXTRA} " | sed 's@^.* --build=\([^ ]*\) .*$@\1@
 t x
 d
 :x')"
+
+if [ -z "${build_os}" ]; then
+	build_os="$("${kitsh_dir}/config.guess")"
+else
+	build_os="$("${kitsh_dir}/config.sub" "${build_os}")"
+fi
+if [ -z "${host_os}" ]; then
+	host_os="$("${kitsh_dir}/config.guess")"
+else
+	host_os="$("${kitsh_dir}/config.sub" "${host_os}")"
+fi
 
 if [ "${host_os}" != "${build_os}" -a -n "${host_os}" ]; then
 	KC_CROSSCOMPILE='1'
-	KC_CROSSCOMPILE_HOST_OS="${host_os}"
 else
 	KC_CROSSCOMPILE='0'
-	KC_CROSSCOMPILE_HOST_OS=''
 fi
+KC_CROSSCOMPILE_HOST_OS="${host_os}"
 export KC_CROSSCOMPILE KC_CROSSCOMPILE_HOST_OS
+unset kitsh_dir
 
 # Set default target
 KITTARGET="kitsh"
 export KITTARGET
 

Index: kitsh/buildsrc/kitsh-0.0/aclocal.m4
==================================================================
--- kitsh/buildsrc/kitsh-0.0/aclocal.m4
+++ kitsh/buildsrc/kitsh-0.0/aclocal.m4
@@ -304,10 +304,13 @@
 			if test -n "${projlibfilesnostub}"; then
 				for subproj in $subprojs; do
 					subprojucase="`echo ${subproj} | dd conv=ucase 2>/dev/null`"
 					subprojtcase="`echo ${subprojucase} | cut -c 1``echo ${subproj} | cut -c 2-`"
 					lib_init_func="${subprojtcase}_Init"
+					if test -f "${projdir}/inst/tcl-init-func"; then
+						lib_init_func="`cat "${projdir}/inst/tcl-init-func"`"
+					fi
 
 					echo "#define KIT_INCLUDES_${subprojucase}" >> kitInit-libs.h
 					echo "Tcl_AppInitProc ${lib_init_func};" >> kitInit-libs.h
 
 					libs_init_funcs="${libs_init_funcs} ${lib_init_func}"
@@ -321,10 +324,13 @@
 
 	echo '' >> kitInit-libs.h
 	echo 'static void _Tclkit_GenericLib_Init(void) {' >> kitInit-libs.h
 	for lib_init_func in ${libs_init_funcs}; do
 		proj="`echo ${lib_init_func} | sed 's@_Init$$@@@' | dd conv=lcase 2>/dev/null`"
+		if test -f "${projdir}/inst/tcl-pkg-name"; then
+			proj="`cat "${projdir}/inst/tcl-pkg-name"`"
+		fi
 		echo "	Tcl_StaticPackage(0, \"${proj}\", ${lib_init_func}, NULL);" >> kitInit-libs.h
 	done
 	echo '	return;' >> kitInit-libs.h
 	echo '}' >> kitInit-libs.h
 

Index: lmdb/build.sh
==================================================================
--- lmdb/build.sh
+++ lmdb/build.sh
@@ -1,7 +1,26 @@
 #! /usr/bin/env bash
 
 # BuildCompatible: KitCreator
 
-version="0.3.6"
+version="0.4.0"
 url="https://github.com/ray2501/tcl-lmdb/archive/${version}.tar.gz"
-sha256='887f72e7c8bc569d74d3c9f151313eadeb19036b4bf8ebd68d7da45aa8a14da7'
+sha256='d19a19376da6716a1ed159a918e631030491f8b6a4ef9e72a4221481b24b2e40'
+
+function postinstall() {
+	local name
+	local isWindows
+
+	# Windows-only
+	isWindows='false'
+	case "${KC_CROSSCOMPILE_HOST_OS}" in
+		*-cygwin|*-mingw32|*-mingw32-*|*-cygwin-*)
+			isWindows='true'
+			;;
+	esac
+
+	if [ "${isWindows}" = 'true' ]; then
+		find "${installdir}" -type -f -name '*.a' | while IFS='' read -r name; do
+			echo '-lntdll' > "${name}.linkadd"
+		done
+	fi
+}

DELETED lmdb/patches/lmdb-0.3.6-1fixbytearray.diff
Index: lmdb/patches/lmdb-0.3.6-1fixbytearray.diff
==================================================================
--- lmdb/patches/lmdb-0.3.6-1fixbytearray.diff
+++ lmdb/patches/lmdb-0.3.6-1fixbytearray.diff
@@ -1,14 +0,0 @@
-diff --no-dereference -uNr lmdb-0.3.6.orig/generic/tclmdb.c lmdb-0.3.6-1fixbytearray/generic/tclmdb.c
---- lmdb-0.3.6.orig/generic/tclmdb.c	2017-11-23 11:47:39.000000000 -0600
-+++ lmdb-0.3.6-1fixbytearray/generic/tclmdb.c	2018-06-03 12:12:08.650738083 -0500
-@@ -259,8 +259,8 @@
-       }
- 
-       pResultStr = Tcl_NewListObj(0, NULL);
--      Tcl_ListObjAppendElement(interp, pResultStr, Tcl_NewStringObj(mkey.mv_data, mkey.mv_size));
--      Tcl_ListObjAppendElement(interp, pResultStr, Tcl_NewStringObj(mdata.mv_data, mdata.mv_size));
-+      Tcl_ListObjAppendElement(interp, pResultStr, Tcl_NewByteArrayObj(mkey.mv_data, mkey.mv_size));
-+      Tcl_ListObjAppendElement(interp, pResultStr, Tcl_NewByteArrayObj(mdata.mv_data, mdata.mv_size));
- 
-       Tcl_SetObjResult(interp, pResultStr);
- 

ADDED   lmdb/patches/tcl-lmdb-0.4.0-fixrobust.diff
Index: lmdb/patches/tcl-lmdb-0.4.0-fixrobust.diff
==================================================================
--- lmdb/patches/tcl-lmdb-0.4.0-fixrobust.diff
+++ lmdb/patches/tcl-lmdb-0.4.0-fixrobust.diff
@@ -0,0 +1,21 @@
+diff --no-dereference -uNr tcl_lmdb-0.4.0.orig/Makefile.in tcl_lmdb-0.4.0-fixrobust/Makefile.in
+--- tcl_lmdb-0.4.0.orig/Makefile.in	2018-06-22 10:17:46.000000000 -0500
++++ tcl_lmdb-0.4.0-fixrobust/Makefile.in	2019-01-22 15:51:11.244784351 -0600
+@@ -149,17 +149,6 @@
+ 
+ PKG_CFLAGS	= @PKG_CFLAGS@
+ 
+-# Workaround for glibc pthread robust mutex support (glibc < 2.12) fix
+-ifneq ("$(OS)","Windows_NT")
+-UNAME_S := $(shell uname -s)
+-ifeq ($(UNAME_S),Linux)
+-GLIBCCHECK := $(shell expr `ldd --version | grep ^ldd | sed 's/^.* //g'` \< 2.12)
+-ifeq "$(GLIBCCHECK)" "1"
+-        PKG_CFLAGS += -DMDB_USE_ROBUST=0
+-endif
+-endif
+-endif
+-
+ # TCL_DEFS is not strictly need here, but if you remove it, then you
+ # must make sure that configure.ac checks for the necessary components
+ # that your library may use.  TCL_DEFS can actually be a problem if

ADDED   nano/build.sh
Index: nano/build.sh
==================================================================
--- nano/build.sh
+++ nano/build.sh
@@ -0,0 +1,19 @@
+#! /usr/bin/env bash
+
+# BuildCompatible: KitCreator
+
+version="1.2"
+url="https://chiselapp.com/user/rkeene/repository/tcl-nano/uv/releases/tcl-nano-${version}.tar.gz"
+sha256='84465093c491ab8ae7cf3db2c330e010691ac558ab830f096ca8cb7fe0222338'
+configure_extra=(--enable-stubs)
+
+function preconfigure() {
+	sed -i 's@stack-protector-all@donot-stack-protector-all@g' configure
+}
+
+function postinstall() {
+	rm -f "${installdir}/lib/tcl-nano${version}/nano.man"
+	if [ -f "${installdir}/lib/tcl-nano${version}/nano.lib" -a ! -f "${installdir}/lib/tcl-nano${version}/nano.a" ]; then
+		mv "${installdir}/lib/tcl-nano${version}/nano.lib" "${installdir}/lib/tcl-nano${version}/nano.a"
+	fi
+}

Index: nsf/build.sh
==================================================================
--- nsf/build.sh
+++ nsf/build.sh
@@ -21,15 +21,15 @@
     NSFVERSEXTRA=""
     SRC="src/nsf${GITTAG}.zip"
     SRCURL="http://fisheye.openacs.org/browse/~tarball=zip,br=${GITTAG}/nsf/nsf.zip"
     SRCHASH='-'
 else
-    NSFVERS="2.1.0"
+    NSFVERS="2.2.0"
     NSFVERSEXTRA=""
     SRC="src/nsf${NSFVERS}.tar.gz"
     SRCURL="http://sourceforge.net/projects/next-scripting/files/${NSFVERS}/nsf${NSFVERS}.tar.gz/download"
-    SRCHASH='00ed655eac33a85128094f9049166eea37569b68'
+    SRCHASH='ee50e594837ad241dc8012e88af7b878f5437607'
 fi
 
 BUILDDIR="$(pwd)/build/nsf${NSFVERS}"
 OUTDIR="$(pwd)/out"
 INSTDIR="$(pwd)/inst"

ADDED   tclcurl/build.sh
Index: tclcurl/build.sh
==================================================================
--- tclcurl/build.sh
+++ tclcurl/build.sh
@@ -0,0 +1,23 @@
+#! /usr/bin/env bash
+
+# BuildCompatible: KitCreator
+
+version='7.22.0'
+url="https://github.com/flightaware/tclcurl-fa/archive/1fd1b4178a083f4821d0c45723605824fbcdb017.tar.gz"
+sha256='5abad0f369205b8369819f3993a700bb452921bcab7f42056ef29a1adc3eb093'
+tclpkg='TclCurl'
+
+function postinstall() {
+	if [ "${pkg_configure_shared_build}" = '0' ]; then
+		(
+			eval "$(grep '^PKG_LIBS=' config.log)" || exit 1
+			find "${installdir}" -type f -name '*.a' | while IFS='' read -r filename; do
+				echo "${PKG_LIBS}" > "${filename}.linkadd"
+			done
+		) || return 1
+
+		cat << \_EOF_ | sed "s|@@VERSION@@|${version}|g"> "${installdir}/lib/TclCurl${version}/pkgIndex.tcl"
+package ifneeded TclCurl @@VERSION@@ [list load {} TclCurl]\n[list source [file join $dir tclcurl.tcl]]
+_EOF_
+	fi
+}

Index: tdom/build.sh
==================================================================
--- tdom/build.sh
+++ tdom/build.sh
@@ -1,7 +1,7 @@
 #! /usr/bin/env bash
 
 # BuildCompatible: KitCreator
 
-version='0.8.3'
-url="https://github.com/downloads/tDOM/tdom/tDOM-${version}.tgz"
-sha256='496d5950907dd70db61bc20c55a05a5521363ce3c076e2fdd97270181bc720b9'
+version='0.9.1'
+url="http://tdom.org/downloads/tdom-${version}-src.tgz"
+sha256='8e89b0fff005250b1117e05b986c94f119f8524601753c05df18e9b6de58fb8f'

ADDED   udp/patches/tcludp-1.0.11-fixerrno.diff
Index: udp/patches/tcludp-1.0.11-fixerrno.diff
==================================================================
--- udp/patches/tcludp-1.0.11-fixerrno.diff
+++ udp/patches/tcludp-1.0.11-fixerrno.diff
@@ -0,0 +1,21 @@
+diff --no-dereference -uNr tcludp-1.0.11.orig/generic/udp_tcl.c tcludp-1.0.11-fixerrno/generic/udp_tcl.c
+--- tcludp-1.0.11.orig/generic/udp_tcl.c	2014-08-24 02:17:21.000000000 -0500
++++ tcludp-1.0.11-fixerrno/generic/udp_tcl.c	2019-01-18 09:57:47.320471347 -0600
+@@ -31,6 +31,9 @@
+ #error "Neither sys/ioctl.h nor sys/filio.h found. We need ioctl()"
+ #endif
+ #endif /* WIN32 */
++#if defined(HAVE_STRERROR)
++#include <string.h>
++#endif
+ 
+ #if HAVE_FCNTL_H
+ #  include <fcntl.h>
+@@ -1833,7 +1836,6 @@
+     Tcl_AppendUnicodeToObj(errObj, (LPWSTR)sMsg, len - 1);
+     LocalFree(sMsg);
+ #elif defined(HAVE_STRERROR)
+-    extern int errno;
+     errObj = Tcl_NewStringObj(prefix, -1);
+     Tcl_AppendStringsToObj(errObj, ": ", strerror(errno), NULL);
+ #endif

