Pb using nsf's "gothic" (tcl/tk go binding) libary under Mac
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.
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.
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.
I can't help you since I don't have a mac. All I knew is this import _ "net" trick.