[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7110] --enable-shared support

From: Katsuyuki Komatsu <komatsu@...>
Date: 1999-06-14 14:14:56 UTC
List: ruby-dev #7110
小松です。


instruby.rbとconfigure.inの--enable-sharedパッチです。

HP-UX 10.20では、シェアードライブラリ (libruby.sl) に実行権が
ないと、以下のようにrubyがcore dumpしてしまいます。

% ruby -v
/usr/lib/dld.sl: Call to mmap() failed - TEXT /usr/local/lib/libruby.sl
/usr/lib/dld.sl: Permission denied
IOT trap (core dumped)
% sudo chmod +x /usr/local/lib/libruby.sl
% ruby -v
ruby 1.3.4 (1999-06-11) [hppa1.1-hpux10.20]
% 

他のプラットフォーム (SunOS 4.1.4, Solaris 2.5.1, AIX 4.1.5)
ではシェアードライブラリには実行権がなくても動きますが、
実行権が付いているのが普通のようなので、プラットフォームに
関わらずinstruby.rbの0644を0755に書き換えるだけでいいかと
思います。

# HP-UXだけ0755にするという選択肢もありますが。

instruby.rbで出てくるlibruby.so.LIBって……BeOS用か。
これは0644のままの方がいいんでしょうか?

あと、インストール後に環境変数、
    LD_LIBRARY_PATH (Solaris)
    SHLIB_PATH (HP-UX)
    LIBPATH (AIX)
を設定しなくてもシェアードライブラリを見つけるられるように
configure.inのフラグを微調整しました。

共通:
    -L./はシェアードライブラリ中に.//libruby.soとかいう名前を
    残してしまうので、-L.に変更。
Solaris:
    -R${prefix}/libをXLDFLAGSを使って追加。
AIX:
    -L./を-L${prefix}/libに変更。
HP-UX:
    -Wl,+s,+b,$(prefix)/libをXLDFLAGSを使って追加。

Index: configure.in
===================================================================
RCS file: /home/cvs/ruby/configure.in,v
retrieving revision 1.1.1.2.2.21
diff -u -r1.1.1.2.2.21 configure.in
--- configure.in	1999/06/09 09:21:05	1.1.1.2.2.21
+++ configure.in	1999/06/14 03:10:17
@@ -667,7 +667,7 @@
        [enable_shared=$enableval])
 if test "$enable_shared" = 'yes'; then
   LIBRUBY='$(LIBRUBY_SO)'
-  LIBRUBYARG='-L./ -l$(RUBY_INSTALL_NAME)'
+  LIBRUBYARG='-L. -l$(RUBY_INSTALL_NAME)'
   CFLAGS="$CFLAGS $CCDLFLAGS"
   case "$host_os" in
     sunos4*|linux*)
@@ -688,7 +688,11 @@
  	*) LIBRUBY_ALIASES= ;;  # a.out platforms
 	esac
  	;;
+    solaris*)
+	XLDFLAGS='-R${prefix}/lib'
+ 	;;
     hpux*)
+	XLDFLAGS='-Wl,+s,+b,$(prefix)/lib'
 	LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).sl.$(MAJOR).$(MINOR).$(TEENY)'
 	LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_INSTALL_NAME).sl'
 	;;
@@ -700,7 +704,7 @@
 	    LIBRUBY_LDSHARED='/usr/ccs/bin/ld'
 	    LIBRUBY_DLDFLAGS='-bE:ruby.imp -bM:SRE -bnoentry'
 	fi
-	LIBRUBYARG='-L./ -Wl,lib$(RUBY_INSTALL_NAME).so'
+	LIBRUBYARG='-L${prefix}/lib -Wl,lib$(RUBY_INSTALL_NAME).so'
 	SOLIBS='-lm -lc'
 	;;
     cygwin*)
Index: instruby.rb
===================================================================
RCS file: /home/cvs/ruby/instruby.rb,v
retrieving revision 1.1.1.2.2.13
diff -u -r1.1.1.2.2.13 instruby.rb
--- instruby.rb	1999/05/14 08:56:09	1.1.1.2.2.13
+++ instruby.rb	1999/06/14 03:10:17
@@ -33,7 +33,7 @@
 File.makedirs libdir, true
 for lib in ["libruby.so.LIB", CONFIG["LIBRUBY_SO"]]
   if File.exist? lib
-    File.install lib, libdir, 0644, true
+    File.install lib, libdir, 0755, true
   end
 end
 Dir.chdir libdir

--
小松克行 / Katsuyuki Komatsu <komatsu@sarion.co.jp>

In This Thread

Prev Next