[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:06819] ruby-modules compilation error (and also ruby itself).



樽石です。

ほぼすべての ruby-module 関係を sparc 環境で build できませんでした。
で、ちょっと調べたところ、 install があやしいようです。

# Add here commands to install the package into debian/tmp.
cd extmath && make libdir=/home/taru/TEMP/ruby-extmath-module-0.1/debian/tmp/usr/lib/ruby/sparc-linux install
make[1]: Entering directory `/home/taru/TEMP/ruby-extmath-module-0.1/extmath'
/usr/bin/install -c extmath.so /usr/lib/ruby/sparc-linux/extmath.so
/usr/bin/install: /usr/lib/ruby/sparc-linux/extmath.so: Permission denied
make[1]: *** [/usr/lib/ruby/sparc-linux/extmath.so] Error 1


原因は archdir が適切にセットされていないのからのようです。

  # Add here commands to install the package into debian/tmp.
  cd extmath && $(MAKE) libdir=$(destdir)$(libdir) archdir=$(destdir)$(libdir) install
                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
を付け加えることで build できることを確認しました。
BTS だと思いますが、 ruby-module がどれくらいあるかわからないので、
devel に投げておきます。メンテナの方は修正をお願いします。

# QA check で引っかかる問題の気もする。
# sudo だと問題の部分は通過するが、ものが debian/tmp/ 以下にインストール
# されないのでエラーになる。

それから、ついでに言っておくと ruby は glibc 2.1 だとソースを直さないとだめのようです。

dln.c:59: macro `strdup' used without args

となります。

/usr/include/bits/string2.h
にある

# ifndef _HAVE_STRING_ARCH_strdup

#  define __strdup(s) \
  (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)           \
                  ? (((__const char *) (s))[0] == '\0'                        \
                     ? (char *) calloc (1, 1)                                 \
                     : ({ size_t __len = strlen (s) + 1;                      \
                          char *__retval = (char *) malloc (__len);           \
                          if (__retval != NULL)                               \
                            __retval = (char *) memcpy (__retval, s, __len);  \
                          __retval; }))                                       \
                  : __strdup (s)))

#  if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
#   define strdup(s) __strdup (s)
#  endif
# endif

と干渉してるからだと思います。
とりあえず、 すべての ruby ソースの strdup をコメントアウトすることにより
build はできましたが、汚いので _HAVE_STRING_ARCH_strdup を利用するように
変更するのがきれいでしょう。

----
Masato Taruishi <taruis-m@xxxxxxxxxxxxx> | University of Electro Comunications
                <taru@debian.or.jp>      |   Department of Computer Science
                <taru@xxxxxxxxxxxxx>     |              Junior
                <taru@debian.org>        |       Chofu City Tokyo, JAPAN  
   Key fingerprint = 49 46 74 E1 8D D1 EB 56  8D CA 2A 20 14 9E A9 25