Ruby/Python の extconf.rb は現在 Python 1.5 決め打ちになって
いますが、任意のバージョン、もしくはパスを指定できるように改良
してみました。

 --with-python-dir は廃止し、 --with-python=python1.5 (フル
パスで指定しても OK)と指定するだけで済むようになります。

 ちなみに、 Python 2.0b1 との組み合わせは hello.rb は動きますが
html.rb は

html.rb:15:in `method_missing': Wrong # of arguments(2 for 0) (ArgumentError)
        from html.rb:15

と言われてうまく動きませんでした。C インターフェースの変更に
追従する必要がありそうです。


 また、 Python を pthread サポート付きで作ったときのために
Ruby/Python も pthread 付きでビルドできるようにするノブを付けて
みました。

 --with-pthread を指定すると、 autoconf と同様、まず --lpthread を
試し、ダメなら -lc_r -pthread を試します。両方ダメならエラー終了。


 というわけで取り込んで頂けるとうれしいです。

-- 
                           /
                          /__  __       
                         / )  )  ) )  /
Akinori -Aki- MUSHA aka / (_ /  ( (__(  @ idaemons.org / FreeBSD.org

"We're only at home when we're on the run, on the wing, on the fly"

--- extconf.rb.orig	Mon Sep 11 01:14:42 2000
+++ extconf.rb	Mon Sep 11 04:31:30 2000
@@ -1,35 +1,41 @@
 require 'mkmf'
 
-py_dir        = with_config("python-dir")
-if py_dir
-  dirs = [py_dir]
+python        = with_config("python", "python1.5")
+python        = `which #{python}`.chomp
+
+exit(1) unless File.executable? python
+
+py_name       = File.basename(python)
+py_dir        = `#{python} -c 'import sys; print sys.exec_prefix' < /dev/null`.split(/\n/)[0]
+
+exit(1) unless File.directory? py_dir
+
+py_includedir = py_dir + "/include/" + py_name
+py_libdir     = py_dir + "/lib/" + py_name
+py_configdir  = py_libdir + "/config"
+py_makefile   = py_configdir + "/Makefile"
+
+print "checking for #{py_makefile}... "
+if File.exists? py_makefile
+  print "yes\n"
 else
-  dirs = ['/usr/local', '/usr']
-  if File.executable? `which python`.chomp
-    d = `python -c 'import sys; print sys.exec_prefix' < /dev/null`
-    d = d.split(/\n/).shift
-    dirs.unshift d if d and File.directory? d
-  end
+  print "no\n"
+  exit(1)
 end
 
-for py_dir in dirs
-  py_includedir = py_dir + "/include/python1.5"
-  py_libdir     = py_dir + "/lib/python1.5"
-  py_configdir  = py_libdir + "/config"
-  py_makefile   = py_configdir + "/Makefile"
+$CFLAGS  += " -I#{py_includedir}"
+$LDFLAGS += " -L#{py_configdir}"
 
-  print "checking for #{py_makefile}... "
-  if File.exists? py_makefile
-    print "yes\n"
-    break
-  else
-    print "no\n"
+if with_config("pthread")
+  if !have_library("pthread", "pthread_create")
+    $LDFLAGS += " -pthread"
+    $libs.sub!(/-lc\b/, '-lc_r')
+
+    if !have_func("pthread_create")
+      exit(1)
+    end
   end
 end
-exit(1) unless File.exists? py_makefile
-
-$CFLAGS  = "-I#{py_includedir}"
-$LDFLAGS = "-L#{py_configdir}"
 
 # If python is linked with extra libraries (e.g. -lpthread on Linux,
 # -lsocket on Solaris, etc.), have_library test will fail and built
@@ -59,11 +65,13 @@
 end
 $LOCAL_LIBS << py_extralibs
 
-if have_library("python1.5", "Py_Initialize") && have_header("Python.h")
-  # If DEBUG defined, you need python compiled with Py_DEBUG defined,
-  # like as building python with "make OPT='-g -O2 -DPy_DEBUG'"
-  if have_func('_Py_NewReference')
-    $CFLAGS  += " -DDEBUG"
-  end
-  create_makefile("python")
+if !have_library(py_name, "Py_Initialize") || !have_header("Python.h")
+  exit(1)
+end
+
+# If DEBUG defined, you need python compiled with Py_DEBUG defined,
+# like as building python with "make OPT='-g -O2 -DPy_DEBUG'"
+if have_func('_Py_NewReference')
+  $CFLAGS  += " -DDEBUG"
 end
+create_makefile("python")