From 25b5a597675b8977ddab4cea6f2675dd583346a4c800b83767efe65328888236 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Wed, 12 Nov 2014 15:59:29 +0000 Subject: [PATCH] - New version 8.6.3: - Add itcl-unbreak-iwidgets.patch to revert a recent change in itcl that broke iwidgets. OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=81 --- itcl-unbreak-iwidgets.patch | 214 ++++++++++++++++++++++++++++++++++++ tcl.changes | 23 ++++ tcl.spec | 14 ++- tcl8.6.2-src.tar.gz | 3 - tcl8.6.3-src.tar.gz | 3 + 5 files changed, 249 insertions(+), 8 deletions(-) create mode 100644 itcl-unbreak-iwidgets.patch delete mode 100644 tcl8.6.2-src.tar.gz create mode 100644 tcl8.6.3-src.tar.gz diff --git a/itcl-unbreak-iwidgets.patch b/itcl-unbreak-iwidgets.patch new file mode 100644 index 0000000..7e99d8e --- /dev/null +++ b/itcl-unbreak-iwidgets.patch @@ -0,0 +1,214 @@ +Index: generic/itclBase.c +================================================================== +--- generic/itclBase.c ++++ generic/itclBase.c +@@ -319,11 +319,11 @@ + Tcl_InitObjHashTable(&infoPtr->nameClasses); + Tcl_InitHashTable(&infoPtr->namespaceClasses, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(&infoPtr->procMethods, TCL_ONE_WORD_KEYS); + Tcl_InitObjHashTable(&infoPtr->instances); + Tcl_InitHashTable(&infoPtr->objectInstances, TCL_ONE_WORD_KEYS); +- Tcl_InitObjHashTable(&infoPtr->myEnsembles); ++// Tcl_InitObjHashTable(&infoPtr->myEnsembles); + Tcl_InitObjHashTable(&infoPtr->classTypes); + infoPtr->ensembleInfo = (EnsembleInfo *)ckalloc(sizeof(EnsembleInfo)); + memset(infoPtr->ensembleInfo, 0, sizeof(EnsembleInfo)); + Tcl_InitHashTable(&infoPtr->ensembleInfo->ensembles, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(&infoPtr->ensembleInfo->subEnsembles, TCL_ONE_WORD_KEYS); + +Index: generic/itclInt.h +================================================================== +--- generic/itclInt.h ++++ generic/itclInt.h +@@ -148,12 +148,12 @@ + Tcl_HashTable nameClasses; /* maps from fullNamePtr to iclsPtr */ + Tcl_HashTable namespaceClasses; /* maps from nsPtr to iclsPtr */ + Tcl_HashTable procMethods; /* maps from procPtr to mFunc */ + Tcl_HashTable instances; /* maps from instanceNumber to ioPtr */ + Tcl_HashTable objectInstances; /* maps from ioPtr to instanceNumber */ +- Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) +- * etc. to ensemble pathName */ ++// Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) ++// * etc. to ensemble pathName */ + Tcl_HashTable classTypes; /* maps from class type i.e. "widget" + * to define value i.e. ITCL_WIDGET */ + int protection; /* protection level currently in effect */ + int useOldResolvers; /* whether to use the "old" style + * resolvers or the CallFrame resolvers */ + +Index: generic/itclParse.c +================================================================== +--- generic/itclParse.c ++++ generic/itclParse.c +@@ -187,17 +187,17 @@ + int + Itcl_ParseInit( + Tcl_Interp *interp, /* interpreter to be updated */ + ItclObjectInfo *infoPtr) /* info regarding all known objects and classes */ + { +- Tcl_HashEntry *hPtr; ++// Tcl_HashEntry *hPtr; + Tcl_Namespace *parserNs; +- Tcl_Obj *objPtr; +- Tcl_Obj *namePtr; ++// Tcl_Obj *objPtr; ++// Tcl_Obj *namePtr; + ProtectionCmdInfo *pInfoPtr; + Tcl_DString buffer; +- int isNew; ++// int isNew; + int i; + + /* + * Create the "itcl::parser" namespace used to parse class + * definitions. +@@ -264,16 +264,18 @@ + * Create the "itcl::find" command for high-level queries. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::find") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::find", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::find", + "classes", "?pattern?", + Itcl_FindClassesCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { +@@ -295,16 +297,18 @@ + * and classes. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::delete") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::delete", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::delete", + "class", "name ?name...?", + Itcl_DelClassCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { +@@ -333,16 +337,18 @@ + * and classes existence. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::is") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::is", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::is", + "class", "name", Itcl_IsClassCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { + return TCL_ERROR; +@@ -382,31 +388,35 @@ + if (Itcl_AddEnsemblePart(interp, "::itcl::filter", + "delete", "objectOrClass filter ? ... ?", Itcl_FilterDeleteCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::filter", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + Itcl_PreserveData((ClientData)infoPtr); + + /* + * Add the "forward" commands (add/delete) + */ + if (Itcl_CreateEnsemble(interp, "::itcl::forward") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::forward", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::forward", + "add", "objectOrClass srcCommand targetCommand ? options ... ?", + Itcl_ForwardAddCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { +@@ -426,16 +436,18 @@ + * Add the "mixin" (add/delete) commands. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::mixin") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::mixin", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::mixin", + "add", "objectOrClass class ? class ... ?", + Itcl_MixinAddCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { +@@ -455,15 +467,17 @@ + * Add commands for handling import stubs at the Tcl level. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::import::stub") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::stubs", -1); + objPtr = Tcl_GetObjResult(interp); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::import::stub", + "create", "name", Itcl_StubCreateCmd, + (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) != TCL_OK) { + return TCL_ERROR; +@@ -529,16 +543,18 @@ + * Add the "delegate" (method/option) commands. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::parser::delegate") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::delegate", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::parser::delegate", + "method", "name to targetName as scipt using script", + Itcl_ClassDelegateMethodCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { + diff --git a/tcl.changes b/tcl.changes index c6bcff6..42a35bf 100644 --- a/tcl.changes +++ b/tcl.changes @@ -1,3 +1,26 @@ +------------------------------------------------------------------- +Wed Nov 12 15:54:19 UTC 2014 - max@suse.com + +- New version 8.6.3: + * (bug)[b9e1a3] Correct Method Search Order + * (bug)[ccc2c2] Regression [lreplace {} 1 1] + * Crash regression in [oo::class destroy] + * (bug)[84af11] Regress [regsub -all {\(.*} a(b) {}] + * (bug)[cee90e] [try {} on ok {} - on return {} {}] panic + * (feature) [tcl::unsupported::getbytecode] disassember + * (enhancement) [string cat] bytecode optimization + * (bug)[82521b] segfault in mangled bytecode + * (bug)[bc5b79] Hang in some [read]s of limited size + * (bug)[bc1a96] segfault in [array set] of traced array + * (bug)[59a2e7] MSVC14 compile support + * (bug)[ed29c4] [fcopy] treats [blocked] as error + * (bug)[bf7135] regression in Tcl_Write() interface + * (bug)[10dc6d] fix [gets] on non-blocking channels + * (bug)[214cc0] Restore [lappend v] return value + * (bug)[5adc35] Stop forcing EOF to be permanent +- Add itcl-unbreak-iwidgets.patch to revert a recent change in + itcl that broke iwidgets. + ------------------------------------------------------------------- Sat Sep 6 10:23:13 UTC 2014 - coolo@suse.de diff --git a/tcl.spec b/tcl.spec index eb649ac..f700de4 100644 --- a/tcl.spec +++ b/tcl.spec @@ -18,7 +18,7 @@ Name: tcl Url: http://www.tcl.tk -Version: 8.6.2 +Version: 8.6.3 Release: 0 %define rrc %{nil} %define TCL_MINOR %(echo %version | cut -c1-3) @@ -33,13 +33,14 @@ Obsoletes: tcl-64bit # Provides: tclsh Provides: tclsh%{TCL_MINOR} -Obsoletes: itcl < 4.0.0 -Provides: itcl = 4.0.0 +Obsoletes: itcl < 4.0.2 +Provides: itcl = 4.0.2 PreReq: /bin/rm Source0: ftp://ftp.tcl.tk/pub/tcl/tcl8_6/%{name}%{version}%{rrc}-src.tar.gz Source1: tcl-rpmlintrc Source2: baselibs.conf Source3: macros.tcl +Patch1: itcl-unbreak-iwidgets.patch BuildRequires: autoconf BuildRequires: pkg-config # Required for test suite: @@ -64,8 +65,8 @@ Requires: tcl = %version %ifarch ppc64 Obsoletes: tcl-devel-64bit %endif -Obsoletes: itcl-devel < 4.0.0 -Provides: itcl-devel = 4.0.0 +Obsoletes: itcl-devel < 4.0.2 +Provides: itcl-devel = 4.0.2 # %description devel @@ -78,6 +79,9 @@ the Tcl language itself. %prep %setup -q -n %name%version +pushd pkgs/itcl* +%patch1 -R +popd %build cd unix diff --git a/tcl8.6.2-src.tar.gz b/tcl8.6.2-src.tar.gz deleted file mode 100644 index 57f7c06..0000000 --- a/tcl8.6.2-src.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86f7ae5f581dd0904d04415637ab3aef5a50986c1b6d04c340e2b1b0258da9c4 -size 8857161 diff --git a/tcl8.6.3-src.tar.gz b/tcl8.6.3-src.tar.gz new file mode 100644 index 0000000..a747a4c --- /dev/null +++ b/tcl8.6.3-src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ce0778de0d50daaa9c345d7c1fd1288fb658f674028812e7eeee992e3051005 +size 8901509