[#68478] Looking for MRI projects for Ruby Google Summer of Code 2015 — Tony Arcieri <bascule@...>

Hi ruby-core,

10 messages 2015/03/10

[ruby-core:68474] [Ruby trunk - Bug #10954] [Feedback] FreeBSD 9.1でコンパイルできない(libprocstatのチェックに漏れがある)

From: nobu@...
Date: 2015-03-10 02:50:02 UTC
List: ruby-core #68474
Issue #10954 has been updated by Nobuyoshi Nakada.

Status changed from Open to Feedback

これでどうでしょうか。

~~~diff
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があるならそちらでインストールしてください。

----------------------------------------
Bug #10954: FreeBSD 9.1でコンパイルできない(libprocstatのチェックに漏れがある)
https://bugs.ruby-lang.org/issues/10954#change-51815

* Author: t yama
* Status: Feedback
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-freebsd9.1]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
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まで待ってみます。)



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next