[#45637] [ruby-trunk - Feature #6440][Open] 引数にIOを渡した場合のMarshal.loadにバッファを持たせたい — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

14 messages 2012/05/16

[#45670] [ruby-trunk - Bug #6479][Open] ipaddr.rbの受け付ける書式が、プラットフォームによって異なる — "kachick (Kenichi Kamiya)" <kachick1+ruby@...>

9 messages 2012/05/22

[ruby-dev:45698] [ruby-trunk - Bug #6519][Closed] space in COUTFLAG

From: "naruse (Yui NARUSE)" <naruse@...>
Date: 2012-05-31 14:51:17 UTC
List: ruby-dev #45698
Issue #6519 has been updated by naruse (Yui NARUSE).

Status changed from Assigned to Closed

redmine側のbugfixをしていたり系なのでclose
----------------------------------------
Bug #6519:  space in COUTFLAG
https://bugs.ruby-lang.org/issues/6519#change-26927

Author: taca (Takahiro Kambe)
Status: Closed
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category: 
Target version: 
ruby -v: -


 こんにちは。
 
 mkmf.rbで作成するMakefileには COUTFLAG や OUTFLAG といったmakeの変数が
 定義されます。その内容が意図した結果となっていないのではないかと思いま
 した。殆どの環境で実害は出ていないと思います。
 
 
 きっかけは4月の終わりに、Solaris 9上のpkgsrcでruby193-baseのコンパイル
 がエラーとなるという報告がありました。報告された方に答えつつ確認を求め
 た事項が少々的外れだったのですが、症状としてはmakeから、以下を実行して
 エラーになるという内容です。
 
 	cc ...(いっぱいオプション) -fPIC -obug.o -c bug.c
 
 ここで、ポイントは -o オプションと出力先のファイル名の間にスペースがな
 いことです。Solaris 9のas(1)は、ここにスペースがないとエラーとなるよう
 です。(Solaris 10では問題とはならないことは確認しています。)
 
 上記のコマンドが来た元を追うと、
 
 1. 生成されたMakefile(例えば、ext/-test-/bug-3571/Makefile)では、
 
 .c.o:
 	$(ECHO) compiling $(<)
 	$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<
 
    といったルールがあって、$(COUTFLAG)と$@の間にスペースはありません。
    (スペースがあってはならない環境もあるのでしょうか?)
 
 2. 同じMakefileで COUTFLAGS は、
 
 COUTFLAG = -o 
 
    と設定されています。
 
 3. これらのMakefileを生成する元のlib/mkmf.rbで1.については、
 
 COMPILE_C = config_string('COMPILE_C') || '$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<'
 
    というのが元となっていて、まぁ、これはそのまんまです。
 
 4. lib/mkmf.rbで2.については、
 
 COUTFLAG = #{COUTFLAG}
 
    という文字列中で展開している行が存在していて、Rubyの定数COUTFLAGが
    元で、さらにこの定数はlib/mkmf.rbの先の方で、
 
 COUTFLAG = CONFIG['COUTFLAG']
 
    として定義しています。
 
 5. CONFIG['COUTFLAG']はrbconfig.rbが元ですが、これはconfigure時に由来
    していて、config.logで確認すると、
 
 COUTFLAG='-o '
 
    となっています。
 
 
 と、いうわけで改めて2.の部分を見ると、COUTFLAG に代入している行で -o
 の後ろにスペースが1つあるのですが、Makefileの世界ではこのスペースは捨
 てられてしまいます。
 
 話が長くなりましたが、1.や3.のルールでは$(COUTFLAG)と$@の間にはスペー
 スが入ると期待していたのか、全然気にしていないのか、どうなんだろうと思っ
 た次第です。
 
 A. 元々、$(COUTFLAG)と$@の間にスペースを入れてはいけない理由はない。
 B. $(COUTFLAGS)の後ろにスペースがあると思っていた。
 
 pkgsrcが対象とするプラットフォームでは、A.に基づいても良さそうに思えま
 すが、少し気になったのでメールにまとめてみました。
 
 -- 
 神戸 隆博 (かんべ たかひろ)		at 仕事場


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next