From 7323f5481568668842ad254a1848869201a3dc95 Mon Sep 17 00:00:00 2001 From: Dmitrij S. Kryzhevich Date: May 30 2014 04:16:56 +0000 Subject: Fix for tcl8.6 --- diff --git a/blt.spec b/blt.spec index 2ccb242..fc432c5 100644 --- a/blt.spec +++ b/blt.spec @@ -5,7 +5,7 @@ Summary: Widget extension to the Tcl/Tk scripting language Name: blt Version: 2.4 -Release: 39.z%{?dist} +Release: 40.z%{?dist} License: MIT Group: Development/Libraries @@ -20,6 +20,7 @@ Patch4: blt2.4z-norpath.patch Patch5: blt2.4z-noexactversion.patch Patch6: blt2.4z-zoomstack.patch Patch7: blt2.4z-tk8.5.6-patch +Patch8: blt2.4z-tcl8.6.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) @@ -72,6 +73,7 @@ This package provides the html documentation for BLT %patch5 -p0 %patch6 -p0 %patch7 -p1 +%patch8 -p1 # Fix bad interpreter path sed -i -e 's#/usr/local/bin/tclsh#/usr/bin/tclsh#' demos/scripts/page.tcl @@ -132,6 +134,9 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/%{name} %changelog +* Fri May 30 2014 Dmitrij S. Kryzhevich - 2.4-40.z +- Fix for tcl-8.6. + * Fri May 30 2014 Dmitrij S. Kryzhevich - 2.4-39.z - Changed requires to require tcl-8.6. diff --git a/blt2.4z-tcl8.6.patch b/blt2.4z-tcl8.6.patch new file mode 100644 index 0000000..a006be0 --- /dev/null +++ b/blt2.4z-tcl8.6.patch @@ -0,0 +1,105 @@ +diff -urp blt2.4z/src/bltInt.h blt2.4z-tcl8.6/src/bltInt.h +--- blt2.4z/src/bltInt.h 2002-08-22 03:13:12.000000000 +0700 ++++ blt2.4z-tcl8.6/src/bltInt.h 2014-05-30 11:07:01.453354590 +0700 +@@ -26,6 +26,11 @@ + #ifndef _BLT_INT_H + #define _BLT_INT_H + ++#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 6) ++#define Tcl_GetStringResult(interp) interp->result ++#define Tcl_SetResult(interp,val,val2) interp->result = val ++#endif ++ + #ifdef WIN32 + #define STRICT + #define WIN32_LEAN_AND_MEAN +diff -urp blt2.4z/src/bltScrollbar.c blt2.4z-tcl8.6/src/bltScrollbar.c +--- blt2.4z/src/bltScrollbar.c 2002-07-18 05:38:54.000000000 +0700 ++++ blt2.4z-tcl8.6/src/bltScrollbar.c 2014-05-30 11:11:20.816689753 +0700 +@@ -534,7 +534,7 @@ ScrollbarWidgetCmd(clientData, interp, a + } else { + fraction = ((double)pixels / (double)barWidth); + } +- sprintf(interp->result, "%g", fraction); ++ sprintf(Tcl_GetStringResult(interp), "%g", fraction); + } else if ((c == 'f') && (strncmp(argv[1], "fraction", length) == 0)) { + int x, y, pos, barWidth; + double fraction; +diff -urp blt2.4z/src/bltTed.c blt2.4z-tcl8.6/src/bltTed.c +--- blt2.4z/src/bltTed.c 2002-05-17 03:46:00.000000000 +0700 ++++ blt2.4z-tcl8.6/src/bltTed.c 2014-05-30 11:10:17.774560163 +0700 +@@ -1504,7 +1504,7 @@ EditOp(dataPtr, interp, argc, argv) + tablePtr->flags |= ARRANGE_PENDING; + Tcl_DoWhenIdle(tablePtr->arrangeProc, tablePtr); + } +- interp->result = Tk_PathName(tedPtr->tkwin); ++ Tcl_SetResult(interp, Tk_PathName(tedPtr->tkwin), TCL_STATIC); + tedPtr->flags |= LAYOUT_PENDING; + EventuallyRedraw(tedPtr); + return TCL_OK; +@@ -1678,7 +1678,7 @@ SelectOp(dataPtr, interp, argc, argv) + tedPtr->activeRectArr[4].width = grip - 1; + tedPtr->activeRectArr[4].height = grip - 1; + +- interp->result = Tk_PathName(entryPtr->tkwin); ++ Tcl_SetResult(interp, Tk_PathName(tedPtr->tkwin), TCL_STATIC); + active = 1; + break; + } +@@ -1751,7 +1751,7 @@ RepOp(dataPtr, interp, argc, argv) + tablePtr->flags |= ARRANGE_PENDING; + Tcl_DoWhenIdle(tablePtr->arrangeProc, tablePtr); + } +- interp->result = Tk_PathName(tedPtr->tkwin); ++ Tcl_SetResult(interp, Tk_PathName(tedPtr->tkwin), TCL_STATIC); + tedPtr->flags |= LAYOUT_PENDING; + EventuallyRedraw(tedPtr); + return TCL_OK; +diff -urp blt2.4z/src/bltVecMath.c blt2.4z-tcl8.6/src/bltVecMath.c +--- blt2.4z/src/bltVecMath.c 2002-09-10 12:12:33.000000000 +0700 ++++ blt2.4z-tcl8.6/src/bltVecMath.c 2014-05-30 11:12:53.846381976 +0700 +@@ -764,20 +764,20 @@ MathError(interp, value) + if ((errno == EDOM) || (value != value)) { + Tcl_AppendResult(interp, "domain error: argument not in valid range", + (char *)NULL); +- Tcl_SetErrorCode(interp, "ARITH", "DOMAIN", interp->result, ++ Tcl_SetErrorCode(interp, "ARITH", "DOMAIN", Tcl_GetStringResult(interp), + (char *)NULL); + } else if ((errno == ERANGE) || IS_INF(value)) { + if (value == 0.0) { + Tcl_AppendResult(interp, + "floating-point value too small to represent", + (char *)NULL); +- Tcl_SetErrorCode(interp, "ARITH", "UNDERFLOW", interp->result, ++ Tcl_SetErrorCode(interp, "ARITH", "UNDERFLOW", Tcl_GetStringResult(interp), + (char *)NULL); + } else { + Tcl_AppendResult(interp, + "floating-point value too large to represent", + (char *)NULL); +- Tcl_SetErrorCode(interp, "ARITH", "OVERFLOW", interp->result, ++ Tcl_SetErrorCode(interp, "ARITH", "OVERFLOW", Tcl_GetStringResult(interp), + (char *)NULL); + } + } else { +@@ -786,7 +786,7 @@ MathError(interp, value) + sprintf(buf, "%d", errno); + Tcl_AppendResult(interp, "unknown floating-point error, ", + "errno = ", buf, (char *)NULL); +- Tcl_SetErrorCode(interp, "ARITH", "UNKNOWN", interp->result, ++ Tcl_SetErrorCode(interp, "ARITH", "UNKNOWN", Tcl_GetStringResult(interp), + (char *)NULL); + } + } +diff -urp blt2.4z/src/tkScrollbar.c blt2.4z-tcl8.6/src/tkScrollbar.c +--- blt2.4z/src/tkScrollbar.c 2002-05-17 03:46:01.000000000 +0700 ++++ blt2.4z-tcl8.6/src/tkScrollbar.c 2014-05-30 11:13:40.004747237 +0700 +@@ -533,7 +533,7 @@ ScrollbarWidgetCmd(clientData, interp, a + } else { + fraction = ((double)pixels / (double)barWidth); + } +- sprintf(interp->result, "%g", fraction); ++ sprintf(Tcl_GetStringResult(interp), "%g", fraction); + } else if ((c == 'f') && (strncmp(argv[1], "fraction", length) == 0)) { + int x, y, pos, barWidth; + double fraction;