lang/dotnet: Microsoft .NET programming framework

This commit is contained in:
Gleb Popov 2023-11-26 21:39:19 +03:00
parent 1c7a06b4e3
commit 48daa424f9
8 changed files with 4250 additions and 0 deletions

109
lang/dotnet/Makefile Normal file
View file

@ -0,0 +1,109 @@
PORTNAME= dotnet
DISTVERSIONPREFIX= v
DISTVERSION= ${DOTNETVERSION}.0
CATEGORIES= lang devel
MASTER_SITES= https://github.com/dotnet/dotnet/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/release.json?dummy=/:dotnetmanifest \
LOCAL/arrowd/dotnet/:bootstrap
DISTFILES= release.json-${PORTVERSION}:dotnetmanifest \
${BOOTSTRAP_SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX}:bootstrap \
${BOOTSTRAP_SDK_DISTNAME}${EXTRACT_SUFX}:bootstrap
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
BUILD_DEPENDS= bash:shells/bash \
cmake:devel/cmake-core \
git:devel/git \
ggrep:textproc/gnugrep \
terminfo-db>0:misc/terminfo-db
LIB_DEPENDS= libicuuc.so:devel/icu \
libinotify.so:devel/libinotify \
libunwind.so:devel/libunwind
RUN_DEPENDS= terminfo-db>0:misc/terminfo-db
USES= autoreconf:build gssapi:mit llvm:noexport nodejs pkgconfig \
python:build,3.9+ shebangfix ssl
USE_GITHUB= yes
SHEBANG_FILES= src/diagnostics/src/Tools/dotnet-trace/*.sh \
src/source-build-externals/src/azure-activedirectory-identitymodel-extensions-for-dotnet/updateAssemblyInfo.sh
BINARY_ALIAS= grep=${LOCALBASE}/bin/ggrep
DOTNET_ENV= PYTHON=${PYTHON_CMD}
DIST_SUBDIR= dotnet
BOOTSTRAP_DOTNETVERSION= 8.0
BOOTSTRAP_SDKVERSION= ${BOOTSTRAP_DOTNETVERSION}.100
BOOTSTRAP_SDKVERSIONSUFFIX= -rtm.23551.1
BOOTSTRAP_SOURCEBUILT_ARTIFACTS_DISTNAME= Private.SourceBuilt.Artifacts.${BOOTSTRAP_SDKVERSION}${BOOTSTRAP_SDKVERSIONSUFFIX}.freebsd.13-x64
BOOTSTRAP_SDK_DISTNAME= dotnet-sdk-${BOOTSTRAP_SDKVERSION}-freebsd-x64
DOTNETVERSION= 8.0
SDKVERSION= ${DOTNETVERSION}.100
SDKVERSIONSUFFIX= -rtm.23551.1
SOURCEBUILT_ARTIFACTS_DISTNAME= Private.SourceBuilt.Artifacts.${SDKVERSION}${SDKVERSIONSUFFIX}.freebsd.13-x64
SDK_DISTNAME= dotnet-sdk-${SDKVERSION}-freebsd-x64
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 1400000
LIB_DEPENDS+= libcrypto.so.111:misc/compat13x
.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
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 \
-- \
-maxcpucount:${MAKE_JOBS_NUMBER}
do-install:
${MKDIR} ${STAGEDIR}${PREFIX}/dotnet
${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${WRKSRC}/artifacts/x64/Release/${SDK_DISTNAME}${EXTRACT_SUFX} -C ${STAGEDIR}${PREFIX}/dotnet ${EXTRACT_AFTER_ARGS}
${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/dotnet/dotnet
${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/dotnet
${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/sdk/${SDKVERSION}/AppHostTemplate/apphost
${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/packs/Microsoft.NETCore.App.Host.freebsd-x64/${DISTVERSION}/runtimes/freebsd-x64/native/apphost
${STRIP_CMD} ${STAGEDIR}${PREFIX}/dotnet/packs/Microsoft.NETCore.App.Host.freebsd-x64/${DISTVERSION}/runtimes/freebsd-x64/native/singlefilehost
${FIND} ${STAGEDIR}${PREFIX}/dotnet -name "*.so" -exec ${STRIP_CMD} -s "{}" ";"
${RLN} ${STAGEDIR}${PREFIX}/dotnet/dotnet ${STAGEDIR}${PREFIX}/bin/dotnet
bootstrap-makesum:
@cd ${WRKSRC}/artifacts/x64/Release && sha256 ${SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX}
@${ECHO_CMD} -n "SIZE (${SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX}) = "
@${STAT} -f %z ${WRKSRC}/artifacts/x64/Release/${SOURCEBUILT_ARTIFACTS_DISTNAME}${EXTRACT_SUFX}
@cd ${WRKSRC}/artifacts/x64/Release && sha256 ${SDK_DISTNAME}${EXTRACT_SUFX}
@${ECHO_CMD} -n "SIZE (${SDK_DISTNAME}${EXTRACT_SUFX}) = "
@${STAT} -f %z ${WRKSRC}/artifacts/x64/Release/${SDK_DISTNAME}${EXTRACT_SUFX}
@${ECHO_CMD}
.include <bsd.port.post.mk>

9
lang/dotnet/distinfo Normal file
View file

@ -0,0 +1,9 @@
TIMESTAMP = 1703335237
SHA256 (dotnet/release.json-8.0.0) = dab198858ac1c42ca7157b0d629bc4593e7b946b41c84c176713bbe31d32acbc
SIZE (dotnet/release.json-8.0.0) = 241
SHA256 (dotnet/Private.SourceBuilt.Artifacts.8.0.100-rtm.23551.1.freebsd.13-x64.tar.gz) = b91acf8ac130274fb40110f6af1d92f2348613f8cb0943b8b87f853351c8d6d2
SIZE (dotnet/Private.SourceBuilt.Artifacts.8.0.100-rtm.23551.1.freebsd.13-x64.tar.gz) = 1162274049
SHA256 (dotnet/dotnet-sdk-8.0.100-freebsd-x64.tar.gz) = d6118ff2cb9ded82eeeb976f3001bdea4ea2904e276b27ef526f458059e04149
SIZE (dotnet/dotnet-sdk-8.0.100-freebsd-x64.tar.gz) = 385932876
SHA256 (dotnet/dotnet-dotnet-v8.0.0_GH0.tar.gz) = 84f967761223cfbb287404eae959c2dcd952639d35724bfbacd63edb6ac57c5a
SIZE (dotnet/dotnet-dotnet-v8.0.0_GH0.tar.gz) = 282103151

View file

@ -0,0 +1,37 @@
--- src/installer/src/redist/targets/GenerateBundledVersions.targets.orig 2023-11-01 21:55:24 UTC
+++ src/installer/src/redist/targets/GenerateBundledVersions.targets
@@ -160,7 +160,7 @@
win-x86;
" />
- <NetCore31RuntimePackRids Include="@(NetCore30RuntimePackRids)"/>
+ <NetCore31RuntimePackRids Include="@(NetCore30RuntimePackRids);freebsd-x64"/>
<Net50AppHostRids Include="
@(NetCore31RuntimePackRids);
@@ -281,7 +281,7 @@
linux-arm64;
" />
- <Net50Crossgen2SupportedRids Include="linux-musl-x64;linux-x64;win-x64" />
+ <Net50Crossgen2SupportedRids Include="linux-musl-x64;linux-x64;win-x64;freebsd-x64" />
<Net60Crossgen2SupportedRids Include="
@(Net50Crossgen2SupportedRids);
@@ -317,6 +317,7 @@
@(Net70ILCompilerSupportedRids);
osx-x64;
osx-arm64;
+ freebsd-x64;
" />
<NativeAOTRuntimePackRids Include="
@@ -335,7 +336,7 @@
"
/>
- <AspNetCore31RuntimePackRids Include="@(AspNetCore30RuntimePackRids)" />
+ <AspNetCore31RuntimePackRids Include="@(AspNetCore30RuntimePackRids);freebsd-x64" />
<AspNetCore50RuntimePackRids Include="@(AspNetCore31RuntimePackRids);linux-musl-arm;win-arm64" />
<AspNetCore60RuntimePackRids Include="@(AspNetCore50RuntimePackRids);osx-arm64;linux-s390x" />
<AspNetCore70RuntimePackRids Include="@(AspNetCore60RuntimePackRids);linux-ppc64le" />

View file

@ -0,0 +1,62 @@
--- src/runtime/src/coreclr/gc/unix/gcenv.unix.cpp.orig 2023-11-01 21:55:24 UTC
+++ src/runtime/src/coreclr/gc/unix/gcenv.unix.cpp
@@ -1171,7 +1171,34 @@ uint64_t GetAvailablePhysicalMemory()
uint64_t available = 0;
// Get the physical memory available.
-#ifndef __APPLE__
+#if defined(__APPLE__)
+ vm_size_t page_size;
+ mach_port_t mach_port;
+ mach_msg_type_number_t count;
+ vm_statistics_data_t vm_stats;
+ mach_port = mach_host_self();
+ count = sizeof(vm_stats) / sizeof(natural_t);
+ if (KERN_SUCCESS == host_page_size(mach_port, &page_size))
+ {
+ if (KERN_SUCCESS == host_statistics(mach_port, HOST_VM_INFO, (host_info_t)&vm_stats, &count))
+ {
+ available = (int64_t)vm_stats.free_count * (int64_t)page_size;
+ }
+ }
+ mach_port_deallocate(mach_task_self(), mach_port);
+#elif defined(__FreeBSD__)
+ size_t inactive_count = 0, laundry_count = 0, free_count = 0;
+ size_t sz = sizeof(inactive_count);
+ sysctlbyname("vm.stats.vm.v_inactive_count", &inactive_count, &sz, NULL, 0);
+
+ sz = sizeof(laundry_count);
+ sysctlbyname("vm.stats.vm.v_laundry_count", &laundry_count, &sz, NULL, 0);
+
+ sz = sizeof(free_count);
+ sysctlbyname("vm.stats.vm.v_free_count", &free_count, &sz, NULL, 0);
+
+ available = (inactive_count + laundry_count + free_count) * sysconf(_SC_PAGESIZE);
+#else // Linux
static volatile bool tryReadMemInfo = true;
if (tryReadMemInfo)
@@ -1187,22 +1214,7 @@ uint64_t GetAvailablePhysicalMemory()
// Fall back to getting the available pages using sysconf.
available = sysconf(SYSCONF_PAGES) * sysconf(_SC_PAGE_SIZE);
}
-#else // __APPLE__
- vm_size_t page_size;
- mach_port_t mach_port;
- mach_msg_type_number_t count;
- vm_statistics_data_t vm_stats;
- mach_port = mach_host_self();
- count = sizeof(vm_stats) / sizeof(natural_t);
- if (KERN_SUCCESS == host_page_size(mach_port, &page_size))
- {
- if (KERN_SUCCESS == host_statistics(mach_port, HOST_VM_INFO, (host_info_t)&vm_stats, &count))
- {
- available = (int64_t)vm_stats.free_count * (int64_t)page_size;
- }
- }
- mach_port_deallocate(mach_task_self(), mach_port);
-#endif // __APPLE__
+#endif
return available;
}

View file

@ -0,0 +1,10 @@
--- src/runtime/src/libraries/System.Runtime/tests/System/GCTests.cs.orig 2023-11-01 21:55:24 UTC
+++ src/runtime/src/libraries/System.Runtime/tests/System/GCTests.cs
@@ -818,7 +818,6 @@ namespace System.Tests
private static bool IsNotArmProcessAndRemoteExecutorSupported => PlatformDetection.IsNotArmProcess && RemoteExecutor.IsSupported;
- [ActiveIssue("https://github.com/dotnet/runtime/issues/64935", TestPlatforms.FreeBSD)]
[ActiveIssue("https://github.com/dotnet/runtime/issues/73167", TestRuntimes.Mono)]
[ConditionalFact(nameof(IsNotArmProcessAndRemoteExecutorSupported))] // [ActiveIssue("https://github.com/dotnet/runtime/issues/29434")]
public static void GetGCMemoryInfo()

View file

@ -0,0 +1,11 @@
--- src/runtime/src/native/libs/System.Native/pal_networkstatistics.c.orig 2023-11-01 21:55:24 UTC
+++ src/runtime/src/native/libs/System.Native/pal_networkstatistics.c
@@ -58,6 +58,8 @@
#elif HAVE_IOS_NETINET_IP_VAR_H
#include "ios/netinet/ip_var.h"
#endif
+#include <sys/callout.h>
+#include <sys/osd.h>
#include <netinet/tcp_var.h>
#include <netinet/tcp.h>
#if HAVE_TCP_FSM_H

4
lang/dotnet/pkg-descr Normal file
View file

@ -0,0 +1,4 @@
.NET is an open source developer platform, created by Microsoft, for building
many different types of applications. It provides a standard set of base class
libraries and APIs that are common to all .NET applications. .NET apps can be
written in such languages as C#, F#, or Visual Basic.

4008
lang/dotnet/pkg-plist Normal file

File diff suppressed because it is too large Load diff