summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2015-06-18 19:00:26 +0000
committerjoerg <joerg@pkgsrc.org>2015-06-18 19:00:26 +0000
commitc8176ad40ac99c6990bcad52f2a92f810cb2ed47 (patch)
tree613a477097a9d5e0dfec959092dbf2b71e556bb4 /lang
parent562a5fc583a089ab54b00f157987800af2ebff00 (diff)
downloadpkgsrc-c8176ad40ac99c6990bcad52f2a92f810cb2ed47.tar.gz
On NetBSD, limit the stack size of the GC marker threads to require 2GB
address space with the default settings. Restrict the GC heap size to 75% of the address space, if a limit is set. Bump revision.
Diffstat (limited to 'lang')
-rw-r--r--lang/mono2/Makefile4
-rw-r--r--lang/mono2/distinfo5
-rw-r--r--lang/mono2/patches/patch-ak29
-rw-r--r--lang/mono2/patches/patch-libgc_misc.c36
4 files changed, 66 insertions, 8 deletions
diff --git a/lang/mono2/Makefile b/lang/mono2/Makefile
index 3b66ddfe973..eca40ebc0f8 100644
--- a/lang/mono2/Makefile
+++ b/lang/mono2/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.17 2015/06/12 10:50:16 wiz Exp $
+# $NetBSD: Makefile,v 1.18 2015/06/18 19:00:26 joerg Exp $
DISTNAME= mono-2.10.9
-PKGREVISION= 13
+PKGREVISION= 14
CATEGORIES= lang
MASTER_SITES= http://download.mono-project.com/sources/mono/
EXTRACT_SUFX= .tar.bz2
diff --git a/lang/mono2/distinfo b/lang/mono2/distinfo
index d2f196a9d79..f726ac23c19 100644
--- a/lang/mono2/distinfo
+++ b/lang/mono2/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.6 2014/11/30 21:51:44 spz Exp $
+$NetBSD: distinfo,v 1.7 2015/06/18 19:00:26 joerg Exp $
SHA1 (mono-2.10.9.tar.bz2) = 1a6e8c5a0c3d88d87982259aa04402e028a283de
RMD160 (mono-2.10.9.tar.bz2) = ac9784c413eb2cdb490750a86a96cce5c11ad5bd
@@ -13,7 +13,7 @@ SHA1 (patch-af) = c109a9a742cb70d83cf99df0ad6c907c68809d52
SHA1 (patch-ah) = 5f90aa60504b9508d21e05b390626788d71d47b4
SHA1 (patch-ai) = cd5593a7e95039980b839bdabdf59d9e68fb9f56
SHA1 (patch-aj) = a5aab739e01fd969edb85b5b3e08c087554d0a72
-SHA1 (patch-ak) = 838b72fdc4e2ce8a62a56f8faf98c1f334abad14
+SHA1 (patch-ak) = 2f046ab73c699362eb857482aef0a32d6a97c848
SHA1 (patch-al) = 07d9c01fd5b6478f87dc563e2a2ae53ffbbc7187
SHA1 (patch-am) = 22a3c968089a837bc99e1d0f21bc3b33689b8311
SHA1 (patch-ap) = 9da5c76e34f1f61da411ab4e0c884c23cc320bb9
@@ -43,6 +43,7 @@ SHA1 (patch-dl) = fc9cd48c070dbecad68cfe7d45eea59a3e6023d9
SHA1 (patch-dm) = bac9172f419630f817702e15dd3761cb4f60e0a0
SHA1 (patch-dn) = 9a55bd9c492b64ec9feadb45419b4bec37900b89
SHA1 (patch-do) = 6ccd5598198fc04e638ec5bc5e03c92e16206c92
+SHA1 (patch-libgc_misc.c) = e05ed1c7138d70f2f86820fe56734675e8598474
SHA1 (patch-man_mprof-report.1) = e175943bc63780d907b4ceab08e7f9ad6a1a7ac8
SHA1 (patch-mcs_class_System.Web_System.Web.UI_Page.cs) = 986874319e849b93a2c89b7eb360e53f18fa7ca4
SHA1 (patch-mcs_class_System.Web_System.Web.Util_SecureHashCodeProvider.cs) = d82d9737efb07a8095acc5bf78d9cc522d24632d
diff --git a/lang/mono2/patches/patch-ak b/lang/mono2/patches/patch-ak
index 83a0a80a8c6..f3855fc4b60 100644
--- a/lang/mono2/patches/patch-ak
+++ b/lang/mono2/patches/patch-ak
@@ -1,6 +1,6 @@
-$NetBSD: patch-ak,v 1.1 2013/06/17 12:43:28 wiz Exp $
---- libgc/pthread_support.c.orig 2011-01-04 19:39:55.000000000 +0200
-+++ libgc/pthread_support.c 2011-03-17 16:14:10.000000000 +0200
+$NetBSD: patch-ak,v 1.2 2015/06/18 19:00:26 joerg Exp $
+--- libgc/pthread_support.c.orig 2012-01-30 18:01:22.000000000 +0000
++++ libgc/pthread_support.c
@@ -68,8 +68,8 @@
# if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
@@ -12,7 +12,28 @@ $NetBSD: patch-ak,v 1.1 2013/06/17 12:43:28 wiz Exp $
# define USE_PTHREAD_SPECIFIC
# endif
-@@ -1175,6 +1175,22 @@
+@@ -592,6 +592,20 @@ static void start_mark_threads()
+ }
+ }
+ # endif /* HPUX || GC_DGUX386_THREADS */
++# if defined(__NetBSD__)
++# define MAX_STACK_SIZE (1024 * 1024 *sizeof(word))
++ {
++ size_t old_size;
++ int code;
++
++ if (pthread_attr_getstacksize(&attr, &old_size) != 0)
++ ABORT("pthread_attr_getstacksize failed\n");
++ if (old_size > MAX_STACK_SIZE) {
++ if (pthread_attr_setstacksize(&attr, MAX_STACK_SIZE) != 0)
++ ABORT("pthread_attr_setstacksize failed\n");
++ }
++ }
++# endif
+ # ifdef CONDPRINT
+ if (GC_print_stats) {
+ GC_printf1("Starting %ld marker threads\n", GC_markers - 1);
+@@ -1238,6 +1252,22 @@ void GC_end_blocking(void) {
#define __d10_sleep sleep
#endif /* GC_DGUX386_THREADS */
diff --git a/lang/mono2/patches/patch-libgc_misc.c b/lang/mono2/patches/patch-libgc_misc.c
new file mode 100644
index 00000000000..976e97b1c88
--- /dev/null
+++ b/lang/mono2/patches/patch-libgc_misc.c
@@ -0,0 +1,36 @@
+$NetBSD: patch-libgc_misc.c,v 1.1 2015/06/18 19:00:26 joerg Exp $
+
+--- libgc/misc.c.orig 2011-11-15 17:22:41.000000000 +0000
++++ libgc/misc.c
+@@ -14,10 +14,10 @@
+ */
+ /* Boehm, July 31, 1995 5:02 pm PDT */
+
+-
+ #include <stdio.h>
+ #include <limits.h>
+ #ifndef _WIN32_WCE
++#include <sys/resource.h>
+ #include <signal.h>
+ #endif
+
+@@ -755,6 +755,19 @@ void GC_init_inner()
+ initial_heap_sz = divHBLKSZ(initial_heap_sz);
+ }
+ }
++#ifdef RLIMIT_AS
++ {
++ /*
++ * If there is a VA limit for the process,
++ * keep the heap under 75% if that limit.
++ */
++ struct rlimit lim;
++ if (!getrlimit(RLIMIT_AS, &lim)) {
++ if (lim.rlim_cur != RLIM_INFINITY && lim.rlim_cur == (word)lim.rlim_cur)
++ GC_set_max_heap_size(lim.rlim_cur / 2 + lim.rlim_cur / 4);
++ }
++ }
++#endif
+ {
+ char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE");
+ if (sz_str != NULL) {