[ruby-dev:26070] Re: bcc32、win32 での install-doc の動作
From:
"H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date:
2005-04-15 11:09:34 UTC
List:
ruby-dev #26070
山本です。
混乱してきたので整理しておきます。
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 <ctype.h>
+#include <stdio.h>
+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) <<prefix.c > nul
+#include <ctype.h>
+#include <stdio.h>
+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