Index: Makefile =================================================================== --- Makefile +++ Makefile @@ -2,57 +2,54 @@ # $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= prj+ports@rootwyrm.com COMMENT= Open source implementation of .NET Development Framework LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc +.if defined(QEMU_EMULATING) && "${QEMU_EMULATING}" == "1" +BROKEN= fails to build under qemu: Roslyn requires more functional POSIX implementation +.endif +NOT_FOR_ARCHS= armeb 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 +LIB_DEPENDS= libinotify.so:devel/libinotify \ + libiconv.so:converters/libiconv +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 @@ -64,32 +61,62 @@ OPTIONS_SLAVE= MONOLITE .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} +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 +.include + +OPTIONS_DEFINE= MONOLITE BIGARRAY NINJA NLS ODBC SPECTRE X11 MONODEV +OPTIONS_DEFAULT= MONOLITE NLS X11 +OPTIONS_SUB= yes + +BIGARRAY_DESC= Enable allocating arrays greater than Int32.MaxValue +BIGARRAY_CONFIGURE_ENABLE= big-arrays + +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 + +X11_USES= display:test +X11_CONFIGURE_WITH= x +X11_RUN_DEPENDS= pango>0:x11-toolkits/pango \ + libgdiplus>0:x11-toolkits/libgdiplus + +MONODEV_DESC= Build for Mono development (disables crash privacy) +.if ${PORT_OPTIONS:MMONODEV} +CONFIGURE_ARGS+=--enable-icall-symbol-map --enable-icall-export --with-crash_privacy=no +.endif + +SPECTRE_DESC= Enable internal Mono Spectre mitigations (SEE pkg-descr) +.if ${PORT_OPTIONS:MSPECTRE} +CONFIGURE_ARGS+=--with-spectre-mitigation=yes +.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 + +.if ${ARCH} == "powerpc64" || ${ARCH} == "powerpc" +PLIST+= ${.CURDIR}/pkg-plist.powerpc +.endif + +.include Index: distinfo =================================================================== --- distinfo +++ 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-8AF7738D-0093-49BA-8C4B-C96C913FCE0F-latest.tar.gz) = 7a74165a98f63c5ce75e889ee688c1df03aaf943668d6e37357330c61b260218 +SIZE (monolite-linux-8AF7738D-0093-49BA-8C4B-C96C913FCE0F-latest.tar.gz) = 5356784 Index: files/patch-boringssl =================================================================== --- files/patch-boringssl +++ 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: files/patch-mono_configure.ac =================================================================== --- files/patch-mono_configure.ac +++ 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: files/patch-mono_metadata_Makefile.am =================================================================== --- files/patch-mono_metadata_Makefile.am +++ 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: files/patch-mono_native_Makefile.am =================================================================== --- files/patch-mono_native_Makefile.am +++ 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: pkg-descr =================================================================== --- pkg-descr +++ 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: pkg-message =================================================================== --- pkg-message +++ 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: <