gothic icon indicating copy to clipboard operation
gothic copied to clipboard

Pb using nsf's "gothic" (tcl/tk go binding) libary under Mac

Open serge-hulne opened this issue 11 years ago • 3 comments

Hi,

I have been using nsf "gothic" (tcl/tk go binding) libary under Linux for a while now : it works very well and is very convenient for adding a tcl/tk-based graphical interface to a Go application.

However I experienced a few problems installing it under Mac.

In an attempt to solve that problem, I made the following modifications to my Mac development environment:

  • Installed the latest version of Xcode.
  • Removed "port" (port of the Linux tools for Mac) entirely and installed it from scratch to the latest version.
  • Upgraded to the latest stable version of Go.

Now at least I can install "gothic" under Mac and it compiles without complaining.

I had to make the following changes to the "interpreter.go" file, so that the header directives point to the correct library location:

5 #cgo !tcl85 LDFLAGS: -L/opt/local/lib 6 #cgo !tcl85 LDFLAGS: -ltcl8.6 -ltk8.6 7 #cgo !tcl85 CFLAGS: -I/opt/local/include/tcl8.6 8 #cgo darwin tcl85 CFLAGS: -I/opt/local/include 9 #cgo darwin tcl85 CFLAGS: -I/opt/local/include/tcl8.6

instead of the original:

cgo !tcl85 LDFLAGS: -ltcl8.6 -ltk8.6

cgo !tcl85 CFLAGS: -I/usr/include/tcl8.6

cgo tcl85 LDFLAGS: -ltcl8.5 -ltk8.5

cgo tcl85 CFLAGS: -I/usr/include/tcl8.5

cgo darwin tcl85 CFLAGS: -I/opt/X11/include

So that is points to the correct libraries.

The current situation is that the examples do compile, without any warnings or error messages.

The problem is that the resulting executables run correctly only once (after rebooting the Mac) and cannot be started a second time (they only display a blank interface).

Thanks,

Serge.

serge-hulne avatar Sep 05 '14 10:09 serge-hulne

I answered on golang-nuts, but since I'm not subscribed, I guess the message waits confirmation. Whatever, I'll repeat myself here. Try adding: import _ "net" to any demo and see if it runs. Importing "net" package on mac enables some event loop magic as a side effect, otherwise all input events are stalled.

nsf avatar Sep 05 '14 10:09 nsf

Hi,

Thank you for your prompt answer.

I tried :

3 import ( 4 //"fmt" 5 "github.com/nsf/gothic" 6 _ "net" 7 )

But it does not seem to change anything in this case. I still get a mostly blank interface (the same one you would get by typing "wish" without any parameters), unless I actually reboot the computer (in which case I ca start the example application, but only one after every reboot).

The odd thing is that Tck/Tk and Go, which are both freshly installed to the latest version, work perfectly separately.

That lives only a few possibilities:

a) cgo could have some portability problems.

b) the "port" implementation of Tck/Tk differs from the the Linux implementation (but then "gothic" would not compile without any warning).

c) I might have done something wrong that eludes me ...

Thank you very much again for your help, it is very much appreciated !

Serge.

On Fri, Sep 5, 2014 at 12:49 PM, nsf [email protected] wrote:

I answered on golang-nuts, but since I'm not subscribed, I guess the message waits confirmation. Whatever, I'll repeat myself here. Try adding: import _ "net" to any demo and see if it runs. Importing "net" package on mac enables some event loop magic as a side effect, otherwise all input events are stalled.

— Reply to this email directly or view it on GitHub https://github.com/nsf/gothic/issues/7#issuecomment-54610546.

serge-hulne avatar Sep 05 '14 11:09 serge-hulne

I can't help you since I don't have a mac. All I knew is this import _ "net" trick.

nsf avatar Sep 05 '14 11:09 nsf