小松です。

In the message of [ruby-dev:6638] Re: ruby-1.3.2-990413 AIX patch
    on Apr 19 15:41:53 matz / netlab.co.jp (Yukihiro Matsumoto) wrote:
>気軽にパッチを出して,みんなでチェックするのがあるべき姿でしょ
>う,きっと.

では、お言葉に甘えて新しいパッチを。

AIXでは、config.statusのLDSHAREDが、
  s%@LDSHARED@%../../miniruby ../aix_ld.rb $(TARGET)%g
となり、mkconfig.rbによって、
  CONFIG["LDSHARED"] = "../../miniruby ../aix_ld.rb #{CONFIG[\"TARGET\"]}"
とrbconfig.rbに出力されます。

しかし、インストールした状態で実際に欲しいのは、
  CONFIG["LDSHARED"] = "#{CONFIG[\"ruby_install_name\"]} $(archdir)/aix_ld.rb $(TARGET)"
なので、とりあえずLDSHAREDだけ特別扱いして逃げるようにしました。

あと、instruby.rbでruby.impとaix_ld.rbをインストールするように
instruby.rbに処理を追加しました。

aix_ld.rbは、ext/aix_ld.rbのものと変えたいので、ext/aix_ld_i.rbを
追加してそちらをaix_ld.rbとしてインストールするようにしています。

diffはcvswebで見たruby_1_3 branchの最新と思われるものとの比較です。

    mkconfig.rb		1.1.1.2.2.1に対する変更
    instruby.rb		1.1.1.2.2.9に対する変更
    ext/aix_ld_i.rb	新規

	/	/	/

diff -u mkconfig.rb-1.1.1.2.2.1 mkconfig.rb
--- mkconfig.rb-1.1.1.2.2.1	Tue Apr 20 08:21:37 1999
+++ mkconfig.rb	Thu Apr 22 23:05:06 1999
@@ -32,10 +32,17 @@
     name = $1
     val = $2 || ""
     next if name =~ /^(INSTALL|DEFS|configure_input|srcdir|top_srcdir)$/
-    v = "  CONFIG[\"" + name + "\"] = " +
-      val.sub(/^\s*(.*)\s*$/, '"\1"').gsub(/\$[{(]?([^})]+)[})]?/) {
-      "\#{CONFIG[\\\"#{$1}\\\"]}"
-    } + "\n"
+    if name =~ /^LDSHARED$/
+      v = val.sub('\S*/miniruby\b', '#{CONFIG[\"ruby_install_name\"]}').
+	gsub('\.\S*/', '$(archdir)/')
+      v = "  CONFIG[\"" + name + "\"] = " + v.sub(/^\s*(.*)\s*$/, '"\1"') +
+	"\n"
+    else
+      v = "  CONFIG[\"" + name + "\"] = " +
+	val.sub(/^\s*(.*)\s*$/, '"\1"').gsub(/\$[{(]?([^})]+)[})]?/) {
+	  "\#{CONFIG[\\\"#{$1}\\\"]}"
+	} + "\n"
+    end
     if fast[name]
       v_fast << v
     else
diff -u instruby.rb-1.1.1.2.2.9 instruby.rb
--- instruby.rb-1.1.1.2.2.9	Wed Mar 24 08:52:28 1999
+++ instruby.rb	Thu Apr 22 23:06:57 1999
@@ -60,6 +60,11 @@
   File.install f, dir, 0644, true
 end
 
+if PLATFORM =~ /aix/
+  File.install "ext/ruby.imp", archdir, 0644, true
+  File.install "ext/aix_ld_i.rb", File.catname('aix_ld.rb', archdir), 0755, true
+end
+
 for f in Dir["*.h"]
   File.install f, archdir, 0644, true
 end
diff -u /dev/null ext/aix_ld_i.rb
--- /dev/null	Thu Apr 22 09:17:54 1999
+++ ext/aix_ld_i.rb	Wed Apr 14 19:01:23 1999
@@ -0,0 +1,20 @@
+#! /usr/local/bin/ruby
+
+require 'rbconfig'
+include Config
+
+archdir = CONFIG["libdir"]+"/"+CONFIG["ruby_install_name"]+"/"+
+  CONFIG["MAJOR"]+"."+CONFIG["MINOR"]+"/"+CONFIG["arch"]
+
+target = ARGV.shift
+unless target =~ /\.so/
+  STDERR.printf "wrong suffix specified\n"
+  exit 1
+end
+base = File.basename(target, ".so")
+entry="Init_#{base}"
+ldargs = "-e#{entry} -bI:#{archdir}/ruby.imp -bM:SRE -T512 -H512 -lc"
+
+cmd = format("/usr/ccs/bin/ld %s %s ", ldargs, ARGV.join(' '))
+printf "\t%s\n", cmd
+system cmd

--
小松克行 (株)サリオンシステムズリサーチ ソフトウェア開発部
Katsuyuki Komatsu <komatsu / sarion.co.jp>