Project

General

Profile

Actions

Bug #10954

closed

FreeBSD 9.1でコンパイルできない(libprocstatのチェックに漏れがある)

Added by ciel (T Yamada) about 9 years ago. Updated about 9 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-freebsd9.1]
[ruby-core:68468]

Description

ruby-2.2.1.tar.bz2をFreeBSD 9.1でコンパイルすると、sh configureの後、makeで、
ruby-2.2.1/vm_dump.c:738: undefined reference to `procstat_getvmmap'
となります。
vm_dump.cの#ifdef HAVE_LIBPROCSTATを#if 0に書き換えるとコンパイルできます。

configureを見ると、procstat_open_sysctl()のチェックによりlibprocstatを判定していますが、FreeBSD 9.1ではこの関数は存在し、かつprocstat_getvmmapは存在しないため、正しくconfigureできていないことになると思います。
私自身がconfigureに詳しければPullReqを出せるのですが、申し訳ありません。

(ところでfiddleのlibffiが-fPICを付けられていないのでビルドに失敗する問題が別にあるのですが、そちらはとりあえず2.2.2まで待ってみます。)

Updated by nobu (Nobuyoshi Nakada) about 9 years ago

  • Status changed from Open to Feedback

これでどうでしょうか。

diff --git i/configure.in w/configure.in
index 88a13a3..e278261 100644
--- i/configure.in
+++ w/configure.in
@@ -3143,6 +3143,9 @@ fi
 AS_CASE(["$target_os"],
 [freebsd*], [
     AC_CHECK_LIB([procstat], [procstat_open_sysctl])
+    if test "x$ac_cv_lib_procstat_procstat_open_sysctl" = xyes; then
+	AC_CHECK_FUNCS(procstat_getvmmap)
+    fi
     ])
 AS_CASE(["$target_cpu-$target_os"],
 [*-darwin*], [
diff --git i/vm_dump.c w/vm_dump.c
index a0d8bcb..6470aee 100644
--- i/vm_dump.c
+++ w/vm_dump.c
@@ -735,7 +735,11 @@ procstat_vm(struct procstat *procstat, struct kinfo_proc *kipp)
 		ptrwidth, "START", ptrwidth, "END", "PRT", "RES",
 		"PRES", "REF", "SHD", "FL", "TP", "PATH");
 
+#ifdef HAVE_PROCSTAT_GETVMMAP
 	freep = procstat_getvmmap(procstat, kipp, &cnt);
+#else
+	freep = kinfo_getvmmap(kipp->ki_pid, &cnt);
+#endif
 	if (freep == NULL)
 		return;
 	for (i = 0; i < cnt; i++) {

(ところでfiddleのlibffiが-fPICを付けられていないのでビルドに失敗する問題が別にあるのですが、そちらはとりあえず2.2.2まで待ってみます。)

パッケージシステムにlibffiがあるならそちらでインストールしてください。

Actions #2

Updated by ciel (T Yamada) about 9 years ago

そのパッチで(とりあえずminirubyまで)ビルドが通るようになりました。ありがとうございます。

Actions #3

Updated by ciel (T Yamada) about 9 years ago

fiddleの件は10960を切っておきました。尤も私の勘違いである可能性が濃厚ではありますが…。

Actions #4

Updated by nobu (Nobuyoshi Nakada) about 9 years ago

  • Status changed from Feedback to Closed
  • % Done changed from 0 to 100

Applied in changeset r49930.


vm_dump.c: check procstat_getvmmap

  • configure.in: check also procstat_getvmmap, which is not
    available on FreeBSD 9. [ruby-core:68468] [Bug #10954]
  • vm_dump.c (procstat_vm): use kinfo_getvmmap instead if
    procstat_getvmmap is not available.
Actions #5

Updated by ciel (T Yamada) about 9 years ago

失礼します。こちら、Ruby 2.2.2には反映されていないのでしょうか?

Actions #6

Updated by nagachika (Tomoyuki Chikanaga) about 9 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED

Yamada さん。
申し訳ありません、この修正が見落とされていたので2.2.2には取り込まれていません。2.2.3までにパックポートします。

Actions #7

Updated by usa (Usaku NAKAMURA) about 9 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED
Actions #8

Updated by nagachika (Tomoyuki Chikanaga) about 9 years ago

  • Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE

Backported into ruby_2_2 branch at r50315.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0