- 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
This commit is contained in:
parent
cf80417288
commit
25b5a59767
214
itcl-unbreak-iwidgets.patch
Normal file
214
itcl-unbreak-iwidgets.patch
Normal file
@ -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) {
|
||||
|
23
tcl.changes
23
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]
|
||||
* <oo-1.18.2> 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
|
||||
|
||||
|
14
tcl.spec
14
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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:86f7ae5f581dd0904d04415637ab3aef5a50986c1b6d04c340e2b1b0258da9c4
|
||||
size 8857161
|
3
tcl8.6.3-src.tar.gz
Normal file
3
tcl8.6.3-src.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6ce0778de0d50daaa9c345d7c1fd1288fb658f674028812e7eeee992e3051005
|
||||
size 8901509
|
Loading…
Reference in New Issue
Block a user