tcl: bump to version 8.6.1

Turn off building compatibility layers for old/broken versions of
standard functions (strstr, strtoul, strtod) with the assumption that
anything buildroot is using as a standard C library will be good enough
to not have broken behavior.

Signed-off-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Andrew Ruder 2014-04-08 15:54:04 -05:00 committed by Peter Korsgaard
parent 28f0d896ae
commit 7fda943b43
5 changed files with 86 additions and 22 deletions

View File

@ -1,28 +1,35 @@
config BR2_PACKAGE_TCL config BR2_PACKAGE_TCL
bool "tcl" bool "tcl"
# fork()
depends on BR2_USE_MMU
depends on BR2_INET_IPV6
help help
TCL (Tool Command Language) is a simple textual language. TCL (Tool Command Language) is a simple textual language.
http://www.tcl.tk http://www.tcl.tk
comment "tcl needs a toolchain w/ ipv6"
depends on BR2_USE_MMU
depends on !BR2_INET_IPV6
if BR2_PACKAGE_TCL if BR2_PACKAGE_TCL
config BR2_PACKAGE_TCL_DEL_ENCODINGS config BR2_PACKAGE_TCL_DEL_ENCODINGS
bool "delete encodings (saves 1.4Mb)" bool "delete encodings (saves 1.6Mb)"
default y default y
help help
Delete encoding files for TCL. If your programs do not use Delete encoding files for TCL. If your programs do not use
various tcl character recoding functions, you may safely various tcl character recoding functions, you may safely
choose Y here. choose Y here.
It saves approx. 1.4 Mb of space. It saves approx. 1.6 Mb of space.
config BR2_PACKAGE_TCL_SHLIB_ONLY config BR2_PACKAGE_TCL_SHLIB_ONLY
bool "install only shared library" bool "install only shared library"
default y default y
help help
Install only TCL shared library and not binary tcl Install only TCL shared library and not binary tcl
interpreter(tclsh8.4). interpreter (tclsh).
Saves ~14kb. Saves ~14kb.

View File

@ -0,0 +1,32 @@
From: Andrew Ruder <andrew.ruder@elecsyscorp.com>
Subject: [PATCH] Disable tcl compatibility layers
Turn off building compatibility layers for old/broken versions of
standard functions (strstr, strtoul, strtod) with the assumption that
anything buildroot is using as a standard C library will be good enough
to not have broken behavior.
Signed-off-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>
---
diff --git a/unix/tcl.m4 b/unix/tcl.m4
--- a/unix/tcl.m4
+++ b/unix/tcl.m4
@@ -2466,7 +2466,7 @@ AC_DEFUN([SC_BUGGY_STRTOD], [
}
exit(0);
}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
- tcl_cv_strtod_buggy=buggy)])
+ tcl_cv_strtod_buggy=ok)])
if test "$tcl_cv_strtod_buggy" = buggy; then
AC_LIBOBJ([fixstrtod])
USE_COMPAT=1
@@ -2725,7 +2725,7 @@ AC_DEFUN([SC_TCL_CHECK_BROKEN_FUNC],[
if test ["$tcl_ok"] = 1; then
AC_CACHE_CHECK([proper ]$1[ implementation], [tcl_cv_]$1[_unbroken],
AC_TRY_RUN([[int main() {]$2[}]],[tcl_cv_]$1[_unbroken]=ok,
- [tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=unknown))
+ [tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=ok))
if test ["$tcl_cv_]$1[_unbroken"] = "ok"; then
tcl_ok=1
else

View File

@ -1,11 +0,0 @@
--- tcl8.4.9/compat/strtod.c 2002-02-25 16:26:12.000000000 +0200
+++ tcl8.4.9/compat/strtod.c 2005-05-30 08:55:18.000000000 +0300
@@ -24,6 +24,8 @@
#define NULL 0
#endif
+#undef strtod
+
static int maxExponent = 511; /* Largest possible base 10 exponent. Any
* exponent larger than this will already
* produce underflow or overflow, so there's

View File

@ -4,24 +4,52 @@
# #
################################################################################ ################################################################################
TCL_VERSION_MAJOR = 8.4 TCL_VERSION_MAJOR = 8.6
TCL_VERSION = $(TCL_VERSION_MAJOR).19 TCL_VERSION = $(TCL_VERSION_MAJOR).1
TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz
TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION) TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION)
TCL_LICENSE = tcl license TCL_LICENSE = tcl license
TCL_LICENSE_FILES = license.terms TCL_LICENSE_FILES = license.terms
TCL_SUBDIR = unix TCL_SUBDIR = unix
TCL_INSTALL_STAGING = YES TCL_INSTALL_STAGING = YES
TCL_AUTORECONF = YES
# Note that --with-system-sqlite will only make a difference
# in the sqlite package (which gets removed if sqlite not
# configured). Don't need to worry about conditionally including
# it in the configure options
TCL_CONF_OPT = \ TCL_CONF_OPT = \
--disable-symbols \ --disable-symbols \
--disable-langinfo \ --disable-langinfo \
--disable-framework --disable-framework \
--with-system-sqlite
HOST_TCL_CONF_OPT = \ HOST_TCL_CONF_OPT = \
--disable-symbols \ --disable-symbols \
--disable-langinfo \ --disable-langinfo \
--disable-framework --disable-framework
# I haven't found a good way to force pkgs to not build
# or configure without just removing the entire pkg directory.
define HOST_TCL_REMOVE_PACKAGES
rm -fr $(@D)/pkgs/sqlite3.8.0 \
$(@D)/pkgs/tdbc1.0.0 \
$(@D)/pkgs/tdbcmysql1.0.0 \
$(@D)/pkgs/tdbcodbc1.0.0 \
$(@D)/pkgs/tdbcpostgres1.0.0 \
$(@D)/pkgs/tdbcsqlite3-1.0.0
endef
HOST_TCL_PRE_CONFIGURE_HOOKS += HOST_TCL_REMOVE_PACKAGES
define TCL_REMOVE_PACKAGES
rm -fr $(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/sqlite3.8.0) \
$(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/tdbc1.0.0) \
$(@D)/pkgs/tdbcmysql1.0.0 \
$(@D)/pkgs/tdbcodbc1.0.0 \
$(@D)/pkgs/tdbcpostgres1.0.0 \
$(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/tdbcsqlite3-1.0.0)
endef
TCL_PRE_CONFIGURE_HOOKS += TCL_REMOVE_PACKAGES
ifeq ($(BR2_PACKAGE_TCL_DEL_ENCODINGS),y) ifeq ($(BR2_PACKAGE_TCL_DEL_ENCODINGS),y)
define TCL_REMOVE_ENCODINGS define TCL_REMOVE_ENCODINGS
rm -rf $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/encoding/* rm -rf $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/encoding/*
@ -41,12 +69,20 @@ endef
TCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH TCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH
endif endif
# library get installed read only, so strip fails # Until someone needs it, we don't handle locale installation. tcl has
define TCL_FIXUP_RO_LIB # a complicated method of translating LANG-style locale names into its internal
chmod +w $(TARGET_DIR)/usr/lib/libtcl* # .msg name which makes it difficult to save the correct locales per the
# configured whitelist.
define TCL_REMOVE_EXTRA
rm -fr $(TARGET_DIR)/usr/lib/tclConfig.sh \
$(TARGET_DIR)/usr/lib/tclooConfig.sh \
$(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/tclAppInit.c \
$(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/msgs
endef endef
TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA
TCL_POST_INSTALL_TARGET_HOOKS += TCL_FIXUP_RO_LIB TCL_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite)
HOST_TCL_DEPENDENCIES =
$(eval $(autotools-package)) $(eval $(autotools-package))
$(eval $(host-autotools-package)) $(eval $(host-autotools-package))

View File

@ -10,6 +10,6 @@ TCLLIB_SITE = http://downloads.sourceforge.net/project/tcllib/tcllib/$(
TCLLIB_LICENSE = tcl license TCLLIB_LICENSE = tcl license
TCLLIB_LICENSE_FILES = license.terms TCLLIB_LICENSE_FILES = license.terms
TCLLIB_DEPENDENCIES = host-tcl TCLLIB_DEPENDENCIES = host-tcl
TCLLIB_CONF_ENV = ac_cv_path_tclsh="$(HOST_DIR)/usr/bin/tclsh8.4" TCLLIB_CONF_ENV = ac_cv_path_tclsh="$(HOST_DIR)/usr/bin/tclsh$(TCL_VERSION_MAJOR)"
$(eval $(autotools-package)) $(eval $(autotools-package))