From 65c81c1630b595554a95c95f86ba0a678e3ec38ced94600c62e08877a5c62473 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Tue, 3 Dec 2019 13:53:43 +0000 Subject: [PATCH 1/2] - New version: 8.6.10: * (bug)[7a9dc5] [file normalize ~/~foo] segfault * (bug)[3cf3a9] variable 'timezone' deprecated in vc2017 * (bug)[cc1e91] [list [list {*}[set a " "]]] regression obsoletes tcl-expand-regression.patch. * (bug)[e3f481] tests var-1.2[01] * (new) Update to Unicode 12.0 * (new)[TIP 527] New command [timerate] * (bug)[39fed4] [package require] memory validity * (new) New command tcl::unsupported::corotype * (bug) memlink when namespace deletion kills linked var * (new) README file converted to README.md in Markdown * (bug)[8b9854] [info level 0] regression with ensembles * (bug)[6bdadf] crash multi-arg write-traced [lappend] * (bug)[f8a33c] crash Tcl_Exit before init * (bug)[fa6bf3] Bytecode fails epoch recovery at numLevel=0 * (bug)[fec0c1] C stack overflow compiling bytecode * tzdata updated to Olson's tzdata2019c * (bug)[16768d] Fix [info hostname] on NetBSD * (new) libtommath updated to release 1.2.0 * (bug)[bcd100] bad fs cache when system encoding changes * (bug)[135804] segfault in [next] after destroy * (bug)[13657a] application/json us text, not binary OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=120 --- tcl.changes | 27 +++++++++++++++++++++++++++ tcl.spec | 12 +++++------- tcl8.6.10-src.tar.gz | 3 +++ tcl8.6.9-src.tar.gz | 3 --- 4 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 tcl8.6.10-src.tar.gz delete mode 100644 tcl8.6.9-src.tar.gz diff --git a/tcl.changes b/tcl.changes index 0ab0f8f..140e6b3 100644 --- a/tcl.changes +++ b/tcl.changes @@ -1,3 +1,30 @@ +------------------------------------------------------------------- +Tue Dec 3 13:40:02 UTC 2019 - Reinhard Max + +- New version: 8.6.10: + * (bug)[7a9dc5] [file normalize ~/~foo] segfault + * (bug)[3cf3a9] variable 'timezone' deprecated in vc2017 + * (bug)[cc1e91] [list [list {*}[set a " "]]] regression + obsoletes tcl-expand-regression.patch. + * (bug)[e3f481] tests var-1.2[01] + * (new) Update to Unicode 12.0 + * (new)[TIP 527] New command [timerate] + * (bug)[39fed4] [package require] memory validity + * (new) New command tcl::unsupported::corotype + * (bug) memlink when namespace deletion kills linked var + * (new) README file converted to README.md in Markdown + * (bug)[8b9854] [info level 0] regression with ensembles + * (bug)[6bdadf] crash multi-arg write-traced [lappend] + * (bug)[f8a33c] crash Tcl_Exit before init + * (bug)[fa6bf3] Bytecode fails epoch recovery at numLevel=0 + * (bug)[fec0c1] C stack overflow compiling bytecode + * tzdata updated to Olson's tzdata2019c + * (bug)[16768d] Fix [info hostname] on NetBSD + * (new) libtommath updated to release 1.2.0 + * (bug)[bcd100] bad fs cache when system encoding changes + * (bug)[135804] segfault in [next] after destroy + * (bug)[13657a] application/json us text, not binary + ------------------------------------------------------------------- Tue Jul 9 06:21:27 UTC 2019 - Andreas Schwab diff --git a/tcl.spec b/tcl.spec index a972f7f..e928a4e 100644 --- a/tcl.spec +++ b/tcl.spec @@ -1,7 +1,7 @@ # # spec file for package tcl # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,12 +17,12 @@ Name: tcl -Url: http://www.tcl.tk -Version: 8.6.9 +URL: http://www.tcl.tk +Version: 8.6.10 Release: 0 %define rrc %{nil} %define TCL_MINOR %(echo %version | cut -c1-3) -%define itclver 4.1.2 +%define itclver 4.2.0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: The Tcl Programming Language License: TCL @@ -41,7 +41,6 @@ Source0: ftp://ftp.tcl.tk/pub/tcl/tcl8_6/%{name}%{version}%{rrc}-src.tar. Source1: tcl-rpmlintrc Source2: baselibs.conf Source3: macros.tcl -Patch0: tcl-expand-regression.patch BuildRequires: autoconf BuildRequires: pkg-config BuildRequires: zlib-devel @@ -81,7 +80,6 @@ the Tcl language itself. %prep %setup -q -n %name%version -%patch0 %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects @@ -163,7 +161,7 @@ exit 0 %files %defattr(-,root,root,755) -%doc README changes license.terms ChangeLog* +%doc README.md changes license.terms ChangeLog* %docdir %_mandir/mann %doc %_mandir/man1/* %doc %_mandir/mann/* diff --git a/tcl8.6.10-src.tar.gz b/tcl8.6.10-src.tar.gz new file mode 100644 index 0000000..e15b2e0 --- /dev/null +++ b/tcl8.6.10-src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5196dbf6638e3df8d5c87b5815c8c2b758496eb6f0e41446596c9a4e638d87ed +size 10144235 diff --git a/tcl8.6.9-src.tar.gz b/tcl8.6.9-src.tar.gz deleted file mode 100644 index c1036c6..0000000 --- a/tcl8.6.9-src.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e -size 10000896 From 94d963c83598d7b4b013447bbb180a5b7c2b381756b9ab22cb6cad25920ae7ae Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Wed, 4 Dec 2019 08:14:28 +0000 Subject: [PATCH 2/2] OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=121 --- tcl-expand-regression.patch | 219 ------------------------------------ 1 file changed, 219 deletions(-) delete mode 100644 tcl-expand-regression.patch diff --git a/tcl-expand-regression.patch b/tcl-expand-regression.patch deleted file mode 100644 index 43d79af..0000000 --- a/tcl-expand-regression.patch +++ /dev/null @@ -1,219 +0,0 @@ -Index: generic/tclExecute.c -================================================================== ---- generic/tclExecute.c -+++ generic/tclExecute.c -@@ -5235,12 +5235,16 @@ - } - #endif - - /* Every range of an empty list is an empty list */ - if (objc == 0) { -- TRACE_APPEND(("\n")); -- NEXT_INST_F(9, 0, 0); -+ /* avoid return of not canonical list (e. g. spaces in string repr.) */ -+ if (!valuePtr->bytes || !valuePtr->bytes[0]) { -+ TRACE_APPEND(("\n")); -+ NEXT_INST_F(9, 0, 0); -+ } -+ goto emptyList; - } - - /* Decode index value operands. */ - - /* - -Index: generic/tclTest.c -================================================================== ---- generic/tclTest.c -+++ generic/tclTest.c -@@ -218,10 +218,13 @@ - static void PrintParse(Tcl_Interp *interp, Tcl_Parse *parsePtr); - static void SpecialFree(char *blockPtr); - static int StaticInitProc(Tcl_Interp *interp); - static int TestasyncCmd(ClientData dummy, - Tcl_Interp *interp, int argc, const char **argv); -+static int TestpurebytesobjObjCmd(ClientData clientData, -+ Tcl_Interp *interp, int objc, -+ Tcl_Obj *const objv[]); - static int TestbytestringObjCmd(ClientData clientData, - Tcl_Interp *interp, int objc, - Tcl_Obj *const objv[]); - static int TestcmdinfoCmd(ClientData dummy, - Tcl_Interp *interp, int argc, const char **argv); -@@ -568,10 +571,11 @@ - */ - - Tcl_CreateObjCommand(interp, "gettimes", GetTimesObjCmd, NULL, NULL); - Tcl_CreateCommand(interp, "noop", NoopCmd, NULL, NULL); - Tcl_CreateObjCommand(interp, "noop", NoopObjCmd, NULL, NULL); -+ Tcl_CreateObjCommand(interp, "testpurebytesobj", TestpurebytesobjObjCmd, NULL, NULL); - Tcl_CreateObjCommand(interp, "testbytestring", TestbytestringObjCmd, NULL, NULL); - Tcl_CreateObjCommand(interp, "testwrongnumargs", TestWrongNumArgsObjCmd, - NULL, NULL); - Tcl_CreateObjCommand(interp, "testfilesystem", TestFilesystemObjCmd, - NULL, NULL); -@@ -2079,11 +2083,11 @@ - int length, flags; - const char *script; - - flags = 0; - if (objc == 3) { -- const char *global = Tcl_GetStringFromObj(objv[2], &length); -+ const char *global = Tcl_GetString(objv[2]); - if (strcmp(global, "global") != 0) { - Tcl_AppendResult(interp, "bad value \"", global, - "\": must be global", NULL); - return TCL_ERROR; - } -@@ -4953,10 +4957,61 @@ - int objc, /* Number of arguments. */ - Tcl_Obj *const objv[]) /* The argument objects. */ - { - return TCL_OK; - } -+ -+/* -+ *---------------------------------------------------------------------- -+ * -+ * TestpurebytesobjObjCmd -- -+ * -+ * This object-based procedure constructs a pure bytes object -+ * without type and with internal representation containing NULL's. -+ * -+ * If no argument supplied it returns empty object with tclEmptyStringRep, -+ * otherwise it returns this as pure bytes object with bytes value equal -+ * string. -+ * -+ * Results: -+ * Returns the TCL_OK result code. -+ * -+ * Side effects: -+ * None. -+ * -+ *---------------------------------------------------------------------- -+ */ -+ -+static int -+TestpurebytesobjObjCmd( -+ ClientData unused, /* Not used. */ -+ Tcl_Interp *interp, /* Current interpreter. */ -+ int objc, /* Number of arguments. */ -+ Tcl_Obj *const objv[]) /* The argument objects. */ -+{ -+ Tcl_Obj *objPtr; -+ -+ if (objc > 2) { -+ Tcl_WrongNumArgs(interp, 1, objv, "?string?"); -+ return TCL_ERROR; -+ } -+ objPtr = Tcl_NewObj(); -+ /* -+ objPtr->internalRep.twoPtrValue.ptr1 = NULL; -+ objPtr->internalRep.twoPtrValue.ptr2 = NULL; -+ */ -+ memset(&objPtr->internalRep, 0, sizeof(objPtr->internalRep)); -+ if (objc == 2) { -+ const char *s = Tcl_GetString(objv[1]); -+ objPtr->length = objv[1]->length; -+ objPtr->bytes = ckalloc(objPtr->length + 1); -+ memcpy(objPtr->bytes, s, objPtr->length); -+ objPtr->bytes[objPtr->length] = 0; -+ } -+ Tcl_SetObjResult(interp, objPtr); -+ return TCL_OK; -+} - - /* - *---------------------------------------------------------------------- - * - * TestbytestringObjCmd -- - -Index: tests/basic.test -================================================================== ---- tests/basic.test -+++ tests/basic.test -@@ -959,10 +959,16 @@ - lappend res [catch { run { {*}{error Hejsan} } } err] - lappend res $err - } -cleanup { - unset res t - } -result {0 10 1 Hejsan} -+ -+test basic-48.24.$noComp {expansion: empty not canonical list, regression test, bug [cc1e91552c]} -constraints $constraints -setup { -+ unset -nocomplain a -+} -body { -+ run {list [list {*}{ }] [list {*}[format %c 32]] [list {*}[set a { }]]} -+} -result [lrepeat 3 {}] -cleanup {unset -nocomplain a} - - } ;# End of noComp loop - - test basic-49.1 {Tcl_EvalEx: verify TCL_EVAL_GLOBAL operation} testevalex { - set ::x global - -Index: tests/lrange.test -================================================================== ---- tests/lrange.test -+++ tests/lrange.test -@@ -13,10 +13,16 @@ - - if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest - namespace import -force ::tcltest::* - } -+ -+::tcltest::loadTestedCommands -+catch [list package require -exact Tcltest [info patchlevel]] -+ -+testConstraint testpurebytesobj [llength [info commands testpurebytesobj]] -+ - - test lrange-1.1 {range of list elements} { - lrange {a b c d} 1 2 - } {b c} - test lrange-1.2 {range of list elements} { -@@ -105,14 +111,44 @@ - list [lrange {a b c} -1 1] [lrange {a b c} -1+0 end-1] [lrange {a b c} -2 1] [lrange {a b c} -2+0 0+1] - } [lrepeat 4 {a b}] - test lrange-3.6 {compiled with calculated indices, end out of range (after end)} { - list [lrange {a b c} 1 end+1] [lrange {a b c} 1+0 2+1] [lrange {a b c} 1 end+1] [lrange {a b c} end-1 3+1] - } [lrepeat 4 {b c}] -+ -+test lrange-3.7a {compiled on empty not canonical list (with static and dynamic indices), regression test, bug [cc1e91552c]} { -+ list [lrange { } 0 1] [lrange [format %c 32] 0 1] [lrange [set a { }] 0 1] \ -+ [lrange { } 0-1 end+1] [lrange [format %c 32] 0-1 end+1] [lrange $a 0-1 end+1] -+} [lrepeat 6 {}] -+test lrange-3.7b {not compiled on empty not canonical list (with static and dynamic indices), regression test, bug [cc1e91552c]} { -+ set cmd lrange -+ list [$cmd { } 0 1] [$cmd [format %c 32] 0 1] [$cmd [set a { }] 0 1] \ -+ [$cmd { } 0-1 end+1] [$cmd [format %c 32] 0-1 end+1] [$cmd $a 0-1 end+1] -+} [lrepeat 6 {}] -+# following 4 tests could cause a segfault on empty non-lists with tclEmptyStringRep -+# (as before the fix [58c46e74b931d3a1]): -+test lrange-3.7a.2 {compiled on empty not list object, 2nd regression test, bug [cc1e91552c]} { -+ list [lrange {} 0 1] [lrange [lindex a -1] 0 1] [lrange [set a {}] 0 1] \ -+ [lrange {} 0-1 end+1] [lrange [lindex a -1] 0-1 end+1] [lrange $a 0-1 end+1] -+} [lrepeat 6 {}] -+test lrange-3.7b.2 {not compiled on empty not list object, 2nd regression test, bug [cc1e91552c]} { -+ set cmd lrange -+ list [$cmd {} 0 1] [$cmd [lindex a -1] 0 1] [$cmd [set a {}] 0 1] \ -+ [$cmd {} 0-1 end+1] [$cmd [lindex a -1] 0-1 end+1] [$cmd $a 0-1 end+1] -+} [lrepeat 6 {}] -+test lrange-3.7c.2 {compiled on empty pure bytes object, 2nd regression test, bug [cc1e91552c]} { -+ list [lrange [testpurebytesobj] 0 1] [lrange [testpurebytesobj { }] 0 1] [lrange [set a [testpurebytesobj {}]] 0 1] \ -+ [lrange [testpurebytesobj] 0-1 end+1] [lrange [testpurebytesobj { }] 0-1 end+1] [lrange $a 0-1 end+1] -+} [lrepeat 6 {}] -+test lrange-3.7d.2 {not compiled on empty pure bytes object, 2nd regression test, bug [cc1e91552c]} { -+ set cmd lrange -+ list [$cmd [testpurebytesobj] 0 1] [$cmd [testpurebytesobj { }] 0 1] [$cmd [set a [testpurebytesobj {}]] 0 1] \ -+ [$cmd [testpurebytesobj] 0-1 end+1] [$cmd [testpurebytesobj { }] 0-1 end+1] [$cmd $a 0-1 end+1] -+} [lrepeat 6 {}] - - - # cleanup - ::tcltest::cleanupTests - return - - # Local Variables: - # mode: tcl - # End: -