From: "H.Yamamoto" Date: 2005-04-15T20:09:34+09:00 Subject: [ruby-dev:26070] Re: bcc32、win32 での install-doc の動作 山本です。 混乱してきたので整理しておきます。 1. スラッシュの重複自体は Dir[] は処理できる。 E:\ruby-cvs\bcc32>miniruby -e "p Dir['e:///temp/lib']" ["e:///temp/lib"] 2. ただし、"//lib" となってしまうと UNC として扱われるのでまずい >Index: extmk.rb >=================================================================== >RCS file: /src/ruby/ext/extmk.rb,v >retrieving revision 1.75 >diff -u -w -b -p -r1.75 extmk.rb >--- extmk.rb 8 Apr 2005 11:18:01 -0000 1.75 >+++ extmk.rb 15 Apr 2005 06:09:47 -0000 >@@ -267,7 +267,6 @@ def parse_args() > > $continue = $mflags.set?(?k) > if !$destdir.to_s.empty? >- $destdir = File.expand_path($destdir) > $mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}" > end > if $extout このパッチだと、make DESTDIR=/ install とすると UNC になってしまうので 取り下げます。 # しかしややこしい・・・ 代わりのパッチです。これで問題がなければいいんですが。 Index: instruby.rb =================================================================== RCS file: /src/ruby/instruby.rb,v retrieving revision 1.65 diff -u -w -b -p -r1.65 instruby.rb --- instruby.rb 3 Mar 2005 09:44:31 -0000 1.65 +++ instruby.rb 15 Apr 2005 10:16:29 -0000 @@ -22,7 +22,7 @@ def parse_args() $install = [] opt = OptionParser.new opt.on('-n') {$dryrun = true} - opt.on('--dest-dir=DIR') {|dir| $destdir = dir} + opt.on('--dest-dir=DIR') {|dir| $destdir = File.expand_path(dir)} opt.on('--make=COMMAND') {|make| $make = make} opt.on('--mantype=MAN') {|man| $mantype = man} opt.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v| 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 15 Apr 2005 10:58:09 -0000 @@ -101,8 +101,12 @@ datadir = $(prefix)/share EXTOUT = .ext !endif !ifndef RIDATADIR +!if "$(DESTDIR)" == "/" +RIDATADIR = $(datadir)/ri/$(MAJOR).$(MINOR)/system +!else RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system !endif +!endif !ifndef TESTUI TESTUI = console !endif @@ -428,7 +432,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 'FileUtils.rm_f(Dir[File.join(File.expand_path("$(DESTDIR)"),Config::CONFIG["archdir"],"**","*.tds")]) 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 15 Apr 2005 09:23:22 -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