From: Katsuyuki Komatsu Date: 2000-07-23T16:35:07+09:00 Subject: [ruby-dev:10359] Re: environment variables 小松です。 In the message of [ruby-dev:10355] Re: environment variables on 2000/7/21 02:05:08 nobu.nakada@nifty.ne.jp wrote: > mkconfig.rb のパッチがバグってたので訂正します。 これを、 http://www.geocities.co.jp/SiliconValley-Bay/4076/archive/win-20000719.patch.gz に足して試してみているのですが、いくつか。 1.win32/Makefileで参照しているのにwin32/mkexports.rbが 入っていませんでした。いれておいていただけるとうれしいです。 2.ext/extmk.rb.inの system "mkdir", target unless File.directory?(target) が失敗するので、 Dir.mkdir target unless File.directory?(target) に変更してみました。 3.以下のように相対パス指定でソースディレクトリを指定した場合に いくつか問題がありました。 cd ruby-1.5.4 mkdir mswin32 cd mswin32 ..\win32\configure .. nmake nmake test nmake DESTDIR=/usr/local install a) config.statusが .. にコピーされてしまいます。 また、RUBY_INSTALL_NAMEをrubymw-1.5に変更しているのに、 config.statusの対応する部分が変わってませんでした。 b) configure.batでextが作られませんでした。 c) ext/mswin32_extmk.rbが-Xextがあるため起動できませんでした。 d) rbconfig.rbを作成するときにsrcdirがうまく設定されませんでした。 config.statusからac_given_srcdirを外して、mkconfig.rbに $(srcdir)を渡して生成するようにしてみました。 4.ruby.defのLIBRARYの行をMakefileで生成するようにしてみました。 win32/mkexports.rbは[ruby-dev:10189]にEXPORTSの出力を足したもの ([ruby-dev:10200]) でLIBRARY行を生成しないものと仮定しています。 5.nmake testでrubymw-1.5.exeを起動するときに.exeなしだと、.5が 拡張子とみなされてしまい、起動に失敗してしまいました。 #{CONFIG['EXEEXT']}を追加してみました。 添付パッチは、win-20000719.patch.gzと[ruby-dev:10355]をあてたものに 対するものです。 ところで、2.でmkdirが失敗する件ですがこんな感じです。 C:\lang\ruby>ruby -v -e "p system 'mkdir', 'abc'" ruby 1.5.4 (2000-07-21) [i386-mswin32] false C:\lang\ruby> win32/win32.cのdo_spawn()で、"|| isInternalCmd(cmd)"がコメント アウトされているからですが、なぜだったんでしょう? このコードが導入されたのは、win32/win32.cになる前のmissing/nt.c時代の 1.1.1.2.2.1 (Thu Mar 26 9:09:41 1998) でした。 else if ((shell = getenv("COMSPEC")) != 0) { if (NtHasRedirection(cmd) /* || isInternalCmd(cmd) */) { ← これ do_comspec_shell: return spawnle(mode, shell, shell, "/c", cmd, (char*)0, environ); } } diff -ru1p ruby-1.5.4.nakada/ext/extmk.rb.in ruby-1.5.4/ext/extmk.rb.in --- ruby-1.5.4.nakada/ext/extmk.rb.in Sat Jul 22 21:30:19 2000 +++ ruby-1.5.4/ext/extmk.rb.in Sat Jul 22 22:53:07 2000 @@ -550,3 +550,3 @@ def extmake(target) begin - system "mkdir", target unless File.directory?(target) + Dir.mkdir target unless File.directory?(target) Dir.chdir target diff -ru1p ruby-1.5.4.nakada/ext/mswin32_extmk.rb ruby-1.5.4/ext/mswin32_extmk.rb --- ruby-1.5.4.nakada/ext/mswin32_extmk.rb Sat Jul 22 21:30:19 2000 +++ ruby-1.5.4/ext/mswin32_extmk.rb Sat Jul 22 22:53:07 2000 @@ -33,4 +33,7 @@ end +dir = ARGV[0] || '.' +dir = File.expand_path(ARGV[0]) +Dir.chdir('ext') begin - create_gsub_rb(ARGV[0] || '.') + create_gsub_rb(dir) load "mswin32_gsub.rb" diff -ru1p ruby-1.5.4.nakada/mkconfig.rb ruby-1.5.4/mkconfig.rb --- ruby-1.5.4.nakada/mkconfig.rb Sat Jul 22 21:30:19 2000 +++ ruby-1.5.4/mkconfig.rb Sat Jul 22 22:53:07 2000 @@ -5,2 +5,3 @@ require File.dirname($0)+"/lib/ftools" rbconfig_rb = ARGV[0] || 'rbconfig.rb' +srcdir = ARGV[1] File.makedirs(File.dirname(rbconfig_rb), true) @@ -25,2 +26,3 @@ v_fast = [] v_others = [] +has_srcdir = false has_version = false @@ -60,2 +62,3 @@ File.foreach "config.status" do |$_| v_fast << " CONFIG[\"srcdir\"] = \"" + File.expand_path($1) + "\"\n" + has_srcdir = true elsif /^ac_given_INSTALL=(.*)/ @@ -64,2 +67,6 @@ File.foreach "config.status" do |$_| # break if /^CEOF/ +end + +if not has_srcdir + v_fast << " CONFIG[\"srcdir\"] = \"" + File.expand_path(srcdir) + "\"\n" end diff -ru1p ruby-1.5.4.nakada/rubytest.rb ruby-1.5.4/rubytest.rb --- ruby-1.5.4.nakada/rubytest.rb Wed Jun 14 17:08:50 2000 +++ ruby-1.5.4/rubytest.rb Sat Jul 22 22:53:07 2000 @@ -34,3 +34,3 @@ error = '' -`./#{CONFIG["ruby_install_name"]} #{CONFIG["srcdir"]}/sample/test.rb`.each do |line| +`./#{CONFIG["ruby_install_name"]}#{CONFIG['EXEEXT']} #{CONFIG["srcdir"]}/sample/test.rb`.each do |line| if line =~ /^end of test/ diff -ru1p ruby-1.5.4.nakada/win32/Makefile ruby-1.5.4/win32/Makefile --- ruby-1.5.4.nakada/win32/Makefile Sat Jul 22 21:30:20 2000 +++ ruby-1.5.4/win32/Makefile Sat Jul 22 22:53:07 2000 @@ -94,3 +94,3 @@ ext/extmk.rb: $(srcdir)/ext/extmk.rb.in @echo Creating ext/extmk.rb - @.\miniruby$(EXEEXT) -Xext $(srcdir)/ext/mswin32_extmk.rb $(srcdir)/ext + @.\miniruby$(EXEEXT) $(srcdir)/ext/mswin32_extmk.rb $(srcdir)/ext @@ -124,3 +124,4 @@ rubymw.dll: $(LIBRUBY) ruby.def: $(LIBRUBY_A) miniruby$(EXEEXT) - dumpbin -symbols $(LIBRUBY_A) | .\miniruby$(EXEEXT) $(srcdir)/win32/mkexports.rb > $@ + echo LIBRARY $(LIBRUBY_SO) > $@ + dumpbin -symbols $(LIBRUBY_A) | .\miniruby$(EXEEXT) $(srcdir)/win32/mkexports.rb >> $@ @@ -149,3 +150,3 @@ test: miniruby$(EXEEXT) rbconfig.rb: miniruby$(EXEEXT) - @.\miniruby$(EXEEXT) $(srcdir)/mkconfig.rb rbconfig.rb + @.\miniruby$(EXEEXT) $(srcdir)/mkconfig.rb rbconfig.rb $(srcdir) diff -ru1p ruby-1.5.4.nakada/win32/config.status ruby-1.5.4/win32/config.status --- ruby-1.5.4.nakada/win32/config.status Sat Jul 22 21:30:20 2000 +++ ruby-1.5.4/win32/config.status Sat Jul 22 22:53:07 2000 @@ -1,2 +1 @@ -ac_given_srcdir=. s%@SHELL@%%g @@ -12,3 +11,3 @@ s%@exec_prefix@%${prefix}%g s%@prefix@%%g -s%@program_transform_name@%s,x,x,%g +s%@program_transform_name@%s,$$,mw-1.5,%g s%@bindir@%${exec_prefix}/bin%g @@ -54,3 +53,3 @@ s%@LIBRUBY_LDSHARED@%%g s%@LIBRUBY_DLDFLAGS@%%g -s%@RUBY_INSTALL_NAME@%ruby%g +s%@RUBY_INSTALL_NAME@%rubymw-1.5%g s%@LIBRUBY_A@%lib$(RUBY_INSTALL_NAME).lib%g diff -ru1p ruby-1.5.4.nakada/win32/configure.bat ruby-1.5.4/win32/configure.bat --- ruby-1.5.4.nakada/win32/configure.bat Sat Jul 22 21:30:20 2000 +++ ruby-1.5.4/win32/configure.bat Sat Jul 22 22:53:07 2000 @@ -6,5 +6,6 @@ if not exist %srcdir%\win32\win32.h goto copy %srcdir%\win32\config.h . -copy %srcdir%\win32\config.status .. +copy %srcdir%\win32\config.status . echo srcdir = %srcdir% > Makefile echo !INCLUDE $(srcdir)/win32/Makefile >> Makefile +if not exist ext\* mkdir ext -- 小松克行 / Katsuyuki Komatsu