Bug #10954
closedFreeBSD 9.1でコンパイルできない(libprocstatのチェックに漏れがある)
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 10 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があるならそちらでインストールしてください。
Updated by ciel (T Yamada) about 10 years ago
そのパッチで(とりあえずminirubyまで)ビルドが通るようになりました。ありがとうございます。
Updated by ciel (T Yamada) about 10 years ago
fiddleの件は10960を切っておきました。尤も私の勘違いである可能性が濃厚ではありますが…。
Updated by nobu (Nobuyoshi Nakada) about 10 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.
Updated by ciel (T Yamada) almost 10 years ago
失礼します。こちら、Ruby 2.2.2には反映されていないのでしょうか?
Updated by nagachika (Tomoyuki Chikanaga) almost 10 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までにパックポートします。
Updated by usa (Usaku NAKAMURA) almost 10 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
Updated by nagachika (Tomoyuki Chikanaga) almost 10 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.