From: "H.Yamamoto" Date: 2005-04-14T19:44:59+09:00 Subject: [ruby-dev:26059] Re: bcc32、win32 での install-doc の動作 山本です。 コミットしてから気づいたんですが、 DESTDIR => e:/temp のとき File.join("e:/temp", "/lib") #=> "e:/temp//lib" となるために Dir[] が働いてませんでした。仕方ないので重複するスラッシュを 削除するようにしました。 # でも、これって File.join の仕様としてはどうなんでしょう。 また、DESTDIR=e: だと相対パスとして扱われてエラーになるので、デフォルトの DESTDIR を e:/ のようにスラッシュ付きにしました。こうすると e://temp のように スラッシュが重複してしまうのですが、動いているようなので良しとしました。 cp -r ./.ext/. E:/ruby-cvs/bcc32/temp/lib/ruby/1.9 ../ruby/lib/fileutils.rb:479:in `mkdir': No such file or directory (Errno::ENOEN T) - E:/ruby-cvs/bcc32/temp/lib/ruby/1.9 from ../ruby/lib/fileutils.rb:479:in `_c opy_entry' from ../ruby/lib/fileutils.rb:460:in `copy_entry' from ../ruby/lib/fileutils.rb:459:in `preserve' from ../ruby/lib/fileutils.rb:459:in `copy_entry' from ../ruby/lib/fileutils.rb:385:in `cp_r' from ../ruby/lib/fileutils.rb:383:in `fu_traverse' from ../ruby/lib/fileutils.rb:383:in `cp_r' from ../ruby/lib/fileutils.rb:381:in `fu_each_src_dest' from ../ruby/lib/fileutils.rb:947:in `fu_each_src_dest0' from ../ruby/lib/fileutils.rb:947:in `fu_each_src_dest' from ../ruby/lib/fileutils.rb:381:in `cp_r' from ../ruby//ext/extmk.rb:365 ** error 1 ** deleting do-install-ext いまひとつ自信が持てないので、コミットは明日にします。 Index: bcc32/Makefile.sub =================================================================== RCS file: /src/ruby/bcc32/Makefile.sub,v retrieving revision 1.71 diff -u -w -b -p -r1.71 Makefile.sub --- bcc32/Makefile.sub 3 Mar 2005 09:44:32 -0000 1.71 +++ bcc32/Makefile.sub 14 Apr 2005 10:00:04 -0000 @@ -428,7 +428,7 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_ post-install-ext:: $(MINIRUBY) -I$(srcdir)lib -rrbconfig -rfileutils \ - -e 'FileUtils.rm_f(Dir[File.join(Config::CONFIG["archdir"],"**","*.tds")])' + -e 'puts(Dir[File.join(ARGV+[Config::CONFIG["archdir"],"**","*.tds"]).gsub(/\/\/+/, "/")])' "$(DESTDIR)" clean-local:: @$(RM) ext\extinit.c ext\extinit.$(OBJEXT) *.tds *.il? $(RUBY_SO_NAME).lib Index: bcc32/setup.mak =================================================================== RCS file: /src/ruby/bcc32/setup.mak,v retrieving revision 1.13 diff -u -w -b -p -r1.13 setup.mak --- bcc32/setup.mak 16 Nov 2004 08:37:59 -0000 1.13 +++ bcc32/setup.mak 14 Apr 2005 10:20:12 -0000 @@ -30,17 +30,41 @@ i586-$(OS): -prologue- -i586- -epilogue- i686-$(OS): -prologue- -i686- -epilogue- alpha-$(OS): -prologue- -alpha- -epilogue- --prologue-: nul +-prologue-: -basic-vars- -prefix- -version- + +-basic-vars-: nul @echo Creating $(MAKEFILE) @type > $(MAKEFILE) &&| \#\#\# Makefile for ruby $(OS) \#\#\# srcdir = $(srcdir:\=/) -prefix = $(prefix:\=/) EXTSTATIC = $(EXTSTATIC) !if defined(RDOCTARGET) RDOCTARGET = $(RDOCTARGET) !endif | + +-prefix-: nul + @type >prefix.c &&| +#include +#include +int main(int argc, char **argv) +{ + char *prefix = argv[1]; + if (isalpha(prefix[0]) && prefix[1] == ':') { + printf("!ifndef DESTDIR\n"); + printf("DESTDIR = %c:/\n", prefix[0]); + printf("!endif\n"); + prefix += 2; + } + printf("prefix = %s\n", prefix); + return 0; +} +| + @$(CC) prefix.c > nul + @.\prefix "$(prefix:\=/)" >> $(MAKEFILE) + @del prefix.* + +-version-: nul @cpp32 -I$(srcdir) -P- -DRUBY_EXTERN="//" -o$(MAKEFILE) > nul &&| \#include "version.h" MAJOR = RUBY_VERSION_MAJOR Index: win32/setup.mak =================================================================== RCS file: /src/ruby/win32/setup.mak,v retrieving revision 1.22 diff -u -w -b -p -r1.22 setup.mak --- win32/setup.mak 13 Apr 2005 10:25:41 -0000 1.22 +++ win32/setup.mak 14 Apr 2005 10:20:29 -0000 @@ -32,18 +32,37 @@ i586-$(OS): -prologue- -i586- -epilogue- i686-$(OS): -prologue- -i686- -epilogue- alpha-$(OS): -prologue- -alpha- -epilogue- --prologue-: -basic-vars- -system-vars- -version- +-prologue-: -basic-vars- -prefix- -system-vars- -version- -basic-vars-: nul @type << > $(MAKEFILE) ### Makefile for ruby $(OS) ### srcdir = $(srcdir:\=/) -prefix = $(prefix:\=/) EXTSTATIC = $(EXTSTATIC) !if defined(RDOCTARGET) RDOCTARGET = $(RDOCTARGET) !endif << + +-prefix-: nul + @$(CC) < nul +#include +#include +int main(int argc, char **argv) +{ + char *prefix = argv[1]; + if (isalpha(prefix[0]) && prefix[1] == ':') { + printf("!ifndef DESTDIR\n"); + printf("DESTDIR = %c:/\n", prefix[0]); + printf("!endif\n"); + prefix += 2; + } + printf("prefix = %s\n", prefix); + return 0; +} +<< + @.\prefix "$(prefix:\=/)" >> $(MAKEFILE) + @del prefix.* -system-vars-: -osname- -runtime- Index: wince/setup.mak =================================================================== RCS file: /src/ruby/wince/setup.mak,v retrieving revision 1.9 diff -u -w -b -p -r1.9 setup.mak --- wince/setup.mak 2 Apr 2005 13:35:02 -0000 1.9 +++ wince/setup.mak 14 Apr 2005 10:21:02 -0000 @@ -1,5 +1,9 @@ # -*- makefile -*- +!ifndef RUBY +RUBY = ruby +!endif + !if "$(srcdir)" != "" WIN32DIR = $(srcdir)/win32 !elseif "$(WIN32DIR)" == "win32" @@ -46,16 +50,28 @@ armv4-.net41-wince: -prologue- -armv4- - armv4t-.net41-wince: -prologue- -armv4t- -.net41- -epilogue- armv4i-sig3-wince: -prologue- -armv4i- -sig3- -epilogue- --prologue-: nul +-prologue-: -basic-vars- -prefix- -version- + +-basic-vars-: nul @type << > $(MAKEFILE) ### Makefile for ruby $(OS) ### srcdir = $(srcdir:\=/) -prefix = $(prefix:\=/) EXTSTATIC = $(EXTSTATIC) !if defined(RDOCTARGET) RDOCTARGET = $(RDOCTARGET) !endif << + +-prefix-: nul + @$(RUBY) -e 'prefix=ARGV[0]' \ + -e 'if prefix.sub!(/\A\w:/, "")' \ + -e ' puts "!ifndef DESTDIR"' \ + -e ' puts "DESTDIR = #{$$&}/"' \ + -e ' puts "!endif"' \ + -e 'end' \ + -e 'puts "prefix = #{prefix}"' "$(prefix:\=/)" >> $(MAKEFILE) + +-version-: nul @$(CPP) -I$(srcdir) -DRUBY_EXTERN="//" <<"Creating $(MAKEFILE)" >> $(MAKEFILE) #include "version.h" MAJOR = RUBY_VERSION_MAJOR