Index: head/lang/mono6.8/Makefile =================================================================== --- head/lang/mono6.8/Makefile +++ head/lang/mono6.8/Makefile @@ -2,94 +2,118 @@ # $FreeBSD$ PORTNAME= mono -PORTVERSION= 5.10.1.57 -PORTREVISION= 3 +PORTVERSION= 6.8.0.123 CATEGORIES= lang MASTER_SITES= https://download.mono-project.com/sources/mono/ DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} -MAINTAINER= mono@FreeBSD.org +MAINTAINER= linimon@FreeBSD.org COMMENT= Open source implementation of .NET Development Framework LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc +NOT_FOR_ARCHS= riscv64 riscv64sf sparc64 BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ bash:shells/bash \ cmake>0:devel/cmake LIB_DEPENDS= libinotify.so:devel/libinotify -RUN_DEPENDS= ${PY_PILLOW} \ - ca_root_nss>=0:security/ca_root_nss +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=0:graphics/py-pillow@${PY_FLAVOR} \ + ca_root_nss>=0:security/ca_root_nss \ + sqlite3>0:databases/sqlite3 \ + zip>=0:archivers/zip CONFLICTS_INSTALL= czmq-3* -OPTIONS_DEFINE= MONOLITE NLS X11 -OPTIONS_DEFAULT= MONOLITE X11 -OPTIONS_SUB= yes - -MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) -MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite -MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite -MONOLITE_VERSION= 1051000004 - -NLS_CONFIGURE_OFF= --disable-nls -NLS_USES= gettext - -X11_USES= display:test - USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ - pathfix perl5 python shebangfix tar:bzip2 + pathfix perl5 python:3.6+ shebangfix tar:xz USE_PERL5= build + +CONFIGURE_SCRIPT= autogen.sh GNU_CONFIGURE= yes USE_LDCONFIG= yes -SHEBANG_FILES= scripts/mono-heapviz mono/mini/genmdesc.py mono/tests/test_lldb.py -BINARY_ALIAS= python=${PYTHON_CMD} -CONFIGURE_ARGS= --disable-dtrace --enable-btls -CONFIGURE_ENV= ac_cv_header_sys_inotify_h=no +SHEBANG_FILES= scripts/mono-package-runtime scripts/mono-heapviz mono/mini/genmdesc.py \ + mono/tests/test_lldb.py mono/tests/gc-descriptors/gen-descriptor-tests.py \ + scripts/mono-find-provides.in scripts/mono-find-requires.in +BINARY_ALIAS= python=${PYTHON_CMD} +CONFIGURE_ARGS_aarch64= --with-csc=mcs +CONFIGURE_ARGS= ${CONFIGURE_ARGS_${ARCH}} --disable-dtrace +# Do not remove - this is needed to work around automake's lack of hinting +CONFIGURE_ENV+= ac_cv_header_sys_inotify_h=yes + MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ - INSTALL_STRIP_FLAG="${STRIP}" \ - TZ=UTC + INSTALL_STRIP_FLAG="${STRIP}" TEST_ARGS= -k TEST_TARGET= check PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* -LOCALBASE?= /usr/local -.if !exists(${LOCALBASE}/bin/mcs) -OPTIONS_SLAVE= MONOLITE +# XXX MCL mat says: no. Options must not change themselves depending on what is installed. +# XXX MCL just leave this out for now to try to get *something* done. +# .if !exists(${LOCALBASE}/bin/mcs) +# OPTIONS_SLAVE= MONOLITE +# .endif + +# intentionally sorted alpha, then SPECTRE and MONODEV at the end +# because they have performance and security implications +OPTIONS_DEFINE= BIGARRAY MONOLITE NINJA NLS ODBC X11 SPECTRE MONODEV +OPTIONS_DEFAULT= MONOLITE NLS X11 +OPTIONS_SUB= yes + +BIGARRAY_DESC= Enable allocating arrays greater than Int32.MaxValue +BIGARRAY_CONFIGURE_ENABLE= big-arrays + +MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) +MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite +MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite +# DO NOT ALTER OR REMOVE. DANGER, CASE-SENSITIVE! +# monolite 2020-01-13 @ 1798d23b +MONOLITE_VERSION= 1798d23b-3dbc-4161-b3f4-6bb00134ee4e + +MONODEV_DESC= Build for Mono development (disables crash privacy) +MONODEV_CONFIGURE_ON= --enable-icall-symbol-map --enable-icall-export --with-crash_privacy=no + +NINJA_DESC= Use ninja to build wherever possible +NINJA_CONFIGURE_ON= ninja +NINJA_BUILD_DEPENDS= ninja>0:devel/ninja + +NLS_DESC= NLS Localization Support +NLS_CONFIGURE_OFF= --disable-nls +NLS_USES= gettext + +ODBC_DESC= System.Data: support for unixODBC +ODBC_BUILD_DEPENDS= unixODBC>0:databases/unixODBC +ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC + +SPECTRE_DESC= Enable internal Mono Spectre mitigations (SEE pkg-descr) +SPECTRE_CONFIGURE_ON= --with-spectre-mitigation=yes + +X11_USES= display:test +X11_CONFIGURE_WITH= x +X11_RUN_DEPENDS= pango>0:x11-toolkits/pango \ + libgdiplus>0:x11-toolkits/libgdiplus + +.include + +.if defined(QEMU_EMULATING) && "${QEMU_EMULATING}" == "1" +BROKEN= fails to build under qemu: Roslyn requires more functional POSIX implementation .endif -post-extract-MONOLITE-on: - ${MKDIR} ${WRKSRC}/mcs/class/lib/monolite-linux - ${MV} ${WRKDIR}/monolite-linux-${MONOLITE_VERSION}-latest ${WRKSRC}/mcs/class/lib/monolite-linux/${MONOLITE_VERSION} +.if ${ARCH:Mpowerpc*} +PLIST+= ${.CURDIR}/pkg-plist.powerpc +.endif post-patch: - ${REINPLACE_CMD} -e 's|^#!/bin/bash|#!/usr/bin/env bash|g' \ - ${WRKSRC}/scripts/mono-find-provides.in \ - ${WRKSRC}/scripts/mono-find-requires.in \ - ${WRKSRC}/scripts/mono-test-install - ${FIND} ${WRKSRC} -name '*.sh' | ${XARGS} ${REINPLACE_CMD} \ - -e 's|^#!/bin/bash|#!/bin/sh|g' - ${SED} 's/tarball/${PORTVERSION}/' ${WRKSRC}/mono/mini/Makefile.am.in \ - > ${WRKSRC}/mono/mini/Makefile.am - ${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}|g' \ - ${WRKSRC}/mcs/class/corlib/System/Environment.cs \ - ${WRKSRC}/external/corefx/src/System.Runtime.Extensions/src/System/Environment.Unix.cs - ${REINPLACE_CMD} -e 's|/usr/share/.mono|${PREFIX}/share/mono|g' \ - ${WRKSRC}/man/mono-configuration-crypto.1 \ - ${WRKSRC}/man/mono.1 \ - ${WRKSRC}/man/mozroots.1 + # Needed to force regeneration due to tarball packaging + ${RM} ${WRKSRC}/configure ${WRKSRC}/Makefile \ + ${WRKSRC}/mono/Makefile \ + ${WRKSRC}/mono/native/Makefile -post-configure: - ${REINPLACE_CMD} -e 's|share\/man|man|g' \ - ${WRKSRC}/mcs/jay/Makefile - post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/mono -.include +.include Index: head/lang/mono6.8/distinfo =================================================================== --- head/lang/mono6.8/distinfo +++ head/lang/mono6.8/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1535767329 -SHA256 (mono-5.10.1.57.tar.bz2) = 76cbd8545db6adc5a1738c343d957a7015c95e1439c461ea4f2bd56bd6337ab4 -SIZE (mono-5.10.1.57.tar.bz2) = 210896685 -SHA256 (monolite-linux-1051000004-latest.tar.gz) = 209804685ba87ecc5838addc8f089e858bfad4c7627c26d118f4f6889648e0cd -SIZE (monolite-linux-1051000004-latest.tar.gz) = 4820712 +TIMESTAMP = 1589939235 +SHA256 (mono-6.8.0.123.tar.xz) = e2e42d36e19f083fc0d82f6c02f7db80611d69767112af353df2f279744a2ac5 +SIZE (mono-6.8.0.123.tar.xz) = 243827664 +SHA256 (monolite-linux-1798d23b-3dbc-4161-b3f4-6bb00134ee4e-latest.tar.gz) = c8baa24750315156144586a416c9ae7ee0613a9472519b360f0fa75ffd66e825 +SIZE (monolite-linux-1798d23b-3dbc-4161-b3f4-6bb00134ee4e-latest.tar.gz) = 5359646 Index: head/lang/mono6.8/files/patch-boringssl =================================================================== --- head/lang/mono6.8/files/patch-boringssl +++ head/lang/mono6.8/files/patch-boringssl @@ -0,0 +1,138 @@ +diff --git a/CODE-OF-CONDUCT.md external/boringssl/CODE-OF-CONDUCT.md +new file mode 100644 +index 00000000..775f221c +--- /dev/null ++++ external/boringssl/CODE-OF-CONDUCT.md +@@ -0,0 +1,6 @@ ++# Code of Conduct ++ ++This project has adopted the code of conduct defined by the Contributor Covenant ++to clarify expected behavior in our community. ++ ++For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). +diff --git a/THIRD-PARTY-NOTICES.TXT external/boringssl/THIRD-PARTY-NOTICES.TXT +new file mode 100644 +index 00000000..069ac8f2 +--- /dev/null ++++ external/boringssl/THIRD-PARTY-NOTICES.TXT +@@ -0,0 +1,20 @@ ++Mono uses third-party libraries or other resources that may be ++distributed under licenses different than the .NET Core software. ++ ++ Attributions and license notices for test cases originally authored by ++third parties can be found in the respective test directories. ++ ++ In the event that we accidentally failed to list a required notice, please ++bring it to our attention. Post an issue or email us: ++ ++ dotnet@microsoft.com ++ ++ The attached notices are provided for information only. ++ ++ License notice for Code Project ++-------------------------------- ++ ++Title: Thread Local Storage - The C++ Way ++Content: https://www.codeproject.com/Articles/8113/Thread-Local-Storage-The-C-Way ++Reference: https://github.com/mono/boringssl/bloexternal/boringssl/eec2ca7e76c04ca41ef5bfc875ee3b0374cb7a94/crypto/thread_win.c#L138-L148 ++License: https://www.codeproject.com/info/EULA.aspx +diff --git a/crypto/aes/asm/aesv8-armx.pl external/boringssl/crypto/aes/asm/aesv8-armx.pl +index 89e6f874..c41175a6 100644 +--- a/crypto/aes/asm/aesv8-armx.pl ++++ external/boringssl/crypto/aes/asm/aesv8-armx.pl +@@ -51,15 +51,7 @@ $code=<<___; + .text + ___ + $code.=<<___ if ($flavour =~ /64/); +-#if !defined(__clang__) + .arch armv8-a+crypto +-#elif defined(ANDROID) && defined(__clang__) +-#if __clang_major__ > 3 +-.arch armv8-a+crypto +-#else +-.arch armv8-a+crypto,+neon +-#endif +-#endif + ___ + $code.=".arch armv7-a\n.fpu neon\n.code 32\n" if ($flavour !~ /64/); + #^^^^^^ this is done to simplify adoption by not depending +diff --git a/crypto/cpu-aarch64-linux.c external/boringssl/crypto/cpu-aarch64-linux.c +index 1b0f3955..93d12237 100644 +--- a/crypto/cpu-aarch64-linux.c ++++ external/boringssl/crypto/cpu-aarch64-linux.c +@@ -25,6 +25,48 @@ + + extern uint32_t OPENSSL_armcap_P; + ++#if defined(__FreeBSD__) ++ ++#include ++#include ++#include ++ ++// Support for older version of armreg.h ++#ifndef ID_AA64ISAR0_AES_VAL ++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES ++#endif ++#ifndef ID_AA64ISAR0_SHA1_VAL ++#define ID_AA64ISAR0_SHA1_VAL ID_AA64ISAR0_SHA1 ++#endif ++#ifndef ID_AA64ISAR0_SHA2_VAL ++#define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2 ++#endif ++ ++void OPENSSL_cpuid_setup(void) { ++ if (getenv("QEMU_EMULATING") != NULL) { ++ return; ++ } ++ ++ uint64_t isar0_val = READ_SPECIALREG(id_aa64isar0_el1); ++ ++ OPENSSL_armcap_P |= ARMV7_NEON; ++ ++ if (ID_AA64ISAR0_AES_VAL(isar0_val) >= ID_AA64ISAR0_AES_BASE) { ++ OPENSSL_armcap_P |= ARMV8_PMULL; ++ } ++ if (ID_AA64ISAR0_AES_VAL(isar0_val) >= ID_AA64ISAR0_AES_PMULL) { ++ OPENSSL_armcap_P |= ARMV8_PMULL; ++ } ++ if (ID_AA64ISAR0_SHA1_VAL(isar0_val) >= ID_AA64ISAR0_SHA1_BASE) { ++ OPENSSL_armcap_P |= ARMV8_SHA1; ++ } ++ if (ID_AA64ISAR0_SHA2_VAL(isar0_val) >= ID_AA64ISAR0_SHA2_BASE) { ++ OPENSSL_armcap_P |= ARMV8_SHA256; ++ } ++} ++ ++#else // linux ++ + void OPENSSL_cpuid_setup(void) { + unsigned long hwcap = getauxval(AT_HWCAP); + +@@ -58,4 +100,6 @@ void OPENSSL_cpuid_setup(void) { + } + } + ++#endif ++ + #endif /* OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP */ +diff --git a/crypto/modes/asm/ghashv8-armx.pl external/boringssl/crypto/modes/asm/ghashv8-armx.pl +index 73421405..eabef0cb 100644 +--- a/crypto/modes/asm/ghashv8-armx.pl ++++ external/boringssl/crypto/modes/asm/ghashv8-armx.pl +@@ -59,15 +59,7 @@ $code=<<___; + .text + ___ + $code.=<<___ if ($flavour =~ /64/); +-#if !defined(__clang__) + .arch armv8-a+crypto +-#elif defined(ANDROID) && defined(__clang__) +-#if __clang_major__ > 3 +-.arch armv8-a+crypto +-#else +-.arch armv8-a+crypto,+neon +-#endif +-#endif + ___ + $code.=".fpu neon\n.code 32\n" if ($flavour !~ /64/); + Index: head/lang/mono6.8/files/patch-configure.ac =================================================================== --- head/lang/mono6.8/files/patch-configure.ac +++ head/lang/mono6.8/files/patch-configure.ac @@ -1,20 +0,0 @@ ---- configure.ac.orig 2018-04-18 10:51:42.000000000 +0300 -+++ configure.ac 2018-06-24 02:38:19.860780000 +0300 -@@ -3271,6 +3271,8 @@ - BTLS_PLATFORM=i386 - ;; - openbsd*|freebsd*|kfreebsd-gnu*) -+ BTLS_SUPPORTED=yes -+ BTLS_PLATFORM=i386 - ;; - esac - ;; -@@ -3295,6 +3297,8 @@ - boehm_supported=false - ;; - openbsd*|freebsd*|kfreebsd-gnu*) -+ BTLS_SUPPORTED=yes -+ BTLS_PLATFORM=x86_64 - ;; - mingw*) - ;; Index: head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs =================================================================== --- head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs +++ head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs @@ -1,11 +0,0 @@ ---- mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs.orig 2017-07-20 18:10:59 UTC -+++ mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs -@@ -244,7 +244,7 @@ namespace Mono.Security.Cryptography { - if ((_machinePath == null) || (!_machinePathExists)) { - _machinePath = Path.Combine ( - Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), -- ".mono"); -+ "mono"); - _machinePath = Path.Combine (_machinePath, "keypairs"); - - _machinePathExists = Directory.Exists (_machinePath); Index: head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs =================================================================== --- head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs +++ head/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs @@ -1,20 +0,0 @@ ---- mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs.orig 2017-07-20 18:10:59 UTC -+++ mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs -@@ -73,7 +73,7 @@ namespace Mono.Security.X509 { - if (_localMachinePath == null) { - _localMachinePath = Path.Combine ( - Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), -- ".mono"); -+ "mono"); - _localMachinePath = Path.Combine (_localMachinePath, "certs"); - } - return _localMachinePath; -@@ -97,7 +97,7 @@ namespace Mono.Security.X509 { - if (_newLocalMachinePath == null) { - _newLocalMachinePath = Path.Combine ( - Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), -- ".mono"); -+ "mono"); - _newLocalMachinePath = Path.Combine (_newLocalMachinePath, "new-certs"); - } - return _newLocalMachinePath; Index: head/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs =================================================================== --- head/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs +++ head/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs @@ -1,11 +0,0 @@ ---- mcs/tools/mono-configuration-crypto/lib/Mono.Configuration.Crypto/KeyContainerCollection.cs.orig 2017-07-20 18:10:59 UTC -+++ mcs/tools/mono-configuration-crypto/lib/Mono.Configuration.Crypto/KeyContainerCollection.cs -@@ -32,7 +32,7 @@ namespace Mono.Configuration.Crypto - string topPath; - - if (machineStore) -- topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), ".mono"); -+ topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), "mono"); - else - topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), ".mono"); - topPath = Path.Combine (topPath, "keypairs"); Index: head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets =================================================================== --- head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets +++ head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets @@ -1,25 +0,0 @@ ---- mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets.orig 2017-07-20 18:10:59 UTC -+++ mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets -@@ -20,6 +20,11 @@ - true - - -+ -+ sn -+ $(CscToolPath) -+ -+ - - - -@@ -102,6 +107,10 @@ - ToolExe="$(CscToolExe)" - ToolPath="$(CscToolPath)" /> - -+ -+ - - - Index: head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets =================================================================== --- head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets +++ head/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets @@ -1,25 +0,0 @@ ---- mcs/tools/xbuild/data/14.0/Microsoft.CSharp.targets.orig 2017-07-20 18:10:59 UTC -+++ mcs/tools/xbuild/data/14.0/Microsoft.CSharp.targets -@@ -20,6 +20,11 @@ - true - - -+ -+ sn -+ $(CscToolPath) -+ -+ - - - -@@ -102,6 +107,10 @@ - ToolExe="$(CscToolExe)" - ToolPath="$(CscToolPath)" /> - -+ -+ - - - Index: head/lang/mono6.8/files/patch-mono_configure.ac =================================================================== --- head/lang/mono6.8/files/patch-mono_configure.ac +++ head/lang/mono6.8/files/patch-mono_configure.ac @@ -0,0 +1,478 @@ +# Upstreamed for next release +# PR#19234 +# PR#18578 +--- configure.ac.orig 2020-03-15 16:11:23.394519000 -0400 ++++ configure.ac 2020-03-16 14:50:08.458816000 -0400 +@@ -2299,108 +2299,100 @@ + # We have the new, three-parameter version + AC_MSG_RESULT(no) + ]) + + dnl ****************************************************************** + dnl *** Check for large file support *** + dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) *** + dnl ****************************************************************** + + # Check that off_t can represent 2**63 - 1 correctly, working around + # potential compiler bugs. Defines LARGE_FILE_SUPPORT, adds $1 to + # CPPFLAGS and sets $large_offt to yes if the test succeeds + large_offt=no + AC_DEFUN([LARGE_FILES], [ + large_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $1" + AC_TRY_COMPILE([ + #include + #include + ], [ + /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */ + #define COMPILE_TIME_ASSERT(pred) \ + switch(0){case 0:case pred:;} + COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64); + ], [ + AC_MSG_RESULT(ok) + AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support]) + large_CPPFLAGS="$large_CPPFLAGS $1" + large_offt=yes + ], [ + AC_MSG_RESULT(no) + ]) + CPPFLAGS=$large_CPPFLAGS + ]) + + AC_MSG_CHECKING(if off_t is 64 bits wide) + LARGE_FILES("") + if test $large_offt = no; then + AC_MSG_CHECKING(if _FILE_OFFSET_BITS=64 gives 64 bit off_t) + LARGE_FILES("-D_FILE_OFFSET_BITS=64") + fi + if test $large_offt = no; then + AC_MSG_WARN([No 64 bit file size support available]) + fi + + dnl ***************************** + dnl *** Checks for libsocket *** + dnl ***************************** + AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") + +- case "$host" in +- *-*-*freebsd*) +- dnl ***************************** +- dnl *** Checks for libinotify *** +- dnl ***************************** +- AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify") +- esac +- + dnl ******************************* + dnl *** Checks for MSG_NOSIGNAL *** + dnl ******************************* + AC_MSG_CHECKING(for MSG_NOSIGNAL) + AC_TRY_COMPILE([#include ], [ + int f = MSG_NOSIGNAL; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL]) + ], [ + # We'll have to use signals + AC_MSG_RESULT(no) + ]) + + dnl ***************************** + dnl *** Checks for IPPROTO_IP *** + dnl ***************************** + AC_MSG_CHECKING(for IPPROTO_IP) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IP; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ******************************* + dnl *** Checks for IPPROTO_IPV6 *** + dnl ******************************* + AC_MSG_CHECKING(for IPPROTO_IPV6) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IPV6; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ****************************** + dnl *** Checks for IPPROTO_TCP *** + dnl ****************************** + AC_MSG_CHECKING(for IPPROTO_TCP) + AC_TRY_COMPILE([#include ], [ +@@ -3572,100 +3564,131 @@ + # HAVE_MACH_TIMEBASE_INFO check already done above + # HAVE_FUTIMES check already done above + # HAVE_FUTIMENS check already done above + + ORIG_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror=sign-conversion" + + AC_MSG_CHECKING(for bind with unsigned addrlen) + AC_TRY_LINK([ + #include + ], [ + int fd; + struct sockaddr* addr; + socklen_t addrLen; + bind(fd, addr, addrLen); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(BIND_ADDRLEN_UNSIGNED, 1, [bind with unsigned addrlen]) + ], [ + AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING(for struct ipv6_mreq with unsigned ipv6mr_interface) + AC_TRY_LINK([ + #include + #include + ], [ + struct ipv6_mreq opt; + unsigned int index = 0; + opt.ipv6mr_interface = index; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(IPV6MR_INTERFACE_UNSIGNED, 1, [struct ipv6_mreq with unsigned ipv6mr_interface]) + ], [ + AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING(for inotify_rm_watch with unsigned wd) + AC_TRY_LINK([ + #include + ], [ + intptr_t fd; + uint32_t wd; + int result = inotify_rm_watch(fd, wd); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(INOTIFY_RM_WATCH_WD_UNSIGNED, 1, [inotify_rm_watch with unsigned wd]) + ], [ + AC_MSG_RESULT(no) + ]) ++ ++ case "$host" in ++ *-*-*freebsd*) ++ dnl ***************************** ++ dnl *** Checks for libinotify *** ++ dnl ***************************** ++ AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify") ++ AC_MSG_CHECKING(for METADATA_CFLAGS) ++ if test "x$ac_cv_lib_inotify_inotify_init" = "xyes" ; then ++ AC_DEFINE(HAVE_LIBINOTIFY, 1, [FreeBSD libinotify kqueue shim]) ++ dnl Needs to be done this way to avoid collision with various ++ dnl ports includign glib and llvm* ++ METADATA_CFLAGS="-I/usr/local/include" ++ AC_SUBST(METADATA_CFLAGS) ++ fi ++ dnl Workaround due to inotify_rm_watch check failing without -I ++ AC_MSG_CHECKING(for inotify_rm_watch with unsigned wd in libinotify) ++ AC_TRY_LINK([ ++ #include ++ ], [ ++ intptr_t fd; ++ uint32_t wd; ++ int result = inotify_rm_watch(fd, wd); ++ ],[ ++ AC_MSG_RESULT(yes) ++ AC_DEFINE(INOTIFY_RM_WATCH_WD_UNSIGNED, 1, [inotify_rm_watch with unsigned wd]) ++ ], [ ++ AC_MSG_RESULT(no) ++ ]) ++ ;; ++ esac + + CFLAGS="$ORIG_CFLAGS" + + AC_MSG_CHECKING(for shm_open that works well enough with mmap) + if test "x$ac_cv_func_shm_open" = "xno" -o "x$ac_cv_func_shm_open_working_with_mmap" = "xno" ; then + AC_MSG_RESULT(no) + elif test "x$cross_compiling" = "xyes"; then + AC_MSG_RESULT(cross compiling, assuming yes) + AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap]) + else + AC_TRY_RUN([ + #include + #include + #include + + int main () + { + #ifdef __PASE__ + /* IBM i doesn't implement this and returns SIGILL */ + return -1; + #endif + int fd = shm_open("/mono_configure_shm_open", O_CREAT | O_RDWR, 0777); + if (fd == -1) + return -1; + + shm_unlink("/mono_configure_shm_open"); + + // NOTE: PROT_EXEC and MAP_PRIVATE don't work well with shm_open + // on at least the current version of Mac OS X + + if (mmap(NULL, 1, PROT_EXEC, MAP_PRIVATE, fd, 0) == MAP_FAILED) + return -1; + + return 0; + } + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap]) + ], [ + AC_MSG_RESULT(no) + ]) + fi + + AC_MSG_CHECKING(for getpriority with int who) + AC_TRY_LINK([ + #include + ], [ + int which; + int who; + int result = getpriority(which, who); +@@ -4418,107 +4441,121 @@ + BTLS_PLATFORM=x86_64 + boehm_supported=false + ;; + openbsd*|freebsd*|kfreebsd-gnu*) + AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=x86_64 + ;; + mingw*|cygwin*) + BTLS_SUPPORTED=no + BTLS_PLATFORM=x86_64 + ;; + esac + ;; + sparc*-*-*) + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=SPARC64 + else + TARGET=SPARC + fi + arch_target=sparc; + ACCESS_UNALIGNED="no" + case $host_os in + linux*) ;; + *) + LIBC="libc.so" + INTL="libintl.so" + esac + if test x"$GCC" = xyes; then + # We don't support v8 cpus + CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9" + fi + if test x"$AR" = xfalse; then + AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.]) + fi + ;; + *-mingw*|*-*-cygwin*) + # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4) + have_visibility_hidden=no + INTL="intl" + case "$host" in + x86_64*mingw*) + # Old Boehm fails to compile for x86_64-mingw. + # It is trivial to fix, but just silently drop it. + boehm_supported=false + ;; + esac + ;; + macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \ + powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | \ +- powerpc-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* ) ++ powerpc*-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* ) + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=POWERPC64; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__" +- if ! (echo $CC | grep -q -- 'clang'); then +- CFLAGS="$CFLAGS -mminimal-toc" +- fi ++ AC_MSG_NOTICE([Checking for PowerPC ISA -mminimal-toc support]) ++ AX_CHECK_COMPILE_FLAG( ++ [-mminimal-toc], ++ [CFLAGS="$CFLAGS -mminimal-toc"], ++ [CFLAGS="$CFLAGS"] ++ ) ++ case "$host" in ++ powerpc*-*-freebsd*) ++ # We need to be aware if we are ELFv1 or v2 here ++ AC_MSG_NOTICE([Checking FreeBSD ELF version]) ++ if ! ( echo | cc -dM -E - | awk '/_CALL_ELF/ {print $NF}'); then ++ AC_DEFINE([POWERPC_ELF], 1, [PowerPC ELFv1]) ++ else ++ AC_DEFINE([POWERPC_ELFV2], 1, [PowerPC ELFv2]) ++ fi ++ ;; ++ esac + else + TARGET=POWERPC; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__" + fi + arch_target=ppc; + case $host_os in + aix*|os400*) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=powerpc + ;; + linux*) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=powerpc + ;; + esac + ;; + armv7k-*-darwin*) + TARGET=ARM; + TARGET_SYS=WATCHOS + arch_target=arm; + arm_fpu=VFP_HARD + ACCESS_UNALIGNED="no" + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + ;; + + arm*-darwin*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + ;; + arm*-linux*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + AOT_SUPPORTED="yes" + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=arm + AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no]) + case "$target" in + arm*-linux*-gnueabi) + BTLS_PLATFORM=armsoft + ;; + esac + ;; + arm*-netbsd*-eabi*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" +@@ -6441,103 +6478,103 @@ + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX + MONO_NATIVE_CCASFLAGS=$CCASFLAGS + # The system.native code uses _WASM_ to check for wasm + MONO_NATIVE_CPPFLAGS="$CPPFLAGS -D_WASM_" + MONO_NATIVE_CXXFLAGS=$CXXFLAGS + MONO_NATIVE_CFLAGS=$CFLAGS + MONO_NATIVE_LDFLAGS=$LDFLAGS + + mono_native=yes + mono_native_compat=no + MONO_NATIVE_PLATFORM=linux + + MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_LINUX" + elif case $host_os in aix*|os400*) true;; *) false;; esac; then + mono_native_text="AIX" + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX + MONO_NATIVE_CCASFLAGS=$CCASFLAGS + MONO_NATIVE_CPPFLAGS=$CPPFLAGS + MONO_NATIVE_CXXFLAGS=$CXXFLAGS + MONO_NATIVE_CFLAGS=$CFLAGS + dnl nosymbolic- is a hack in case -G for linking is used, as -G seems + dnl to change the way unresolved symbols work on library load in an + dnl incompatible manner. (as references to runtime functions are + dnl resolved later) Default params otherwise are that, so seems OK. + dnl Likewise, we don't seem to need to cover the entire runtime with + dnl it either, on both AIX and PASE. -brtl from -G does seem to spew + dnl Big Scary TOC Warnings (tm) from the linker, but it doesn't seem + dnl problematic with gcc's -mminimal-toc. + dnl ---- + dnl flock in AIX exists in libbsd (not the same as freedesktop.org + dnl libbsd) which Mono.Native needs. + dnl Because of the way that the library is built by default, unresolved + dnl references are kept and resolved at runtime. Often, the dependency + dnl chain means libbsd is loaded anyways, but not necessarily. It's + dnl better to explicitly link it, even though it has it shadows libc's + dnl ioctl with its own. (As for the other unresolved imports, those + dnl should be provided by the Mono runtime loaded.) + MONO_NATIVE_LDFLAGS="$LDFLAGS -lbsd -Wl,-bnosymbolic-" + + mono_native=yes + mono_native_compat=no + MONO_NATIVE_PLATFORM=aix + + MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_AIX" + elif case $host_os in freebsd*) true;; *) false;; esac; then + mono_native_text="FreeBSD" + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX +- MONO_NATIVE_CPPFLAGS=$CPPFLAGS ++ MONO_NATIVE_CPPFLAGS="$CPPFLAGS -I/usr/local/include" + MONO_NATIVE_CXXFLAGS=$CXXFLAGS +- MONO_NATIVE_CFLAGS=$CFLAGS ++ MONO_NATIVE_CFLAGS="$CFLAGS -I/usr/local/include" + MONO_NATIVE_LDFLAGS=$LDFLAGS + + mono_native=yes + mono_native_compat=no + MONO_NATIVE_PLATFORM=freebsd + AC_MSG_CHECKING([Mono.Native support]) + AC_MSG_RESULT(freebsd) + + MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_FREEBSD" + elif case $host_os in netbsd*) true;; *) false;; esac; then + mono_native_text="NetBSD" + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX + MONO_NATIVE_CPPFLAGS=$CPPFLAGS + MONO_NATIVE_CXXFLAGS=$CXXFLAGS + MONO_NATIVE_CFLAGS=$CFLAGS + MONO_NATIVE_LDFLAGS=$LDFLAGS + + mono_native=yes + mono_native_compat=no + MONO_NATIVE_PLATFORM=netbsd + AC_MSG_CHECKING([Mono.Native support]) + AC_MSG_RESULT(netbsd) + + MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_NETBSD" + elif case $host_os in haiku*) true;; *) false;; esac; then + mono_native_text="Haiku" + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX + MONO_NATIVE_CPPFLAGS=$CPPFLAGS + MONO_NATIVE_CXXFLAGS=$CXXFLAGS + MONO_NATIVE_CFLAGS=$CFLAGS + MONO_NATIVE_LDFLAGS=$LDFLAGS + + mono_native=yes + mono_native_compat=no + MONO_NATIVE_PLATFORM=haiku + AC_MSG_CHECKING([Mono.Native support]) + AC_MSG_RESULT(haiku) + + MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_HAIKU" + elif test x$platform_android = xyes; then + mono_native_text="Android" + MONO_NATIVE_CC=$CC + MONO_NATIVE_CXX=$CXX + MONO_NATIVE_CPPFLAGS=$CPPFLAGS + MONO_NATIVE_CXXFLAGS=$CXXFLAGS + MONO_NATIVE_CFLAGS=$CFLAGS + MONO_NATIVE_LDFLAGS=$LDFLAGS + MONO_NATIVE_LIBADD="../mini/$LIBMONO_LA" Index: head/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c =================================================================== --- head/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c +++ head/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c @@ -1,11 +0,0 @@ ---- mono/eglib/gfile-posix.c.orig 2018-01-10 08:03:25 UTC -+++ mono/eglib/gfile-posix.c -@@ -161,7 +161,7 @@ g_get_current_dir (void) - do { - buffer = g_realloc (buffer, s); - r = getcwd (buffer, s); -- fail = (r == NULL && errno == ERANGE); -+ fail = (r == NULL && (errno == ERANGE || errno == 0)); - if (fail) { - s <<= 1; - } Index: head/lang/mono6.8/files/patch-mono_metadata_Makefile.am =================================================================== --- head/lang/mono6.8/files/patch-mono_metadata_Makefile.am +++ head/lang/mono6.8/files/patch-mono_metadata_Makefile.am @@ -0,0 +1,11 @@ +--- mono/metadata/Makefile.am.orig 2020-05-20 16:09:20.183060000 +0000 ++++ mono/metadata/Makefile.am 2020-05-20 16:10:38.992083000 +0000 +@@ -143,7 +143,7 @@ + + lib_LTLIBRARIES = $(icall_table_libraries) $(ilgen_libraries) + +-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) $(SHARED_CFLAGS) ++AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) $(SHARED_CFLAGS) $(METADATA_CFLAGS) + + # + # Make sure any prefix changes are updated in the binaries too. Index: head/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c =================================================================== --- head/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c +++ head/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c @@ -1,26 +0,0 @@ ---- mono/mini/tramp-amd64.c.orig 2018-04-13 23:37:57 UTC -+++ mono/mini/tramp-amd64.c -@@ -363,7 +363,11 @@ mono_arch_create_generic_trampoline (Mon - } - for (i = 0; i < AMD64_XMM_NREG; ++i) - if (AMD64_IS_ARGUMENT_XREG (i)) -+#if defined(MONO_HAVE_SIMD_REG) - amd64_movdqu_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * sizeof(MonoContextSimdReg)), i); -+#else -+ amd64_movsd_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * sizeof(double)), i); -+#endif - - /* Check that the stack is aligned */ - amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, sizeof (mgreg_t)); -@@ -540,7 +544,11 @@ mono_arch_create_generic_trampoline (Mon - amd64_mov_reg_membase (code, i, AMD64_RBP, saved_regs_offset + (i * sizeof(mgreg_t)), sizeof(mgreg_t)); - for (i = 0; i < AMD64_XMM_NREG; ++i) - if (AMD64_IS_ARGUMENT_XREG (i)) -+#if defined(MONO_HAVE_SIMD_REG) - amd64_movdqu_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * sizeof(MonoContextSimdReg))); -+#else -+ amd64_movsd_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * sizeof(double))); -+#endif - - /* Restore stack */ - #if TARGET_WIN32 Index: head/lang/mono6.8/files/patch-mono_native_Makefile.am =================================================================== --- head/lang/mono6.8/files/patch-mono_native_Makefile.am +++ head/lang/mono6.8/files/patch-mono_native_Makefile.am @@ -0,0 +1,15 @@ +# Upstreamed for next release +# PR#19234 +--- mono/native/Makefile.am.orig 2020-03-16 13:42:24.386278000 -0400 ++++ mono/native/Makefile.am 2020-03-16 13:42:43.715070000 -0400 +@@ -159,10 +159,11 @@ + -I$(abs_top_srcdir)/external/corefx/src/Native/Unix/Common \ + -I$(abs_top_srcdir)/external/corefx/src/Native/Unix/System.Native \ + -I$(abs_top_srcdir)/external/corefx/src/Native/AnyOS/brotli/include \ + $(GLIB_CFLAGS) \ + $(SHARED_CFLAGS) \ ++ $(METADATA_CFLAGS) \ + -DBROTLI_BUILD_NO_RBIT \ + -Wno-typedef-redefinition + + endif # !ENABLE_MSVC_ONLY Index: head/lang/mono6.8/files/patch-mono_utils_mono-context.h =================================================================== --- head/lang/mono6.8/files/patch-mono_utils_mono-context.h +++ head/lang/mono6.8/files/patch-mono_utils_mono-context.h @@ -1,42 +0,0 @@ ---- mono/utils/mono-context.h.orig 2018-04-13 23:37:57 UTC -+++ mono/utils/mono-context.h -@@ -24,23 +24,30 @@ - - #if defined(TARGET_X86) - #if defined(__APPLE__) -+#define MONO_HAVE_SIMD_REG - typedef struct __darwin_xmm_reg MonoContextSimdReg; - #endif - #elif defined(TARGET_AMD64) - #if defined(__APPLE__) -+#define MONO_HAVE_SIMD_REG - typedef struct __darwin_xmm_reg MonoContextSimdReg; - #elif defined(__linux__) && defined(__GLIBC__) -+#define MONO_HAVE_SIMD_REG - typedef struct _libc_xmmreg MonoContextSimdReg; - #elif defined(HOST_WIN32) -+#define MONO_HAVE_SIMD_REG - #include - typedef __m128d MonoContextSimdReg; - #elif defined(HOST_ANDROID) -+#define MONO_HAVE_SIMD_REG - typedef struct _libc_xmmreg MonoContextSimdReg; - #elif defined(__linux__) -+#define MONO_HAVE_SIMD_REG - #include - typedef __m128d MonoContextSimdReg; - #endif - #elif defined(TARGET_ARM64) -+#define MONO_HAVE_SIMD_REG - typedef __uint128_t MonoContextSimdReg; - #endif - -@@ -255,7 +262,7 @@ typedef struct { - - typedef struct { - mgreg_t gregs [AMD64_NREG]; --#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__)) || defined(HOST_WIN32) -+#if defined(MONO_HAVE_SIMD_REG) - MonoContextSimdReg fregs [AMD64_XMM_NREG]; - #else - double fregs [AMD64_XMM_NREG]; Index: head/lang/mono6.8/files/patch-mono_utils_mono-threads.c =================================================================== --- head/lang/mono6.8/files/patch-mono_utils_mono-threads.c +++ head/lang/mono6.8/files/patch-mono_utils_mono-threads.c @@ -1,20 +0,0 @@ ---- mono/utils/mono-threads.c.orig 2018-04-13 23:37:57 UTC -+++ mono/utils/mono-threads.c -@@ -1316,7 +1316,7 @@ mono_thread_info_sleep (guint32 ms, gboo - } while (1); - } else { - int ret; --#if defined (__linux__) && !defined(HOST_ANDROID) -+#if defined (HAVE_CLOCK_NANOSLEEP) && !defined(HOST_ANDROID) - struct timespec start, target; - - /* Use clock_nanosleep () to prevent time drifting problems when nanosleep () is interrupted by signals */ -@@ -1346,7 +1346,7 @@ mono_thread_info_sleep (guint32 ms, gboo - memset (&rem, 0, sizeof (rem)); - ret = nanosleep (&req, &rem); - } while (ret != 0); --#endif /* __linux__ */ -+#endif /* HAVE_CLOCK_NANOSLEEP */ - } - - MONO_EXIT_GC_SAFE; Index: head/lang/mono6.8/files/patch-scripts_mono-heapviz =================================================================== --- head/lang/mono6.8/files/patch-scripts_mono-heapviz +++ head/lang/mono6.8/files/patch-scripts_mono-heapviz @@ -1,11 +0,0 @@ ---- scripts/mono-heapviz.orig 2018-01-18 17:41:54 UTC -+++ scripts/mono-heapviz -@@ -7,7 +7,7 @@ - - from __future__ import print_function - import sys, os --import Image, ImageDraw -+from PIL import Image, ImageDraw - from xml.sax import ContentHandler, make_parser - from xml.sax.handler import feature_namespaces - from optparse import OptionParser Index: head/lang/mono6.8/pkg-descr =================================================================== --- head/lang/mono6.8/pkg-descr +++ head/lang/mono6.8/pkg-descr @@ -6,4 +6,11 @@ Mono provides the necessary software to develop and run .NET client and server applications on BSD, Linux, Solaris, Mac OS X, Windows, and Unix. +SPECTRE MITIGATION: Mono 6.4+ introduces additional internal changes to +better protect against Spectre and Meltdown attacks for both compiled and +interpreted code during runtime. This can cause severe performance impacts +to applications in a number of scenarios, and is not enabled by default for +that reason. When used in high risk environments such as shared hosting, +it is strongly recommended to enable this option. + WWW: http://www.mono-project.com/ Index: head/lang/mono6.8/pkg-message =================================================================== --- head/lang/mono6.8/pkg-message +++ head/lang/mono6.8/pkg-message @@ -32,6 +32,19 @@ * Some process information are accessed through /proc (e.g. when using NUnit) and procfs(5) has to be mounted for these features to work: # echo "proc /proc procfs rw 0 0" >> /etc/fstab + +* Mono does not use the system certificates files. If you update + security/ca_root_nss separate from Mono, you must manually resync + from the PEM file using the Mono cert-sync tool as root. + # cert-sync /usr/local/share/certs/ca-root-nss.crt + Otherwise, certificates may fail validation within Mono. + +EOM +} +{ type: upgrade + message: <