Project

General

Profile

Bug #10954

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

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

Status:
Closed
Priority:
Normal
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まで待ってみます。)

Associated revisions

Revision 49930
Added by nobu (Nobuyoshi Nakada) about 2 years ago

vm_dump.c: check procstat_getvmmap

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

Revision 49930
Added by nobu (Nobuyoshi Nakada) about 2 years ago

vm_dump.c: check procstat_getvmmap

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

Revision 49930
Added by nobu (Nobuyoshi Nakada) about 2 years ago

vm_dump.c: check procstat_getvmmap

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

Revision 50315
Added by nagachika (Tomoyuki Chikanaga) almost 2 years ago

merge revision(s) 49930: [Backport #10954]

* configure.in: check also procstat_getvmmap, which is not
  available on FreeBSD 9.   [Bug #10954]

* vm_dump.c (procstat_vm): use kinfo_getvmmap instead if
  procstat_getvmmap is not available.

History

#1 [ruby-core:68474] Updated by nobu (Nobuyoshi Nakada) about 2 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があるならそちらでインストールしてください。

#2 Updated by ciel (T Yamada) about 2 years ago

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

#3 Updated by ciel (T Yamada) about 2 years ago

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

#4 Updated by nobu (Nobuyoshi Nakada) about 2 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. [Bug #10954]
  • vm_dump.c (procstat_vm): use kinfo_getvmmap instead if procstat_getvmmap is not available.

#5 Updated by ciel (T Yamada) almost 2 years ago

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

#6 Updated by nagachika (Tomoyuki Chikanaga) almost 2 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までにパックポートします。

#7 Updated by usa (Usaku NAKAMURA) almost 2 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

#8 Updated by nagachika (Tomoyuki Chikanaga) almost 2 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.

Also available in: Atom PDF