Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
serge-hulne opened this issue Sep 5, 2014 · 3 comments
Open

Comments

@serge-hulne
Copy link

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.

@nsf
Copy link
Owner

nsf commented Sep 5, 2014

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.

@serge-hulne
Copy link
Author

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
#7 (comment).

@nsf
Copy link
Owner

nsf commented Sep 5, 2014

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants