1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/tk/extconf.rb,ext/tk/config_list.in: ignore paths which includes

white space characters on Windows.[ruby-dev:38794]
* ext/tk/lib/tk.rb: works on Cygwin (limitation:: Tk.mainloop works on
  the main thread only).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagai 2009-07-16 14:34:09 +00:00
parent 6d7ddc3b29
commit 31060fb11b
4 changed files with 71 additions and 17 deletions

View file

@ -1,3 +1,11 @@
Thu Jul 16 23:32:16 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/extconf.rb,ext/tk/config_list.in: ignore paths which includes
white space characters on Windows.[ruby-dev:38794]
* ext/tk/lib/tk.rb: works on Cygwin (limitation:: Tk.mainloop works on
the main thread only).
Thu Jul 16 20:58:18 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp> Thu Jul 16 20:58:18 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* test/win32ole/test_win32ole.rb (test_s_codepage_changed, * test/win32ole/test_win32ole.rb (test_s_codepage_changed,

View file

@ -1,6 +1,6 @@
############################################## ##############################################
# configure options for Ruby/Tk # configure options for Ruby/Tk
# release date: 2009-07-12 # release date: 2009-07-15
############################################## ##############################################
with tk-old-extconf with tk-old-extconf
with ActiveTcl with ActiveTcl
@ -33,3 +33,4 @@ with X11-lib
enable pthread enable pthread
enable tcl-thread enable tcl-thread
with tclConfig-file with tclConfig-file
enable space-on-tk-libpath

View file

@ -1,6 +1,6 @@
############################################################## ##############################################################
# extconf.rb for tcltklib # extconf.rb for tcltklib
# release date: 2009-07-12 # release date: 2009-07-15
############################################################## ##############################################################
require 'mkmf' require 'mkmf'
@ -214,6 +214,11 @@ def get_shlib_path_head
} }
end end
unless TkLib_Config["space-on-tk-libpath"]
path_head.delete_if{|path| path =~ / /}
path_dirs.delete_if{|path| path =~ / /}
end
[path_head, path_dirs] [path_head, path_dirs]
end end
@ -418,6 +423,10 @@ def search_tclConfig(*paths) # list of lib-dir or [tcl-libdir, tk-libdir]
dirs << File.expand_path(File.join(dir, '..')) dirs << File.expand_path(File.join(dir, '..'))
} }
unless TkLib_Config["space-on-tk-libpath"]
dirs.delete_if{|path| path =~ / /}
end
config_dir.concat(dirs.zip(dirs)) config_dir.concat(dirs.zip(dirs))
elsif framework = find_macosx_framework() elsif framework = find_macosx_framework()
@ -627,7 +636,14 @@ def check_shlib_search_path(paths)
path_list = check_NG_path(path_list) path_list = check_NG_path(path_list)
path_list.each{|path| $LIBPATH |= [path.strip] } if is_win32?
# exist-dir only
path_list.each{|path|
path = path.strip; $LIBPATH |= [path] if File.directory?(path)
}
else
path_list.each{|path| $LIBPATH |= [path.strip] }
end
end end
def find_tcl(tcllib, stubs, version, *opt_paths) def find_tcl(tcllib, stubs, version, *opt_paths)
@ -646,6 +662,10 @@ def find_tcl(tcllib, stubs, version, *opt_paths)
"/Tcl/lib", "/Program Files/Tcl/lib" "/Tcl/lib", "/Program Files/Tcl/lib"
].find_all{|dir| File.directory?(dir)} ].find_all{|dir| File.directory?(dir)}
unless TkLib_Config["space-on-tk-libpath"]
default_paths.delete_if{|path| path =~ / /}
end
if (paths = opt_paths.compact).empty? if (paths = opt_paths.compact).empty?
if TclConfig_Info['config_file_path'] if TclConfig_Info['config_file_path']
# use definisions on tclConfig.sh # use definisions on tclConfig.sh
@ -654,9 +674,11 @@ def find_tcl(tcllib, stubs, version, *opt_paths)
unless stubs unless stubs
#*** Probably, TCL_LIBS is a subset of TK_LIBS. *** #*** Probably, TCL_LIBS is a subset of TK_LIBS. ***
# $LDFLAGS << ' ' << TclConfig_Info['TCL_LIBS'] unless is_win32? # ignore tclConfig on Windows
# $DLDFLAGS << ' ' << TclConfig_Info['TCL_LIBS'] # $LDFLAGS << ' ' << TclConfig_Info['TCL_LIBS']
$LDFLAGS << ' ' << TclConfig_Info['TCL_LIB_SPEC'] # $DLDFLAGS << ' ' << TclConfig_Info['TCL_LIBS']
$LDFLAGS << ' ' << TclConfig_Info['TCL_LIB_SPEC']
end
return true return true
end end
@ -666,9 +688,11 @@ def find_tcl(tcllib, stubs, version, *opt_paths)
return false return false
else else
#*** Probably, TCL_LIBS is a subset of TK_LIBS. *** #*** Probably, TCL_LIBS is a subset of TK_LIBS. ***
# $LDFLAGS << ' ' << TclConfig_Info['TCL_LIBS'] unless is_win32? # ignore tclConfig on Windows
# $DLDFLAGS << ' ' << TclConfig_Info['TCL_LIBS'] # $LDFLAGS << ' ' << TclConfig_Info['TCL_LIBS']
$LDFLAGS << ' ' << TclConfig_Info['TCL_STUB_LIB_SPEC'] # $DLDFLAGS << ' ' << TclConfig_Info['TCL_LIBS']
$LDFLAGS << ' ' << TclConfig_Info['TCL_STUB_LIB_SPEC']
end
return true return true
end end
end end
@ -742,6 +766,10 @@ def find_tk(tklib, stubs, version, *opt_paths)
"/Tcl/lib", "/Program Files/Tcl/lib" "/Tcl/lib", "/Program Files/Tcl/lib"
].find_all{|dir| File.directory?(dir)} ].find_all{|dir| File.directory?(dir)}
unless TkLib_Config["space-on-tk-libpath"]
default_paths.delete_if{|path| path =~ / /}
end
if (paths = opt_paths.compact).empty? if (paths = opt_paths.compact).empty?
if TkConfig_Info['config_file_path'] if TkConfig_Info['config_file_path']
# use definisions on tkConfig.sh # use definisions on tkConfig.sh
@ -749,9 +777,12 @@ def find_tk(tklib, stubs, version, *opt_paths)
$LIBPATH |= [$2] unless $2.empty? $LIBPATH |= [$2] unless $2.empty?
unless stubs unless stubs
$LDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS']) unless is_win32? # ignore tclConfig on Windows
# $DLDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS']) # $LDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS'])
$LDFLAGS << ' ' << TkConfig_Info['TK_LIB_SPEC'] $LDFLAGS << ' ' << TkConfig_Info['TK_LIBS'] unless is_win32?
# $DLDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS'])
$LDFLAGS << ' ' << TkConfig_Info['TK_LIB_SPEC'] unless is_win32?
end
return true return true
end end
@ -759,9 +790,12 @@ def find_tk(tklib, stubs, version, *opt_paths)
puts "#{TkConfig_Info['config_file_path']} tells us that your Tcl/Tk library doesn't support stub." puts "#{TkConfig_Info['config_file_path']} tells us that your Tcl/Tk library doesn't support stub."
return false return false
else else
$LDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS']) unless is_win32? # ignore tclConfig on Windows
# $DLDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS']) # $LDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS'])
$LDFLAGS << ' ' << TkConfig_Info['TK_STUB_LIB_SPEC'] $LDFLAGS << ' ' << TkConfig_Info['TK_LIBS']
# $DLDFLAGS << ' ' << parse_TK_LIBS(TkConfig_Info['TK_LIBS'])
$LDFLAGS << ' ' << TkConfig_Info['TK_STUB_LIB_SPEC']
end
return true return true
end end
end end
@ -818,6 +852,10 @@ def find_tcltk_header(tclver, tkver)
"/Tcl/include", "/Program Files/Tcl/include" "/Tcl/include", "/Program Files/Tcl/include"
].find_all{|dir| File.directory?(dir)} ].find_all{|dir| File.directory?(dir)}
unless TkLib_Config["space-on-tk-libpath"]
base_dir.delete_if{|path| path =~ / /}
end
if TclConfig_Info['TCL_INCLUDE_SPEC'] && if TclConfig_Info['TCL_INCLUDE_SPEC'] &&
have_tcl_h = try_cpp('tcl.h', TclConfig_Info['TCL_INCLUDE_SPEC']) have_tcl_h = try_cpp('tcl.h', TclConfig_Info['TCL_INCLUDE_SPEC'])
$INCFLAGS << " " << TclConfig_Info['TCL_INCLUDE_SPEC'] $INCFLAGS << " " << TclConfig_Info['TCL_INCLUDE_SPEC']
@ -1123,6 +1161,10 @@ if activeTcl = with_config("ActiveTcl", true)
end end
TkLib_Config["ActiveTcl"] = activeTcl TkLib_Config["ActiveTcl"] = activeTcl
# allow space chars on a libpath
TkLib_Config["space-on-tk-libpath"] =
enable_config("space-on-tk-libpath", ! is_win32?)
# enable Tcl/Tk stubs? # enable Tcl/Tk stubs?
=begin =begin
if TclConfig_Info['TCL_STUB_LIB_SPEC'] && TkConfig_Info['TK_STUB_LIB_SPEC'] && if TclConfig_Info['TCL_STUB_LIB_SPEC'] && TkConfig_Info['TK_STUB_LIB_SPEC'] &&

View file

@ -1178,7 +1178,10 @@ module TkCore
if WITH_RUBY_VM ### check Ruby 1.9 !!!!!!! if WITH_RUBY_VM ### check Ruby 1.9 !!!!!!!
# *** NEED TO FIX *** # *** NEED TO FIX ***
ip = TclTkIp.new(name, opts) ip = TclTkIp.new(name, opts)
if ip._invoke_without_enc('tk', 'windowingsystem') == 'aqua' && if RUBY_PLATFORM =~ /cygwin/
RUN_EVENTLOOP_ON_MAIN_THREAD = true
INTERP = ip
elsif ip._invoke_without_enc('tk', 'windowingsystem') == 'aqua' &&
(TclTkLib.get_version<=>[8,4,TclTkLib::RELEASE_TYPE::FINAL,6]) > 0 (TclTkLib.get_version<=>[8,4,TclTkLib::RELEASE_TYPE::FINAL,6]) > 0
# *** KNOWN BUG *** # *** KNOWN BUG ***
# Main event loop thread of TkAqua (> Tk8.4.9) must be the main # Main event loop thread of TkAqua (> Tk8.4.9) must be the main
@ -5636,7 +5639,7 @@ TkWidget = TkWindow
#Tk.freeze #Tk.freeze
module Tk module Tk
RELEASE_DATE = '2009-07-12'.freeze RELEASE_DATE = '2009-07-16'.freeze
autoload :AUTO_PATH, 'tk/variable' autoload :AUTO_PATH, 'tk/variable'
autoload :TCL_PACKAGE_PATH, 'tk/variable' autoload :TCL_PACKAGE_PATH, 'tk/variable'