ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:45650] space in COUTFLAG
@ 2012-05-18  3:26 Takahiro Kambe
  2012-05-18  3:46 ` [ruby-dev:45651] " U.Nakamura
  0 siblings, 1 reply; 6+ messages in thread
From: Takahiro Kambe @ 2012-05-18  3:26 UTC (permalink / raw
  To: ruby developers list

こんにちは。

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 仕事場 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-dev:45651] Re: space in COUTFLAG
  2012-05-18  3:26 [ruby-dev:45650] space in COUTFLAG Takahiro Kambe
@ 2012-05-18  3:46 ` U.Nakamura
  2012-05-30 13:17   ` [ruby-dev:45692] " Takahiro Kambe
  0 siblings, 1 reply; 6+ messages in thread
From: U.Nakamura @ 2012-05-18  3:46 UTC (permalink / raw
  To: ruby developers list

こんにちは、なかむら(う)です。

In message "[ruby-dev:45650] space in COUTFLAG"
    on May.18,2012 12:26:53, <taca@back-street•net> wrote:
> A. 元々、$(COUTFLAG)と$@の間にスペースを入れてはいけない理由はない。
> B. $(COUTFLAGS)の後ろにスペースがあると思っていた。
> 
> pkgsrcが対象とするプラットフォームでは、A.に基づいても良さそうに思えま
> すが、少し気になったのでメールにまとめてみました。

結論としては B なので、ちゃんと末尾の空白を伝播させないバグで
す。


それでは。
-- 
U.Nakamura <usa@garbagecollect•jp>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-dev:45692] Re: space in COUTFLAG
  2012-05-18  3:46 ` [ruby-dev:45651] " U.Nakamura
@ 2012-05-30 13:17   ` Takahiro Kambe
  2012-05-31  0:25     ` [ruby-dev:45694] " U.Nakamura
  0 siblings, 1 reply; 6+ messages in thread
From: Takahiro Kambe @ 2012-05-30 13:17 UTC (permalink / raw
  To: ruby developers list

In message <20120518034620.3D1066EA3D@zanzibar•garbagecollect.jp>
	on Fri, 18 May 2012 12:46:20 +0900,
	"U.Nakamura" <usa@garbagecollect•jp> wrote:
> In message "[ruby-dev:45650] space in COUTFLAG"
>     on May.18,2012 12:26:53, <taca@back-street•net> wrote:
>> A. 元々、$(COUTFLAG)と$@の間にスペースを入れてはいけない理由はない。
>> B. $(COUTFLAGS)の後ろにスペースがあると思っていた。
>> 
>> pkgsrcが対象とするプラットフォームでは、A.に基づいても良さそうに思えま
>> すが、少し気になったのでメールにまとめてみました。
> 
> 結論としては B なので、ちゃんと末尾の空白を伝播させないバグで
> す。
で、どう修正できますかね?  Makefileのマクロに展開した時点で空白を維持
することはできないと思います。

現実問題として Cコンパイラーの -o オプションと、出力するファイルの間に
スペースがあって困る環境と言うのはあるのでしょうか?

-- 
神戸 隆博 / Takahiro Kambe 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-dev:45694] Re: space in COUTFLAG
  2012-05-30 13:17   ` [ruby-dev:45692] " Takahiro Kambe
@ 2012-05-31  0:25     ` U.Nakamura
  2012-05-31  0:34       ` [ruby-dev:45695] " U.Nakamura
  2012-05-31  0:39       ` [ruby-dev:45696] " Takahiro Kambe
  0 siblings, 2 replies; 6+ messages in thread
From: U.Nakamura @ 2012-05-31  0:25 UTC (permalink / raw
  To: ruby developers list

こんにちは、なかむら(う)です。

In message "[ruby-dev:45692] Re: space in COUTFLAG"
    on May.30,2012 22:17:49, <taca@back-street•net> wrote:
> で、どう修正できますかね?  Makefileのマクロに展開した時点で空白を維持
> することはできないと思います。

元々Makefile.inでは対応されてますよ。
というわけで、同じ方針でmkmf.rbも対応するということで、trunk
では既になかださんによって修正済みです。(r35698)


他の人ならともかく、神戸さんレベルならチケット作って報告して
よ、と思わないでもないですが(そしたらそこに直したとかなんとか
情報が残るので)、本件は私の方で1.9.3へのバックポートチケット
にしておきます。


それでは。
-- 
U.Nakamura <usa@garbagecollect•jp>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-dev:45695] Re: space in COUTFLAG
  2012-05-31  0:25     ` [ruby-dev:45694] " U.Nakamura
@ 2012-05-31  0:34       ` U.Nakamura
  2012-05-31  0:39       ` [ruby-dev:45696] " Takahiro Kambe
  1 sibling, 0 replies; 6+ messages in thread
From: U.Nakamura @ 2012-05-31  0:34 UTC (permalink / raw
  To: ruby developers list

こんにちは、なかむら(う)です。

In message "[ruby-dev:45694] Re: space in COUTFLAG"
    on May.31,2012 09:25:31, <usa@garbagecollect•jp> wrote:
>                  本件は私の方で1.9.3へのバックポートチケット
> にしておきます。

と思ったらもうされてました。
ので本件close。


それでは。
-- 
U.Nakamura <usa@garbagecollect•jp>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-dev:45696] Re: space in COUTFLAG
  2012-05-31  0:25     ` [ruby-dev:45694] " U.Nakamura
  2012-05-31  0:34       ` [ruby-dev:45695] " U.Nakamura
@ 2012-05-31  0:39       ` Takahiro Kambe
  1 sibling, 0 replies; 6+ messages in thread
From: Takahiro Kambe @ 2012-05-31  0:39 UTC (permalink / raw
  To: ruby developers list

おはようございます。

In message <20120531002530.9AC6E6EA40@zanzibar•garbagecollect.jp>
	on Thu, 31 May 2012 09:25:31 +0900,
	"U.Nakamura" <usa@garbagecollect•jp> wrote:
> In message "[ruby-dev:45692] Re: space in COUTFLAG"
>     on May.30,2012 22:17:49, <taca@back-street•net> wrote:
>> で、どう修正できますかね?  Makefileのマクロに展開した時点で空白を維持
>> することはできないと思います。
> 
> 元々Makefile.inでは対応されてますよ。
> というわけで、同じ方針でmkmf.rbも対応するということで、trunk
> では既になかださんによって修正済みです。(r35698)
あー、ありがとうございます。

> 他の人ならともかく、神戸さんレベルならチケット作って報告して
> よ、と思わないでもないですが(そしたらそこに直したとかなんとか
> 情報が残るので)、本件は私の方で1.9.3へのバックポートチケット
> にしておきます。
申し訳ないです、そこまでの余裕なかったのと、直接問題を確認できる環境も
ありませんでしたので。

-- 
神戸 隆博 (かんべ たかひろ)		at 仕事場 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-05-31  0:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-18  3:26 [ruby-dev:45650] space in COUTFLAG Takahiro Kambe
2012-05-18  3:46 ` [ruby-dev:45651] " U.Nakamura
2012-05-30 13:17   ` [ruby-dev:45692] " Takahiro Kambe
2012-05-31  0:25     ` [ruby-dev:45694] " U.Nakamura
2012-05-31  0:34       ` [ruby-dev:45695] " U.Nakamura
2012-05-31  0:39       ` [ruby-dev:45696] " Takahiro Kambe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).