Project

General

Profile

Bug #4141

Tk extension is not accepting any type of parameter combination

Added by luislavena (Luis Lavena) about 10 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.3dev (2010-12-09 trunk 30151) [i386-mingw32]
Backport:
[ruby-core:33656]

Description

=begin
Hello,

As part of RubyInstaller team, we want to include tk extension in the next release. For that purpose, we built both tcl and tk 8.5.9 and made bin, includes and lib directories available using the standard GCC variables (PATH, CPATH and LIBRARY_PATH)

All the existing Ruby extensions (openssl, curses, etc) work with this and properly detect the available headers, except tk extension.

Normally, this is the output:

compiling tk
check functions.........
check struct members..
Use ActiveTcl libraries (if available).
Search tclConfig.sh and tkConfig.sh.........
Fail to find [tclConfig.sh, tkConfig.sh]
Search Tcl library
Warning:: cannot find Tcl library. tcltklib will not be compiled (tcltklib is disabled on your Ruby
== Ruby/Tk will not work). Please check configure options.
Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
compiling tk/tkutil

To workaround this, I've tried manually provide parameters to Ruby configure process (like --with-tcl-dir, --with-tk-dir, --with-tcllib and --with-tklib), all been marked as warning and no effect in the extension itself.

Manually trying to build the extension and provide these parameters:

mkdir build
cd build
ruby ..\extconf.rb --with-tcl-dir=../../tcl --with-tk-dir=../../tk --with-tcllib=tcl85s --with-tklib=tk85s

Since tk extension checks for tcl85g, not the static version (as build for RubyInstaller)

Generates the following output:

Configure options for Ruby/Tk may be updated.
So, delete files which depend on old configs.
check functions.checking for ruby_native_thread_p() in ruby.h... yes
.checking for rb_errinfo() in ruby.h... yes
.checking for rb_safe_level() in ruby.h... yes
.checking for rb_hash_lookup() in ruby.h... yes
.checking for rb_proc_new() in ruby.h... yes
.checking for rb_obj_untrust() in ruby.h... yes
.checking for rb_obj_taint() in ruby.h... yes
.checking for rb_set_safe_level_force() in ruby.h... yes
.checking for rb_sourcefile() in ruby.h... yes

check struct members.checking for struct RArray.ptr in ruby.h... no
.checking for struct RArray.len in ruby.h... no

Use ActiveTcl libraries (if available).
Search tclConfig.sh (in ../../tcl/lib) and tkConfig.sh (in ../../tk/lib)..
WARNING: found "../../tcl/lib/tclConfig.sh", but cannot find valid Tcl/Tk libraries on the same directory. So, ignore it.

WARNING: found "../../tcl/lib/tclconfig.sh", but cannot find valid Tcl/Tk libraries on the same directory. So, ignore it.

Fail to find [tclConfig.sh, tkConfig.sh]
Search Tcl library.checking for Tcl_FindExecutable() in -ltcl85s... yes

Search Tk library.checking for Tk_Init() in -ltk85s... no

Warning:: cannot find Tk library. tcltklib will not be compiled (tcltklib is disabled on your Ruby == Ruby/Tk will not work). Please check configure options.
Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
*** ../extconf.rb failed ***

Checking libtk85s.a for symbols (using nm) the Tk_Init symbol is defined.

I've tried this way and also using --with-old-extconf, both with similar results.

If extconf can't be make compatible with the default build process, what tweak is required for a successful compilation?

Thank you.
=end


Related issues

Related to Backport192 - Backport #4802: Please backport r31742Rejectedyugui (Yuki Sonoda)Actions

Also available in: Atom PDF