* [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).