Ticket #462 (closed defect: fixed)

Opened 4 years ago

Last modified 4 weeks ago

Tcl interp->result deprecated

Reported by: neteler Owned by: grass-dev@…
Priority: minor Milestone: 6.4.3
Component: Tcl/Tk Version: svn-releasebranch64
Keywords: v.digit, nviz, libform, tcl8.6 Cc: fundawang
Platform: All CPU: All

Description

In Tcl, interp->result is (really) deprecated from Tcl8.6 onwards. Still it is used in several modules:

./lib/form/form.c
./vector/v.digit/form.c
./visualization/nviz/src/anim_support.c
./visualization/nviz/src/cutplane_obj.c
./visualization/nviz/src/do_zoom.c
./visualization/nviz/src/draw.c
./visualization/nviz/src/exag.c
./visualization/nviz/src/lights.c
./visualization/nviz/src/map_obj.c
./visualization/nviz/src/misc.c
./visualization/nviz/src/mkdspf_main.c
./visualization/nviz/src/nvizAppInit.c
./visualization/nviz/src/nviz_init.c
./visualization/nviz/src/position.c
./visualization/nviz/src/togl_flythrough.c
./visualization/nviz/src/volume.c

Funda Wang has proposed a patch set:  http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/current/SOURCES/grass-6.4.0-tcl8.6.patch?view=log

which I attached to the ticket.

Is it correct and can be submitted to 6.4.x to gain compatibility with Tcl > 8.5? Related problems on Mac where reported.

Markus

Attachments

grass-6.4.0-tcl8.6.patch Download (29.5 KB) - added by neteler 4 years ago.
replace deprecated interp->result (updated again patch)
grass-6.4.0-tcl8.6_no_hack.patch Download (31.3 KB) - added by neteler 4 years ago.
replace deprecated interp->result (updated patch inclusive revert of TCL hack 330)

Change History

  Changed 4 years ago by fundawang

please note that the patch is a draft, as i'm not familiar with tcl nor grass :( I only concern about get it built

follow-up: ↓ 3   Changed 4 years ago by fundawang

i've finally finish the patch, at URL:  http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/current/SOURCES/grass-6.4.0-tcl8.6.patch

The attached patch is an outdated one.

in reply to: ↑ 2   Changed 4 years ago by marisn

Replying to fundawang:

i've finally finish the patch, at URL:  http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/current/SOURCES/grass-6.4.0-tcl8.6.patch The attached patch is an outdated one.

I tested this patch with develbranch_6 and tcl-8.4.19. v.digit -n map=newmap segfaults during launch. Can provide bt on request.

  Changed 4 years ago by neteler

v.digit -n map=newmap

works here (Mandriva 2009.0, 64bit, tcl8.5). Also NVIZ works, both with the patch.

  Changed 4 years ago by neteler

Tested also d.what.vect on Mandriva 2009.0, 64bit, tcl8.5, works.

  Changed 4 years ago by neteler

Since the update patch requires more verification, the TCL tip #330 hack was implemented in r35624 and r35625 . The hack was tested with nviz, d.what.vect and v.digit. The files in question now compile also with Tcl8.6.

With later Tcl versions it will fail to compile so the patch suggested by fundawang needs to be considered for the long term support.

Markus

follow-up: ↓ 8   Changed 4 years ago by fundawang

I think i know the reason of crash, cause I've misled the feature of sscanf. I've updated the patch at usual place. Please test.

Changed 4 years ago by neteler

replace deprecated interp->result (updated again patch)

in reply to: ↑ 7   Changed 4 years ago by marisn

Replying to fundawang:

I think i know the reason of crash, cause I've misled the feature of sscanf. I've updated the patch at usual place. Please test.

Hm. This patch really seems to work. Tested on ~x86 develbranch_6.

  Changed 4 years ago by neteler

I suggest to apply it to develbranch_6 but not (yet) to releasebranch_6_4 (where we use the TCL tip # 330 hack).

Changed 4 years ago by neteler

replace deprecated interp->result (updated patch inclusive revert of TCL hack 330)

  Changed 4 years ago by neteler

Patch applied to develbranch_6 (r35718) and to 7.trunk (r35719). Unsure about releasebranch_6_4 (where we currently use the TCL tip # 330 hack).

Markus

follow-up: ↓ 12   Changed 4 years ago by cmbarton

Is this still an issue? We are only maintaining, not developing the TclTk? GUI beyond GRASS 6.4 right? So can't it freeze with TclTk? 8.5 and/or this patch?

Michael

in reply to: ↑ 11   Changed 3 years ago by hamish

  • milestone changed from 6.4.0 to 6.4.1

Replying to cmbarton:

Is this still an issue? We are only maintaining, not developing the TclTk? GUI beyond GRASS 6.4 right? So can't it freeze with TclTk? 8.5 and/or this patch?

FWIW, IMHO maintenance mode means not actively adding new features and refactoring, but rather keeping things working. A small patch to keep it working with tcl/tk 8.6 seems pretty well in the maintenance dept.

Replying to neteler:

Unsure about releasebranch_6_4 (where we currently use the TCL tip # 330 hack).

I suggest to leave the rest as-is for now and backport it to 6.4 if someone using 8.6 complains or if someone really feels like it.

On the other hand it seems like a pretty simple change and we could close the bug. I'll schedule the balance of it for 6.4.1.

shrug, Hamish

  Changed 16 months ago by neteler

  • milestone changed from 6.4.1 to 6.4.3

  Changed 9 months ago by neteler

  • priority changed from major to minor
  • version changed from svn-develbranch6 to svn-releasebranch64
  • milestone changed from 6.4.3 to 6.4.4

No complaints for the past 7 months...

  Changed 9 months ago by cmbarton

I agree. Close.

  Changed 4 weeks ago by hamish

  • keywords v.digit, nviz, libform, tcl8.6 added
  • status changed from new to closed
  • resolution set to fixed
  • milestone changed from 6.4.4 to 6.4.3

tcl 8.6 support for lib/form, v.digit, and nviz backported to relbr64 in r40401 and r55872.

Hamish

Note: See TracTickets for help on using tickets.