Feature #2746
ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション
| Status: | Closed | Start date: | 02/15/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 0% |
|
| Category: | build | |||
| Target version: | 2.0.0 |
Description
現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。
この方法では make の度に拡張ライブラリのリストを指定しなければならず、
例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は
除外するライブラリ以外を列挙する必要があり不便です。
この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。
--with-exts オプションは以下のように使用します。
(1) すべての拡張ライブラリをビルドする事を明示する場合は、
何も指定しないか --with-exts を値なしで指定する。
(2) ビルドする拡張ライブラリのリストを = の後に指定する。
例: bigdecimal, fiber, openssl, socket, zlib のみをビルドする場合は
--with-exts=bigdecimal,fiber,openssl,socket,zlib
(3) ビルドしない拡張ライブラリのリストを =- の後に指定する。
例: dbm, gdbm, sdbm, tk,win32ole 以外をビルドする場合は
--with-exts=-dbm,gdbm,sdbm,tk,win32ole
(4) すべての拡張ライブラリをビルドしない場合は
--without-exts を指定する。
従来のように make に対して EXTS 変数を指定する方法は
上記 (1-3) の場合において有効になります。
diff --git a/Makefile.in b/Makefile.in
index a4848d8..b5afa68 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -96,6 +96,8 @@ THREAD_MODEL = @THREAD_MODEL@
PREP = @PREP@
ARCHFILE = @ARCHFILE@
SETUP =
+EXTS = @EXTS@
+EXTMK_EXTENSION = @EXTMK_EXTENSION@
EXTSTATIC = @EXTSTATIC@
SET_LC_MESSAGES = env LC_MESSAGES=C
diff --git a/common.mk b/common.mk
index 74f9ff7..b74eb65 100644
--- a/common.mk
+++ b/common.mk
@@ -103,7 +103,7 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
--extout="$(EXTOUT)" \
--mflags="$(MFLAGS)" \
--make-flags="$(MAKEFLAGS)"
-EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
+EXTMK_ARGS = $(SCRIPT_ARGS) $(EXTMK_EXTENSION) --extstatic $(EXTSTATIC) \
--make-flags="MINIRUBY='$(MINIRUBY)'" --
INSTRUBY = $(MINIRUBY) $(srcdir)/tool/rbinstall.rb
INSTRUBY_ARGS = $(SCRIPT_ARGS) \
diff --git a/configure.in b/configure.in
index d65f481..e3c7f23 100644
--- a/configure.in
+++ b/configure.in
@@ -1918,6 +1918,40 @@ AS_CASE(["$target_os"],
[nextstep* | openstep* | rhapsody* | darwin*], [
STRIP='strip -A -n'])
+EXTS=
+AC_SUBST(EXTS)dnl
+EXTMK_EXTENSION="--extension \$(EXTS)"
+AC_SUBST(EXTMK_EXTENSION)
+AC_ARG_WITH(exts,
+ AS_HELP_STRING([--with-exts=EXTS],
+ [build with external modules;
+ if you specify the name list leading minus sign,
+ the modules is not builded]),
+ [exts="$withval"], [unset exts])
+AC_MSG_CHECKING([builded extensions])
+if test x"$exts" = x -o x"$exts" = xno; then
+ EXTMK_EXTENSION=--no-extension
+ AC_MSG_RESULT([no])
+elif test x"$exts" = xyes; then
+ AC_MSG_RESULT([all])
+else
+ if echo "$exts" | grep -q ^\- 2>/dev/null; then
+ for name in `ls -1 ${srcdir}/ext`; do
+ if test -f ${srcdir}/ext/${name}/extconf.rb; then
+ echo $exts | grep -q $name 2>/dev/null || \
+ EXTS=${EXTS},${name}
+ fi
+ done
+ else
+ exts=`echo $exts | tr , ' '`
+ for name in $exts; do
+ test -f ${srcdir}/ext/${name}/extconf.rb && EXTS=${EXTS},${name}
+ done
+ fi
+ EXTS=`echo $EXTS | sed -e 's/^,//'`
+ AC_MSG_RESULT([$EXTS])
+fi
+
EXTSTATIC=
AC_SUBST(EXTSTATIC)dnl
AC_ARG_WITH(static-linked-ext,
History
Updated by matz (Yukihiro Matsumoto) over 2 years ago
まつもと ゆきひろです In message "Re: [ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" on Mon, 15 Feb 2010 13:36:10 +0900, Kenta Murata <redmine@ruby-lang.org> writes: |現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 |この方法では make の度に拡張ライブラリのリストを指定しなければならず、 |例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は |除外するライブラリ以外を列挙する必要があり不便です。 | |この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 いいんじゃないでしょうか。村田さんってまだコミッターじゃない んでしたっけ?
Updated by mrkn (Kenta Murata) over 2 years ago
むらたです。 On 2010/02/15, at 13:49, Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" > on Mon, 15 Feb 2010 13:36:10 +0900, Kenta Murata <redmine@ruby-lang.org> writes: > > |現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 > |この方法では make の度に拡張ライブラリのリストを指定しなければならず、 > |例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は > |除外するライブラリ以外を列挙する必要があり不便です。 > | > |この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 > > いいんじゃないでしょうか。村田さんってまだコミッターじゃない > んでしたっけ? ありがとうございます。まだコミッターではありませんが、 コミット権を頂ければマージしてコミットさせて頂きます。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/
Updated by mrkn (Kenta Murata) over 2 years ago
むらたです。 On 2010/02/15, at 13:59, Kenta Murata wrote: > むらたです。 > > On 2010/02/15, at 13:49, Yukihiro Matsumoto wrote: > >> まつもと ゆきひろです >> >> In message "Re: [ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" >> on Mon, 15 Feb 2010 13:36:10 +0900, Kenta Murata <redmine@ruby-lang.org> writes: >> >> |現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 >> |この方法では make の度に拡張ライブラリのリストを指定しなければならず、 >> |例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は >> |除外するライブラリ以外を列挙する必要があり不便です。 >> | >> |この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 >> >> いいんじゃないでしょうか。村田さんってまだコミッターじゃない >> んでしたっけ? > > ありがとうございます。まだコミッターではありませんが、 > コミット権を頂ければマージしてコミットさせて頂きます。 現在メンテナが不在になっている bigdecimal のメンテナも やらせて頂けないでしょうか。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/
Updated by matz (Yukihiro Matsumoto) over 2 years ago
まつもと ゆきひろです In message "Re: [ruby-dev:40420] Re: [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" on Mon, 15 Feb 2010 13:59:36 +0900, Kenta Murata <muraken@gmail.com> writes: |ありがとうございます。まだコミッターではありませんが、 |コミット権を頂ければマージしてコミットさせて頂きます。 cvs-admin@ruby-lang.org に * 希望するアカウント名 * ssh2公開鍵 をgpgで署名して送ってください。bigdecimalの修正もお願いしま すね。
Updated by mrkn (Kenta Murata) over 2 years ago
むらたです。 On 2010/02/15, at 14:29, Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:40420] Re: [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" > on Mon, 15 Feb 2010 13:59:36 +0900, Kenta Murata <muraken@gmail.com> writes: > > |ありがとうございます。まだコミッターではありませんが、 > |コミット権を頂ければマージしてコミットさせて頂きます。 > > cvs-admin@ruby-lang.org に > > * 希望するアカウント名 > * ssh2公開鍵 > > をgpgで署名して送ってください。bigdecimalの修正もお願いしま > すね。 > 送りました。よろしくお願いします。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/
Updated by usa (Usaku NAKAMURA) over 2 years ago
こんにちは、なかむら(う)です。 In message "[ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" on Feb.15,2010 13:36:10, <redmine@ruby-lang.org> wrote: > 現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 > この方法では make の度に拡張ライブラリのリストを指定しなければならず、 > 例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は > 除外するライブラリ以外を列挙する必要があり不便です。 > > この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 既に--with-ext(または--with-extensions)というものがあるのです が。 ext/extmk.rbあたりを参照してください。 それでは。 -- U.Nakamura <usa@garbagecollect.jp>
Updated by mrkn (Kenta Murata) over 2 years ago
むらたです。 On 2010/02/15, at 21:37, U.Nakamura wrote: > こんにちは、なかむら(う)です。 > > In message "[ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" > on Feb.15,2010 13:36:10, <redmine@ruby-lang.org> wrote: >> 現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 >> この方法では make の度に拡張ライブラリのリストを指定しなければならず、 >> 例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は >> 除外するライブラリ以外を列挙する必要があり不便です。 >> >> この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 > > 既に--with-ext(または--with-extensions)というものがあるのです > が。 > ext/extmk.rbあたりを参照してください。 extmk.rb に対して --with-ext または --without-ext を EXTS 変数経由で渡せるなら configure.in で AC_SUBST(EXTS) するだけで良く、--with-exts を導入するまでもないですね。 しかも extmk.rb の機能を直接使えば拡張ライブラリ名にワイルドカードが使えるんですね。 以下のパッチで configure EXTS=--without-ext=*dbm,tk,win32api ができるようになります。 これで問題ないようでしたら、アカウント登録され次第マージしてコミットします。 diff --git a/Makefile.in b/Makefile.in index a4848d8..14071f8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -96,6 +96,7 @@ THREAD_MODEL = @THREAD_MODEL@ PREP = @PREP@ ARCHFILE = @ARCHFILE@ SETUP = +EXTS = @EXTS@ EXTSTATIC = @EXTSTATIC@ SET_LC_MESSAGES = env LC_MESSAGES=C diff --git a/configure.in b/configure.in index d65f481..667c9b4 100644 --- a/configure.in +++ b/configure.in @@ -1918,6 +1918,7 @@ AS_CASE(["$target_os"], [nextstep* | openstep* | rhapsody* | darwin*], [ STRIP='strip -A -n']) +AC_SUBST(EXTS)dnl EXTSTATIC= AC_SUBST(EXTSTATIC)dnl AC_ARG_WITH(static-linked-ext, -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/
Updated by mrkn (Kenta Murata) over 2 years ago
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 むらたです。 On 2010/02/16, at 15:48, Akinori MUSHA wrote: > At Tue, 16 Feb 2010 12:05:49 +0900, > Kenta Murata wrote: >>> こんにちは、なかむら(う)です。 >>> >>> In message "[ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" >>> on Feb.15,2010 13:36:10, <redmine@ruby-lang.org> wrote: >>>> 現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 >>>> この方法では make の度に拡張ライブラリのリストを指定しなければならず、 >>>> 例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は >>>> 除外するライブラリ以外を列挙する必要があり不便です。 >>>> >>>> この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 >>> >>> 既に--with-ext(または--with-extensions)というものがあるのです >>> が。 >>> ext/extmk.rbあたりを参照してください。 >> >> extmk.rb に対して --with-ext または --without-ext を EXTS 変数経由で渡せるなら >> configure.in で AC_SUBST(EXTS) するだけで良く、--with-exts を導入するまでもないですね。 >> しかも extmk.rb の機能を直接使えば拡張ライブラリ名にワイルドカードが使えるんですね。 >> >> 以下のパッチで configure EXTS=--without-ext=*dbm,tk,win32api ができるようになります。 >> これで問題ないようでしたら、アカウント登録され次第マージしてコミットします。 > > --with-ext=... は今もそのまま configure の引数に書けば渡るはず。 > 問題は --without-ext=... が configure の文法上エラーになってしまう > ので渡せないことでしょうか。 > > よって、たとえば --with-out-ext に改名すれば解決しそうです。 > > Index: extmk.rb > =================================================================== > --- extmk.rb (revision 26649) > +++ extmk.rb (working copy) > @@ -396,7 +396,7 @@ end unless $extstatic > > ext_prefix = "#{$top_srcdir}/ext" > exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t} > -withes, withouts = %w[--with --without].collect {|w| > +withes, withouts = %w[--with --with-out].collect {|w| > if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any? > nil > elsif (w = w.grep(String)).empty? > > > あるいは、互換性が重要ならこうするか。 > > Index: extmk.rb > =================================================================== > --- extmk.rb (revision 26649) > +++ extmk.rb (working copy) > @@ -396,7 +396,7 @@ end unless $extstatic > > ext_prefix = "#{$top_srcdir}/ext" > exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t} > -withes, withouts = %w[--with --without].collect {|w| > +withes, *withouts = %w[--with --without --with-out].collect {|w| > if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any? > nil > elsif (w = w.grep(String)).empty? > @@ -405,6 +405,7 @@ withes, withouts = %w[--with --without]. > proc {|c1| w.collect {|o| o.split(/,/)}.flatten.any?(&c1)} > end > } > +withouts = withouts.compact.first > if withes > withouts ||= proc {true} > else without を with-out に分離する方法は思いつきませんでした。 以下のように --with-ext と --with-out-ext を定義して mkconfig.rb で with-out を without へ変換すると、 configure で警告も出ず、extmk.rb を変更する必要もなくなります。 diff --git a/configure.in b/configure.in index 513898d..4542bda 100644 - --- a/configure.in +++ b/configure.in @@ -1918,6 +1918,12 @@ AS_CASE(["$target_os"], [nextstep* | openstep* | rhapsody* | darwin*], [ STRIP='strip -A -n']) +AC_ARG_WITH(ext, + AC_HELP_STRING([--with-ext=EXTS], + [pass to --with-ext option of extmk.rb])) +AC_ARG_WITH(out-ext, + AC_HELP_STRING([--with-out-ext=EXTS], + [pass to --without-ext option of extmk.rb])) EXTSTATIC= AC_SUBST(EXTSTATIC)dnl AC_ARG_WITH(static-linked-ext, diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb index df3c35f..ac24821 100755 - --- a/tool/mkconfig.rb +++ b/tool/mkconfig.rb @@ -111,7 +111,10 @@ File.foreach "config.status" do |line| end end end - - val.gsub!(/ +(?!-)/, "=") if name == "configure_args" && /mswin32/ =~ RUBY_PLATFORM + if name == "configure_args" + val.gsub!(/ +(?!-)/, "=") if /mswin32/ =~ RUBY_PLATFORM + val.gsub!(/--with-out-ext/, "--without-ext") + end val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump if /^prefix$/ =~ name val = "(TOPDIR || DESTDIR + #{val})" - -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/ -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.14 (Darwin) iF4EAREIAAYFAkt8sKAACgkQ8hOWb+nrC8yM2AD9Gl1dZF9aTzL6twwC2lspYGSg AVouWvosi9dCa6oz1M8A/1JG3ul3LdlbC5zPQqmc9QBAGjcnx+ePfI1EHTzjRZjS =teb9 -----END PGP SIGNATURE-----
Updated by mrkn (Kenta Murata) over 2 years ago
むらたです。 On 2010/02/18, at 12:14, Kenta Murata wrote: > without を with-out に分離する方法は思いつきませんでした。 > 以下のように --with-ext と --with-out-ext を定義して > mkconfig.rb で with-out を without へ変換すると、 > configure で警告も出ず、extmk.rb を変更する必要もなくなります。 これでコミットしました。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/
Updated by mrkn (Kenta Murata) about 2 years ago
- Status changed from Open to Closed