diff --git a/lang/dotnet-runtime/Makefile b/lang/dotnet-runtime/Makefile index 60c84558eaf3..4dc4826ccdda 100644 --- a/lang/dotnet-runtime/Makefile +++ b/lang/dotnet-runtime/Makefile @@ -1,50 +1,51 @@ PORTNAME= dotnet-host DISTVERSIONPREFIX= v DISTVERSION= 9.0.0 +PORTREVISION= 1 CATEGORIES= lang devel MAINTAINER= arrowd@FreeBSD.org COMMENT= Host runtime binary for the .NET platform WWW= https://dot.net LICENSE= MIT NOT_FOR_ARCHS= i386 NOT_FOR_ARCHS_REASON= eng/native/functions.cmake:7: 'i386' is an unsupported architecture. BUILD_DEPENDS= bash:shells/bash USES= cmake:indirect llvm:noexport ssl USE_GITHUB= yes GH_ACCOUNT= dotnet GH_PROJECT= runtime PLIST_FILES= bin/dotnet \ dotnet/LICENSE.TXT \ dotnet/THIRD-PARTY-NOTICES.TXT \ dotnet/dotnet DOTNET_ARCH= ${ARCH:S|amd64|x64|:C|aarch64|arm64|} .if defined(WITH_DEBUG) BUILD_TYPE= Debug .else BUILD_TYPE= Release .endif do-build: cd ${WRKSRC} && ${SETENVI} ${MAKE_ENV} src/native/corehost/build.sh -ci -c ${BUILD_TYPE} post-build: ${ELFCTL} -e +noaslr ${WRKSRC}/artifacts/bin/freebsd-${DOTNET_ARCH}.${BUILD_TYPE}/corehost/dotnet do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/dotnet ${INSTALL_PROGRAM} ${WRKSRC}/artifacts/bin/freebsd-${DOTNET_ARCH}.${BUILD_TYPE}/corehost/dotnet \ ${STAGEDIR}${PREFIX}/dotnet/ ${INSTALL_DATA} ${WRKSRC}/LICENSE.TXT ${WRKSRC}/THIRD-PARTY-NOTICES.TXT \ ${STAGEDIR}${PREFIX}/dotnet/ ${RLN} ${STAGEDIR}${PREFIX}/dotnet/dotnet ${STAGEDIR}${PREFIX}/bin/dotnet .include diff --git a/lang/dotnet-runtime/files/patch-bundled-libunwind b/lang/dotnet-runtime/files/patch-bundled-libunwind new file mode 100644 index 000000000000..224365ac72d0 --- /dev/null +++ b/lang/dotnet-runtime/files/patch-bundled-libunwind @@ -0,0 +1,42 @@ +Use bundled libunwind until at least + +https://github.com/libunwind/libunwind/issues/715 + +is fixed. It is also believed that using bundled libunwind may help against +random crashes on amd64 too. + +--- src/native/corehost/apphost/static/CMakeLists.txt.orig ++++ src/native/corehost/apphost/static/CMakeLists.txt +@@ -244,7 +244,7 @@ endif(CLR_CMAKE_TARGET_APPLE) + + # On *BSD, we always use the libunwind that's part of the OS + if(CLR_CMAKE_TARGET_FREEBSD) +- set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1) ++ set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0) + endif() + + if(CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_APPLE) + +--- src/coreclr/pal/src/CMakeLists.txt.orig ++++ src/coreclr/pal/src/CMakeLists.txt +@@ -1,7 +1,7 @@ + if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU) + # On OSX and *BSD, we use the libunwind that's part of the OS + # On Haiku, we used a special port of libunwind +- set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1) ++ set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0) + endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU) + + if(NOT DEFINED ENV{ROOTFS_DIR}) + +--- src/native/external/libunwind.cmake.orig ++++ src/native/external/libunwind.cmake +@@ -96,7 +96,7 @@ elseif(CLR_CMAKE_TARGET_FREEBSD) + set(libunwind_la_SOURCES_arm_os arm/Gos-freebsd.c) + set(libunwind_la_SOURCES_arm_os_local arm/Los-freebsd.c) + set(libunwind_la_SOURCES_aarch64_os aarch64/Gos-freebsd.c) +- set(libunwind_la_SOURCES_aarch64_os_local aarch64/Los-freebsd.c) ++ set(libunwind_la_SOURCES_aarch64_os_local aarch64/Los-freebsd.c aarch64/setcontext.S) + list(APPEND libunwind_coredump_la_SOURCES coredump/_UCD_access_reg_freebsd.c) + elseif(CLR_CMAKE_HOST_SUNOS) + set(libunwind_la_SOURCES_os ${libunwind_la_SOURCES_os_solaris}) diff --git a/lang/dotnet/Makefile b/lang/dotnet/Makefile index be2f965dde8c..03aa7e3bec90 100644 --- a/lang/dotnet/Makefile +++ b/lang/dotnet/Makefile @@ -1,115 +1,115 @@ PORTNAME= dotnet DISTVERSIONPREFIX= v DISTVERSION= ${DOTNETVERSION}.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= lang devel MASTER_SITES= https://github.com/dotnet/dotnet/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/release.json?dummy=/:dotnetmanifest \ https://github.com/sec/dotnet-core-freebsd-source-build/releases/download/9.0.0-rc.2-native/:bootstrap DISTFILES= release.json-${PORTVERSION}:dotnetmanifest \ ${BOOTSTRAP_SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX}:bootstrap \ ${BOOTSTRAP_SDK_DISTNAME}${EXTRACT_SUFX}:bootstrap DIST_SUBDIR= dotnet EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= arrowd@FreeBSD.org COMMENT= Open-source developer platform and a cross-platform runtime for cloud, mobile, desktop, and IoT apps WWW= https://dot.net LICENSE= MIT ONLY_FOR_ARCHS= aarch64 amd64 BUILD_DEPENDS= bash:shells/bash \ cmake:devel/cmake-core \ git:devel/git \ ggrep:textproc/gnugrep \ terminfo-db>0:misc/terminfo-db LIB_DEPENDS= libbrotlienc.so:archivers/brotli \ libicuuc.so:devel/icu \ libinotify.so:devel/libinotify \ libunwind.so:devel/libunwind RUN_DEPENDS= terminfo-db>0:misc/terminfo-db \ dotnet:lang/dotnet-runtime USES= autoreconf:build gssapi:mit llvm:noexport pkgconfig \ python:build,3.9+ shebangfix ssl USE_GITHUB= yes SHEBANG_FILES= src/diagnostics/src/Tools/dotnet-trace/*.sh BINARY_ALIAS= grep=${LOCALBASE}/bin/ggrep DOTNET_ENV= PYTHON=${PYTHON_CMD} BOOTSTRAP_DOTNETVERSION= 9.0 BOOTSTRAP_SDKVERSION= ${BOOTSTRAP_DOTNETVERSION}.100 BOOTSTRAP_SDKVERSIONSUFFIX= -rc.2.24474.1 BOOTSTRAP_SDKVERSIONBINSUFFIX= -rc.2.24474.11 BOOTSTRAP_SOURCEBUILT_ARTIFACTS_DISTNAME= Private.SourceBuilt.Artifacts.${BOOTSTRAP_SDKVERSION}${BOOTSTRAP_SDKVERSIONSUFFIX}.freebsd.13-${DOTNET_ARCH} BOOTSTRAP_SDK_DISTNAME= dotnet-sdk-${BOOTSTRAP_SDKVERSION}${BOOTSTRAP_SDKVERSIONBINSUFFIX}-freebsd-${DOTNET_ARCH} DOTNETVERSION= 9.0 SDKVERSION= ${DOTNETVERSION}.100 SDKVERSIONSUFFIX= -rtm.24529.1 SDK_DISTNAME= dotnet-sdk-${SDKVERSION}-${SDK_RID} SDK_RID= freebsd.${_OSVERSION_MAJOR}-${DOTNET_ARCH} DOTNET_ARCH= ${ARCH:S|amd64|x64|:C|aarch64|arm64|} PLIST_SUB= DOTNET_ARCH=${DOTNET_ARCH} FULL_DOTNETVERSION=${PORTVERSION} \ DOTNETVERSION=${DOTNETVERSION} \ SDKVERSION=${SDKVERSION} SDKVERSIONSUFFIX=${SDKVERSIONSUFFIX} \ SDK_RID=${SDK_RID} .include .if ${ARCH} == amd64 PLIST_SUB+= VXSORT= .else PLIST_SUB+= VXSORT="@comment " .endif post-extract: ${CP} ${DISTDIR}/${DIST_SUBDIR}/release.json-${PORTVERSION} ${WRKSRC}/release.json @${MKDIR} ${WRKDIR}/packages ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \ ${DISTDIR}/${DIST_SUBDIR}/${BOOTSTRAP_SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX} \ -C ${WRKDIR}/packages \ ${EXTRACT_AFTER_ARGS} @${MKDIR} ${WRKDIR}/bootstrap_sdk ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \ ${DISTDIR}/${DIST_SUBDIR}/${BOOTSTRAP_SDK_DISTNAME}${EXTRACT_SUFX} \ -C ${WRKDIR}/bootstrap_sdk \ ${EXTRACT_AFTER_ARGS} ${ELFCTL} -e +noaslr ${WRKDIR}/bootstrap_sdk/dotnet post-patch: ${REINPLACE_CMD} -e 's|linux-${DOTNET_ARCH}|freebsd-${DOTNET_ARCH}|g' \ ${WRKDIR}/bootstrap_sdk/sdk/${BOOTSTRAP_SDKVERSION}${BOOTSTRAP_SDKVERSIONBINSUFFIX}/Microsoft.NETCoreSdk.BundledVersions.props do-build: cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${DOTNET_ENV} ./build.sh \ --release-manifest release.json \ --clean-while-building \ --with-sdk ${WRKDIR}/bootstrap_sdk \ --with-packages ${WRKDIR}/packages \ --source-build \ -- \ -maxcpucount:${MAKE_JOBS_NUMBER} do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/dotnet ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${WRKSRC}/artifacts/assets/Release/${SDK_DISTNAME}${EXTRACT_SUFX} -C ${STAGEDIR}${PREFIX}/dotnet ${EXTRACT_AFTER_ARGS} ${FIND} ${WRKSRC}/artifacts/packages/Release -name "*freebsd*.nupkg" -exec \ ${INSTALL_DATA} {} ${STAGEDIR}${PREFIX}/dotnet/library-packs/ \; ${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/sdk/${SDKVERSION}/AppHostTemplate/apphost ${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/packs/Microsoft.NETCore.App.Host.${SDK_RID}/${DISTVERSION}/runtimes/${SDK_RID}/native/apphost ${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/packs/Microsoft.NETCore.App.Host.${SDK_RID}/${DISTVERSION}/runtimes/${SDK_RID}/native/singlefilehost ${FIND} ${STAGEDIR}${PREFIX}/dotnet -name "*.so" -exec ${STRIP_CMD} -s "{}" ";" ${RLN} ${STAGEDIR}${PREFIX}/dotnet/dotnet ${STAGEDIR}${PREFIX}/bin/dotnet .include diff --git a/lang/dotnet/files/patch-bundled-libunwind b/lang/dotnet/files/patch-bundled-libunwind new file mode 100644 index 000000000000..72082263884c --- /dev/null +++ b/lang/dotnet/files/patch-bundled-libunwind @@ -0,0 +1,42 @@ +Use bundled libunwind until at least + +https://github.com/libunwind/libunwind/issues/715 + +is fixed. It is also believed that using bundled libunwind may help against +random crashes on amd64 too. + +--- src/runtime/src/native/corehost/apphost/static/CMakeLists.txt.orig ++++ src/runtime/src/native/corehost/apphost/static/CMakeLists.txt +@@ -244,7 +244,7 @@ endif(CLR_CMAKE_TARGET_APPLE) + + # On *BSD, we always use the libunwind that's part of the OS + if(CLR_CMAKE_TARGET_FREEBSD) +- set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1) ++ set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0) + endif() + + if(CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_APPLE) + +--- src/runtime/src/coreclr/pal/src/CMakeLists.txt.orig ++++ src/runtime/src/coreclr/pal/src/CMakeLists.txt +@@ -1,7 +1,7 @@ + if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU) + # On OSX and *BSD, we use the libunwind that's part of the OS + # On Haiku, we used a special port of libunwind +- set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1) ++ set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0) + endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU) + + if(NOT DEFINED ENV{ROOTFS_DIR}) + +--- src/runtime/src/native/external/libunwind.cmake.orig ++++ src/runtime/src/native/external/libunwind.cmake +@@ -96,7 +96,7 @@ elseif(CLR_CMAKE_TARGET_FREEBSD) + set(libunwind_la_SOURCES_arm_os arm/Gos-freebsd.c) + set(libunwind_la_SOURCES_arm_os_local arm/Los-freebsd.c) + set(libunwind_la_SOURCES_aarch64_os aarch64/Gos-freebsd.c) +- set(libunwind_la_SOURCES_aarch64_os_local aarch64/Los-freebsd.c) ++ set(libunwind_la_SOURCES_aarch64_os_local aarch64/Los-freebsd.c aarch64/setcontext.S) + list(APPEND libunwind_coredump_la_SOURCES coredump/_UCD_access_reg_freebsd.c) + elseif(CLR_CMAKE_HOST_SUNOS) + set(libunwind_la_SOURCES_os ${libunwind_la_SOURCES_os_solaris})