From: IWATSUKI Hiroyuki Date: 2004-12-16T04:52:23+09:00 Subject: [ruby-dev:25215] Re: --disable-shared --with-static-linked-ext problems 岩月と申します。古い話の上に自己フォローで失礼します。 IWATSUKI Hiroyuki wrote: > ただ、このままですと、一部のライブラリ(ext/dlなど?)がファイルを > $(RUBYARCHDIR)へインストールしようとして、$(RUBYARCHDIR)が存在しないため > に$(RUBYARCHDIR)というファイルを作成してしまい、今度はmake installで失敗 > します。$(RUBYARCHDIR)はsoファイルを作成する際にのみmkdirされるようです > が、そういうものでしょうか? 遅くなりましたが、なんとか対処できました。 * lib/mkmf.rb (create_makefile): need to mkdir $(RUBYARCHDIR) for statically linked extentions. Index: mkmf.rb =================================================================== RCS file: /home/don/ruby/cvs/src/ruby/lib/mkmf.rb,v retrieving revision 1.198 diff -u -p -u -p -r1.198 mkmf.rb --- mkmf.rb 8 Dec 2004 11:14:53 -0000 1.198 +++ mkmf.rb 15 Dec 2004 11:37:47 -0000 @@ -920,7 +920,7 @@ static: $(STATIC_LIB)#{$extout ? " inst mfile.print CLEANINGS dirs = [] mfile.print "install: install-so install-rb\n\n" - dirs << (dir = "$(RUBYARCHDIR)") + dir = "$(RUBYARCHDIR)" mfile.print("install-so: #{dir}\n") if target f = "$ 上記の元のコードですと、$INSTALLFILESに$(RUBYARCHDIR)へインストールした いファイルを登録しても、「install-rb: $(RUBYARCHDIR)」という行がMakefile に作られないため(install-so: $(RUBYARCHDIR)が既にあるから)、 $(RUBYARCHDIR)が作成されないままファイルがコピーされていました。具体的に はext/dl以下のdl.hなどが$(RUBYARCHDIR)というファイル名でコピーされていま した。その為makeは成功してもmake installが失敗します。 上記差分を適用することでMakefileに「install-rb: $(RUBYARCHDIR)」という行 が追加され、必要に応じてmkdirされるようになります。 # うまく説明できていないような気がします……。 よろしければ取り入れていただけると嬉しいです。 -- Hiroyuki Iwatsuki