Skip to contentSkip to conversation

tcl: bump to version 8.6.1

PATCH Superseded Andrew Ruder 2 participants 2 messages Apr 7, 2014

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 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.

Cc Peter Korsgaard <[email protected]>

---
This addresses the issues in the first version of the patch (courtesy Peter Korsgaard). Sorry for the long delay on bugfixes. Seems like my patch-submit days are few and far between.

 package/tcl/Config.in                        |  6 +++---
 package/tcl/tcl-0001-dont-build-compat.patch | 32 ++++++++++++++++++++++++++++
 package/tcl/tcl-8.4.19-strtod.patch          | 11 ----------
 package/tcl/tcl.mk                           | 27 +++++++++++++++++------
 package/tcllib/tcllib.mk                     |  2 +-
 5 files changed, 57 insertions(+), 21 deletions(-)
 create mode 100644 package/tcl/tcl-0001-dont-build-compat.patch
 delete mode 100644 package/tcl/tcl-8.4.19-strtod.patch
package/tcl/Config.in +3 -3
index 5dcf63d..3fe8ef5 100644
@@ -8,21 +8,21 @@ config BR2_PACKAGE_TCL
 if BR2_PACKAGE_TCL
 
 config BR2_PACKAGE_TCL_DEL_ENCODINGS
-	bool "delete encodings (saves 1.4Mb)"
+	bool "delete encodings (saves 1.6Mb)"
 	default y
 	help
 	  Delete encoding files for TCL. If your programs do not use
 	  various tcl character recoding functions, you may safely
 	  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
 	bool "install only shared library"
 	default y
 	help
 	  Install only TCL shared library and not binary tcl
-	  interpreter(tclsh8.4).
+	  interpreter (tclsh).
 
 	  Saves ~14kb.
 
package/tcl/tcl-0001-dont-build-compat.patch new file +32 -0
new file mode 100644
index 0000000..85c5c57
@@ -0,0 +1,32 @@
+From: Andrew Ruder <[email protected]>
+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 <[email protected]>
+---
+
+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
package/tcl/tcl-8.4.19-strtod.patch deleted +0 -11
deleted file mode 100644
index a997454..0000000
@@ -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
package/tcl/tcl.mk +21 -6
index 4647f03..5e1f588 100644
@@ -4,14 +4,15 @@
 #
 ################################################################################
 
-TCL_VERSION_MAJOR = 8.4
-TCL_VERSION = $(TCL_VERSION_MAJOR).19
+TCL_VERSION_MAJOR = 8.6
+TCL_VERSION = $(TCL_VERSION_MAJOR).1
 TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz
 TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION)
 TCL_LICENSE = tcl license
 TCL_LICENSE_FILES = license.terms
 TCL_SUBDIR = unix
 TCL_INSTALL_STAGING = YES
+TCL_AUTORECONF = YES
 TCL_CONF_OPT = \
 		--disable-symbols \
 		--disable-langinfo \
@@ -41,12 +42,26 @@ endef
 TCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH
 endif
 
-# library get installed read only, so strip fails
-define TCL_FIXUP_RO_LIB
-	chmod +w $(TARGET_DIR)/usr/lib/libtcl*
+define TCL_REMOVE_EXTRA
+	rm -fr $(TARGET_DIR)/usr/lib/tdbcmysql1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcodbc1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcpostgres1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tclConfig.sh \
+	       $(TARGET_DIR)/usr/lib/tclooConfig.sh
 endef
+TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA
 
-TCL_POST_INSTALL_TARGET_HOOKS += TCL_FIXUP_RO_LIB
+ifeq ($(BR2_PACKAGE_SQLITE),y)
+TCL_DEPENDENCIES = sqlite
+HOST_TCL_DEPENDENCIES =
+else
+define TCL_REMOVE_SQLITE
+	rm -fr $(TARGET_DIR)/usr/lib/sqlite3.8.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcsqlite3-1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbc1.0.0
+endef
+TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_SQLITE
+endif
 
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
package/tcllib/tcllib.mk +1 -1
index f2aca36..037ec1c 100644
@@ -10,6 +10,6 @@ TCLLIB_SITE          = http://downloads.sourceforge.net/project/tcllib/tcllib/$(
 TCLLIB_LICENSE       = tcl license
 TCLLIB_LICENSE_FILES = license.terms
 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))
Signature · 1 line
1.9.0.rc3.12.gbc97e2d
#1 lore raw

PATCH v2 1/1 tcl: bump to version 8.6.1

Quoted 7 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Andrew" == Andrew Ruder <[email protected]> writes:

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.

Quoted 6 lines
Cc Peter Korsgaard <[email protected]>

---
This addresses the issues in the first version of the patch (courtesy Peter Korsgaard). Sorry for the long delay on bugfixes. Seems like my patch-submit days are few and far between.

Thanks, but I still see issues :/

tclUnixSock.c needs IPv6 support, so the package need to depend on BR2_INET_IPV6.

Quoted 11 lines
package/tcl/tcl.mk +8 -1
+define TCL_REMOVE_EXTRA
+	rm -fr $(TARGET_DIR)/usr/lib/tdbcmysql1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcodbc1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcpostgres1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tclConfig.sh \
+	       $(TARGET_DIR)/usr/lib/tclooConfig.sh
 endef
+TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA
 
-TCL_POST_INSTALL_TARGET_HOOKS += TCL_FIXUP_RO_LIB
+ifeq ($(BR2_PACKAGE_SQLITE),y)

package/tcl/tcl.mk endef · line 64

Quoted 10 lines
package/tcl/tcl.mk +10 -0
+TCL_DEPENDENCIES = sqlite
+HOST_TCL_DEPENDENCIES =
+else
+define TCL_REMOVE_SQLITE
+	rm -fr $(TARGET_DIR)/usr/lib/sqlite3.8.0 \
+	       $(TARGET_DIR)/usr/lib/tdbcsqlite3-1.0.0 \
+	       $(TARGET_DIR)/usr/lib/tdbc1.0.0
+endef
+TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_SQLITE
+endif

It seems suboptional to build stuff and then just throw it away. Even worse, the embedded sqlite fails to build if the system doesn't have largefile support.

Looking at the Makefile, it looks like we can just rm pkgs/<pkg> for the unwanted packages in a post-patch hook.

In the context of buildroot, does it ever make sense to build the embedded sqlite copy instead of using the existing package?

Care to fix those issues and resend? Thanks.

Signature · 1 line
Bye, Peter Korsgaard