Where is Ruby 1.9 'TK' library?

A

Alex DeCaria

Just installed Ruby 1.9 and tried to run one of my TK applications that
works using Ruby 1.8. There doesn't appear to be a 'TK' library in Ruby
1.9. Where/how can I get and install the 'TK' library?

--Alex
 
E

Eric Christopherson

Just installed Ruby 1.9 and tried to run one of my TK applications that
works using Ruby 1.8. =A0There doesn't appear to be a 'TK' library in Rub= y
1.9. =A0Where/how can I get and install the 'TK' library?

--Alex

See the recent (within the past two days) threads about Tk here. It
sounds like you're using the Windows RubyInstaller, which (as I just
found out) doesn't include Tk or Tk bindings.
 
L

Luis Lavena

Just installed Ruby 1.9 and tried to run one of my TK applications that
works using Ruby 1.8.  There doesn't appear to be a 'TK' library in Ruby
1.9.  Where/how can I get and install the 'TK' library?

The Tk bindings in RubyInstaller has not been included.

The reason for that is simple: finding the proper Tk package, manage
to automate the unpacking and verify that Ruby does the good job in
picking it up during compilation takes time.

All the above thing is what we call a build recipe. At this time,
nobody wrote it. But I'm open to add extensions if someone takes the
stab and create the recipe *using rake tasks) to build it.

The repository is here:

http://github.com/oneclick/rubyinstaller/

Once implemented and tested, just send a pull request and will get
those changes tested and then merged.

Is extremely important the Tk package Ruby will links against could be
unpacked, *not installed*. Installation sometimes requires certain
levels of right that some users don't have when working with the build
recipes.

Also, because the recipes should document the process, not hide a
dependency or specific of a version outside the repository.

Hope this shed some light on this.

Regards,
 
E

Eric Christopherson

The Tk bindings in RubyInstaller has not been included.

The reason for that is simple: finding the proper Tk package, manage
to automate the unpacking and verify that Ruby does the good job in
picking it up during compilation takes time.

All the above thing is what we call a build recipe. At this time,
nobody wrote it. But I'm open to add extensions if someone takes the
stab and create the recipe *using rake tasks) to build it.

The repository is here:

http://github.com/oneclick/rubyinstaller/

Once implemented and tested, just send a pull request and will get
those changes tested and then merged.

Is extremely important the Tk package Ruby will links against could be
unpacked, *not installed*. Installation sometimes requires certain
levels of right that some users don't have when working with the build
recipes.

Also, because the recipes should document the process, not hide a
dependency or specific of a version outside the repository.

Hope this shed some light on this.

Luis, is it possible at all to *add* Tk bindings to a copy of Ruby
that has already been installed via RubyInstaller?
 
E

Eric Christopherson

Funny you ask.

http://wiki.github.com/rdp/ruby_tutorials_core/tk

has some info on it (I've had success installing tk_as_gem for 1.9.1
mingw).

Wow, nice! Only... how do I compile the extension to take its Tcl/Tk
files from a non-default directory? I tried:
gem install tk_as_gem -- --with-tcl-dir='C:/Documents and
Settings/echristopherson/My Documents/Development/Tcl'
--with-tk-dir='C:/Documents and Settings/echristopherson/My
Documents/Development/Tcl'

(I don't have permission to install in C:\.)
 
R

Roger Pack

Wow, nice! Only... how do I compile the extension to take its Tcl/Tk
files from a non-default directory? I tried:
gem install tk_as_gem -- --with-tcl-dir='C:/Documents and
Settings/echristopherson/My Documents/Development/Tcl'
--with-tk-dir='C:/Documents and Settings/echristopherson/My
Documents/Development/Tcl'

Did you add the bin dir into your path?
-r
 
R

Roger Pack

'ERROR: Error installing tk_as_gem:
ERROR: Failed to build native extension.'

Any idea what may be wrong? I have both Tcl and Ruby 1.9 installed on
my C: drive.

My first guess is that you don't have the devkit installed (if gcc
--version works then you do, though). We'll probably need more info,
like put your mkmf.log output into a pastie and post the link back here
or what not.
GL!
-r
 
E

Eric Christopherson

Did you add the bin dir into your path?

Yes. Still no luck. I also tried using both MSys and cmd.exe. This was
on my work computer.

At home, I tried installing the gem from MSys and it seemed to hang
for 30 minutes or more, so I ran gem install with --verbose the second
time. It seems to be sitting there doing nothing at a few different
spots, but the really long one (which never terminates that I can see)
is after it runs /bin/install on a whole bunch of files, with the last
one being ./lib/tkextlib/SUPPORT_STATUS.

At that point, I got the message "Updating class cache with 496
classes...". After waiting about 20 minutes for that the first time, I
decided to try running gem install with --no-ri and
--no-update-sources, but it still hangs.

Places where it hangs:
1. Right after the line
"c:/Ruby/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.0.1/ext/lib/tkextlib/tkimg/window.rb".
This takes about 10 minutes here, before it actually prints out the
remaining 42 or so files unpacked, and configures and compiles the
extension.
2. Right after the line "/bin/install -c -m 644
/lib/tkextlib/SUPPORT_STATUS
c:/Ruby/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.0.1/lib/tkextlib". This
is the one that seems to hang for 40 minutes, or however long I let it
go on.

After I kill the process, I am able to at least run a test Tk program.

While we're on the subject, gem install --verbose lists the files that
it's unpacking, and part of the output is the following:

(begin)
c:/Ruby/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.0.1/ext/lib/tk/clipboard.rb

:/Ruby/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.0.1/ext/lib/tk/clock.rb
(end)

-- notice that there is a blank line between clipboard.rb and
clock.rb, and the clock.rb line starts with :/ instead of c:/. Does
anyone know why that would be? It seems to always happen right between
those two lines.
 
R

Roger Pack

2. Right after the line "/bin/install -c -m 644
./lib/tkextlib/SUPPORT_STATUS
c:/Ruby/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.0.1/lib/tkextlib". This
is the one that seems to hang for 40 minutes, or however long I let it
go on.

Hangs with tk for me have typically historically meant that Tk wasn't
found (I think, anyway). that for was 1.8 I've never seen it for 1.9,
though.

Here's a zipped up copy of my binaries (with the gem compiled in there).
They might not even need the tcl binaries in the path...but probably do
(8.4 binaries).

http://rubydoc.ruby-forum.com/distro/ruby191p376.tgz

HTH.

-rp
 
E

Eric Christopherson

Hangs with tk for me have typically historically meant that Tk wasn't
found (I think, anyway). =A0that for was 1.8 I've never seen it for 1.9,
though.

It did find Tk and used it to compile the extension; and things seem
to work afterwards. Maybe part of the reason is that I was using Tk
8.5 instead of 8.4?
Here's a zipped up copy of my binaries (with the gem compiled in there).
They might not even need the tcl binaries in the path...but probably do
(8.4 binaries).

http://rubydoc.ruby-forum.com/distro/ruby191p376.tgz

Thanks. I'll try to download 8.4 so I can try it out later.
 
A

Alex DeCaria

I got an interesting result. I was able to install tk_from_gem and it
installed and worked. However, if I run my Tk application using Ruby
1.9 it loads noticably slow (the Gui builds frame-by-frame as I watch
it). If I run the exact same application using Ruby 1.8, it loads
instantaneously.

I've attached the application I'm running (a units converter program) in
case anyone wants to play with it. Please note it was my first attempt
at GUI programming, so I know it's not the best for style, etc.

--Alex

Attachments:
http://www.ruby-forum.com/attachment/4501/unit_converter.rbw
 
R

Roger Pack

Alex said:
I got an interesting result. I was able to install tk_from_gem and it
installed and worked. However, if I run my Tk application using Ruby
1.9 it loads noticably slow (the Gui builds frame-by-frame as I watch
it). If I run the exact same application using Ruby 1.8, it loads
instantaneously.

Interesting. I get the same thing with tk_as_gem (and approximately the
same thing with 1.9.1 with tk "built inline" (non gem)) [1]

Wonder why it's slower.

-rp
[1] http://rubydoc.ruby-forum.com/distro/ruby-1.9.1-p243-tweaked.tgz
 
E

Eric Christopherson

Roger, could you give some more guidance on what gem/extconf switches
are required to get tk_as_gem built when Tk is installed somewhere
other than C:\Tcl?

Also, is there anything I can do to help diagnose the hanging problem
that happens on my other computer (which does have C:\Tcl)?
 
R

Roger Pack

Roger, could you give some more guidance on what gem/extconf switches
are required to get tk_as_gem built when Tk is installed somewhere
other than C:\Tcl?

Looks like I was hard coding it to /Tcl (my bad).

Give 'er a shot now.

ex:

gem install tk_as_gem -- --with-tcl-dir=/installs/Tcl
--with-tk-dir=/installs/Tcl


Also, is there anything I can do to help diagnose the hanging problem
that happens on my other computer (which does have C:\Tcl)?

Typically for me this has meant I don't have tk84.dll in my path.

You can make sure it is using the whichr gem, if desired.
c:\dev_old>gem install os whichr
c:\dev_old>whichr tk*.dll -a
higher in the list is executed first
e:\Tcl\bin\tk84.dll (is not executable)

(it should show one)
-r
 
E

Eric Christopherson

Looks like I was hard coding it to /Tcl (my bad).

Give 'er a shot now.

ex:

gem install tk_as_gem -- --with-tcl-dir=/installs/Tcl
--with-tk-dir=/installs/Tcl

I've finally had success installing tk_as_gem on my home Windows VM
and my work Windows machine. It also no longer hangs for long periods
of time. On my VM I didn't really have to do anything to make it work,
but on my work PC I have everything stored under My Documents since I
can't write to C:\. Here is what helped:

1. Upgrade to the newest RubyInstaller package (1.9.1-p378). P243 had
a bug where the compilation couldn't finish because it had run out of
memory (Errno::ENOMEM). Install the devkit from rubyinstaller.org, if
you haven't already.
2. Run gem in a Windows command prompt (cmd) window. I never got it
working under MSys.
3. Use "short filenames" (the ones with ~ in them) instead of any
file/directory name with spaces. You can find out short filenames in
cmd by running dir /x on their parent directories. I couldn't get
paths with spaces to work.
4. For convenience, I set a shell variable TCLDIR_. It was set to
C:/Docume~1/echris~1/MyDocu~1/Development/Tcl. Note that this has
forward slashes instead of backslashes! Gcc doesn't understand
backslashes. (The underscore is because I had another variable TCLDIR
with backslashes.)
5. Use the command line:
gem install --verbose tk_as_gem -- --with-tcl-dir=%TCLDIR%
--with-tk-dir=%TCLDIR%

I really hope this helps someone. Roger, I don't know if you'd be able
to fix things so it can build with pathnames with spaces, or under
MSys, but that'd be great. And thanks for the hard work of making this
a gem!
 
A

Alex DeCaria

Roger said:
My first guess is that you don't have the devkit installed (if gcc
--version works then you do, though). We'll probably need more info,
like put your mkmf.log output into a pastie and post the link back here
or what not.
GL!
-r

Roger,

I'm still trying to get tk_to_gem to work on my 64-bit windows. I made
sure devkit was installed, and gcc --version works. I'm getting the
same error message. I can't seem to locate the mkmf.log file. It
doesn't even seem to be created (I did a search of my entire harddrive
and only found mkmf.log files for other installs I've done).

As mentioned before, it worked fine on my other (32-bit) system. Would
there be any 64-bit issues with tk_as_gem?

--Alex
 
R

Roger Pack

I'm still trying to get tk_to_gem to work on my 64-bit windows. I made
sure devkit was installed, and gcc --version works. I'm getting the
same error message. I can't seem to locate the mkmf.log file. It
doesn't even seem to be created (I did a search of my entire harddrive
and only found mkmf.log files for other installs I've done).

What's the full output? Do you have 32 bit versions of tk and ruby
installed, I assume?
-rp
 
A

Alex DeCaria

Roger said:
What's the full output? Do you have 32 bit versions of tk and ruby
installed, I assume?
-rp

I have ActiveState Active Tcl8.4.19.1 installed, along with Ruby
1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]. Ruby is working
fine with my other apps, and the Active Tcl is working fine with my TK
apps if I run them under Ruby 1.8.6.

Ruby 1.9 is my default installation (confirmed by ruby -v).

When I type gem install tk_as_gem I get:
'Building native extensions. This could take a while...
ERROR: Error installing tk_as_gem:
ERROR: Failed to build gem native extension.

C:/Ruby19/bin/ruby.exe extconf.rb

Gem files will remain installed in
C:/Ruby19/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.1.0 for inspection.
Results logged to
C:/Ruby19/lib/ruby/gems/1.9.1/gems/tk_as_gem-0.1.0/gem_make.out'

The contents of the gem_make.out file are just 'C:/Ruby19/bin/ruby.exe
extconf.rb'

I do have devkit in the Ruby19 directory, along with the appropriate
/bin stuff from devkit.

Other gems install fine. I currently have fxruby and RMagick gems
installed and they are working fine. My gem environment is 1.3.6.

--Alex
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,070
Latest member
BiogenixGummies

Latest Threads

Top