# Subject の英語, めちゃくちゃです, すいません. 

ええと, ちょっと提案というか質問みたいなことなんですが
今の instruby.rb では libruby.so, libruby.so.1.4, 
libruby.so.1.4.3 とかについて

  libruby.so     -> libruby.so.1.4.3
  libruby.so.1.4 -> libruby.so.1.4.3

としていて soname が libruby.so.1.4.3 になっていると思います. 
soname は Makefile.in の方ですか. 

で, これだと 1.4.2 -> 1.4.3 というバージョンアップで
たとえば eruby とか mod_ruby とかを
作りなおさなくてはならなくなると思うんですが
これはそういうものなんでしょうか. 

なんとなく 

  libruby.so     -> libruby.so.1.4
  libruby.so.1.4 -> libruby.so.1.4.3

にして soname を libruby.so.1.4 とかにしておくと
しあわせかなあと思っているのですが
実際のとこどうなのかおしえてください > 識者の方々
# ついでなんで上のようになるように instruby.rb を
# いい加減にいじった patch をつけてみます. 

P.S.
あとこのこととは関係ないですが jcode.rb の 
UTF-8 patch は取り込まれないんでしょうか?

-- 

 やまだ あきら <URL:http://arika.org/>
 (akira / arika.org or akira / nurs.or.jp)

--- ruby-1.4.3.orig/Makefile.in +++ ruby-1.4.3/Makefile.in @@ -97,7 +97,7 @@ @-@RANLIB@ $@ 2> /dev/null || true $(LIBRUBY_SO): $(OBJS) dmyext.@OBJEXT@ - $(LDSHARED) $(DLDFLAGS) $(SOLIBS) $(OBJS) dmyext.@OBJEXT@ -o $@ + $(LDSHARED) $(DLDFLAGS) $(SOLIBS) -Wl,-soname,lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR) $(OBJS) dmyext.@OBJEXT@ -o $@ @-./miniruby -e 'ARGV.each{|link| File.delete link if File.exist? link; \ File.symlink "$(LIBRUBY_SO)", link}' \ $(LIBRUBY_ALIASES) || true --- ruby-1.4.3.orig/instruby.rb +++ ruby-1.4.3/instruby.rb @@ -36,16 +36,63 @@ File.install lib, libdir, 0555, true end end + +def string_invert(x) + y = [] + x.each_byte{|b| + y << 0xFF - b + } + + return y.pack('C*') +end + +def versplit(x) + return x.split('.').collect{|x| + /^(\d+)(\w*?)(\d*)$/o =~ x + [$1.to_i, if !$2 || $2.size == 0 + [0xFF].pack('C') + else + string_invert($2) + end, $3.to_i] + } +end + +def vercmp (a,b) + patt = /(?:\.\d+\w*)+$/o + ver_a = a.scan(patt) + ver_b = b.scan(patt) + + if ver_a.size == 0 + if ver_b.size == 0 + return 0 + else + return -1 + end + elsif ver_b.size == 0 + return 1 + + else + versplit(ver_a[0]) <=> versplit(ver_b[0]) + end +end + Dir.chdir libdir if File.exist? CONFIG["LIBRUBY_SO"] - for link in CONFIG["LIBRUBY_ALIASES"].split - if File.exist? link - File.delete link + list = CONFIG["LIBRUBY_ALIASES"].split + CONFIG["LIBRUBY_SO"] + target = nil + list.sort{|a,b| vercmp(b,a)}.each {|link| + if target + if File.exist? link + File.delete link + print "delete #{link}\n" + end + File.symlink target, link + print "link #{target} -> #{link}\n" end - File.symlink CONFIG["LIBRUBY_SO"], link - print "link #{CONFIG['LIBRUBY_SO']} -> #{link}\n" - end + target = link + } end + Dir.chdir wdir File.makedirs pkglibdir, true File.makedirs archdir, true