diff --git a/testing/dotnet31-build/APKBUILD b/testing/dotnet31-build/APKBUILD index 0142ee05447..d23d7bc03e5 100644 --- a/testing/dotnet31-build/APKBUILD +++ b/testing/dotnet31-build/APKBUILD @@ -8,8 +8,8 @@ # pkgname=dotnet31-build -pkgver=3.1.417 -pkgrel=1 +pkgver=3.1.418 +pkgrel=0 # Tag of tarball generator. This may change from usual due to mistakes from upstream _installertag="v$pkgver-SDK" @@ -33,12 +33,10 @@ _patches=" build_ignore-warnings.patch build_musl-build.patch cli_add-zsh-compdef-completion-script.patch - coreclr_non-portable-distrorid-fix-alpine.patch coreclr_fix-musl-123.patch core-sdk_generate-layout-core-setup-blob-path-fix.patch core-setup_clang13-no-werror.patch core-setup_rid-plat-generation-on-alpine-fix.patch - corefx_add-alpine-315-rid.patch corefx_add-alpine-316-rid.patch corefx_clang13-no-werror.patch corefx_fix-build-clang13.patch @@ -329,19 +327,17 @@ artifacts() { } sha512sums=" -b7299e101c636be75a514d3fde459ab023b02e268053693655f874fd9450077689994614d3faa675b0a542577e8fc962e9759d8f756f4ef2580849f201079e06 source-build-v3.1.417-SDK.tar.gz +9da463732a077dcbc84deccd6b0f8a6c4472800e2f4affc24a5c9eb5f6983fc6adeac8e15eda180b9474b2f2c7fd5a4a73ed5d4e41e2a5abec49cff6bc79e4c0 source-build-v3.1.418-SDK.tar.gz 9d7ae29c311cd9550389225cab891df359385e098aaccb8100c77832ea7b7b1f6a7984d811cb1f45bd323182149246c33f2016b4ee85d97ee9b29243acc644bc source-build-reference-packages-045b2888ccfaf4c203c945a09b3f41f0e6393d1c.tar.gz 1ef3cb59231b7462167f782cbfcacee4a7bc7d73ec635de4ea3f4510cc6d46c5548ce2ec2ce3d3943bf6d1c29cb288dc1c82f1b22fe1c61fb6013e2df728467e application-insights_fix-net40-location.patch f945552c083828e80031bdae584514aa8e7eb64544cc1fc3ca658a4162303f2a1caf076f44bc567c34ed2cf4c42323eaaafae0719adf9855756af125a566e99b build_darc-fix-alpine.patch bd28775f37c9d448eab52922d0b8e0a6a32a3e16f772337850c48bd886e0302f97423b7b58dbc010c30764772f0bc00115ace72422dd12f447a5282ae62da4b3 build_ignore-warnings.patch e2a63a9c262a95698eba5639a32eb8ba968a3d4c1fb70ea9890f3915e9923190a4aabed0ef74d64cb5199ee9d06c77736d36861ed8418ab8638552763c2c58b5 build_musl-build.patch 55afa9c74be6f5a87f1ff5aa44caad094cf620eb4388f6407218acf3d58a878f5565a0e875e95c3dbe0efca1879c120ee4b8076c521bfc9d6069a652c4a4fdd8 cli_add-zsh-compdef-completion-script.patch -dcbb3824acb432739b08d329a5b2f95a32d806bdb4a11d3cdd0245724e6ee92ee85bbf30f5a0f6607598f5252cd9cdaf92cea5101d33b4bf5161b7b22b853c0e coreclr_non-portable-distrorid-fix-alpine.patch -934c022c7464e725bbe55c230b49959a834d629db45cf277eba3562292fcf1cf8901fa9dba16a3e238e6234b2897ce5526e7cf77361f4236798b595d246571af coreclr_fix-musl-123.patch +16181c48f9851da9cebab8f988ca8da4afd25c23c4f60567ef1fdec6b99da9dc2f77f2eeac4dbb919ec73bb12c24bea316e0dcb46d2c4c96913d904a236ed0f6 coreclr_fix-musl-123.patch 5dffe94647daebd0a56ffd63db7f7f64ac7c4b279aa7189396d792fe4143989a91ffdb86f687dea3caa2475ac2ad43b95abcddacd175fef392bd24b52c957964 core-sdk_generate-layout-core-setup-blob-path-fix.patch f485faa18ae5884c35c6f672f3aec174628239a6137835b8db0647eec35c6b0bab042aa34b1b84631845944e0b86386ab64667d5d287d4de098c22957eae6063 core-setup_clang13-no-werror.patch 8f2de7774a62c846a3c5806a2a6fa651930f30dc91f06fac7a8dc9032cb1fb8bbff6bdd833fc0767effcd35751ee43a4ca059fced926f2cd9f970c88dd7271eb core-setup_rid-plat-generation-on-alpine-fix.patch -2fd67942f2f93e950e5977296b553ebbd9316f9e9be380a74673e18836bacebfa005cab0d6e8f02d1dd4a67a92d6d526522393dd2fa8b7bc22f1165af87b7dac corefx_add-alpine-315-rid.patch 141dee507f9c2947997d940278edc908ea76272bc320189c0d24cd219f466f48c6b072655dca8f2d5d681ce93be547c28edc2e4852f3c12c729812c9616d74d1 corefx_add-alpine-316-rid.patch e1dc0bb0112d116812646098565465ce863c42545a4c047806a73fbaf41202adc16917c6755874093b32b68bce2dfaa07e27fa63c34f02f28cda721933f63acb corefx_clang13-no-werror.patch 44edb976e75239d0133ea92a98af23e93e0de02022192738448c554d59391f15bc2a50e7d059696a8caebb6a0233c389fd0edb21b129a4df6b173889b198b4c5 corefx_fix-build-clang13.patch diff --git a/testing/dotnet31-build/coreclr_fix-musl-123.patch b/testing/dotnet31-build/coreclr_fix-musl-123.patch index 2e45d39163c..4701c3cac67 100644 --- a/testing/dotnet31-build/coreclr_fix-musl-123.patch +++ b/testing/dotnet31-build/coreclr_fix-musl-123.patch @@ -1,5 +1,5 @@ From 2582f958770ca42ec7b40c55690abf5e93e7d99a Mon Sep 17 00:00:00 2001 -Patch-Source: https://github.com/dotnet/runtime/pull/68121 +Patch-Source: https://github.com/dotnet/coreclr/pull/28245 From: Antoine Martin Date: Sun, 17 Apr 2022 00:42:11 +0000 Subject: [PATCH 1/1] musl-321 @@ -8,15 +8,15 @@ Musl 1.2.3 introduced NULL checks that breaks this code. Patch fixes code for better compliancy. --- - .../src/pal/src/include/pal/palinternal.h | 12 +-- - src/coreclr/src/pal/src/init/pal.cpp | 90 +++++++++---------- - 2 files changed, 51 insertions(+), 51 deletions(-) + src/pal/src/include/pal/palinternal.h | 12 ++-- + src/pal/src/init/pal.cpp | 92 +++++++++++++-------------- + 2 files changed, 52 insertions(+), 52 deletions(-) -diff --git a/src/coreclr/src/pal/src/include/pal/palinternal.h b/src/coreclr/src/pal/src/include/pal/palinternal.h -index c39c65f2455..78630f6ce26 100644 +diff --git a/src/pal/src/include/pal/palinternal.h b/src/pal/src/include/pal/palinternal.h +index 12e161dff1..7ef4c70ef5 100644 --- a/src/pal/src/include/pal/palinternal.h +++ b/src/pal/src/include/pal/palinternal.h -@@ -694,30 +694,30 @@ T* InterlockedCompareExchangePointerT( +@@ -729,30 +729,30 @@ T* InterlockedCompareExchangePointerT( template inline T* InterlockedExchangePointerT( T* volatile * target, @@ -53,3 +53,341 @@ index c39c65f2455..78630f6ce26 100644 } #undef InterlockedExchangePointer +diff --git a/src/pal/src/init/pal.cpp b/src/pal/src/init/pal.cpp +index ab926a1a12..1acb0d815f 100644 +--- a/src/pal/src/init/pal.cpp ++++ b/src/pal/src/init/pal.cpp +@@ -128,7 +128,7 @@ static bool RunningNatively() + { + int ret = 0; + size_t sz = sizeof(ret); +- if (sysctlbyname("sysctl.proc_native", &ret, &sz, NULL, 0) != 0) ++ if (sysctlbyname("sysctl.proc_native", &ret, &sz, nullptr, 0) != 0) + { + // if the sysctl failed, we'll assume this OS does not support + // binary translation - so we must be running natively. +@@ -201,7 +201,7 @@ int + PALAPI + PAL_InitializeDLL() + { +- return Initialize(0, NULL, g_initializeDLLFlags); ++ return Initialize(0, nullptr, g_initializeDLLFlags); + } + + /*++ +@@ -263,12 +263,12 @@ void + InitializeDefaultStackSize() + { + char* defaultStackSizeStr = getenv("COMPlus_DefaultStackSize"); +- if (defaultStackSizeStr != NULL) ++ if (defaultStackSizeStr != nullptr) + { + errno = 0; + // Like all numeric values specific by the COMPlus_xxx variables, it is a + // hexadecimal string without any prefix. +- long int size = strtol(defaultStackSizeStr, NULL, 16); ++ long int size = strtol(defaultStackSizeStr, nullptr, 16); + + if (errno == 0) + { +@@ -305,10 +305,10 @@ Initialize( + DWORD flags) + { + PAL_ERROR palError = ERROR_GEN_FAILURE; +- CPalThread *pThread = NULL; +- CSharedMemoryObjectManager *pshmom = NULL; +- LPWSTR command_line = NULL; +- LPWSTR exe_path = NULL; ++ CPalThread *pThread = nullptr; ++ CSharedMemoryObjectManager *pshmom = nullptr; ++ LPWSTR command_line = nullptr; ++ LPWSTR exe_path = nullptr; + int retval = -1; + bool fFirstTimeInit = false; + +@@ -330,18 +330,18 @@ Initialize( + + CriticalSectionSubSysInitialize(); + +- if(NULL == init_critsec) ++ if(nullptr == init_critsec) + { + pthread_mutex_lock(&init_critsec_mutex); // prevents race condition of two threads + // initializing the critical section. +- if(NULL == init_critsec) ++ if(nullptr == init_critsec) + { + static CRITICAL_SECTION temp_critsec; + + // Want this critical section to NOT be internal to avoid the use of unsafe region markers. + InternalInitializeCriticalSectionAndSpinCount(&temp_critsec, 0, false); + +- if(NULL != InterlockedCompareExchangePointer(&init_critsec, &temp_critsec, NULL)) ++ if(nullptr != InterlockedCompareExchangePointer(&init_critsec, &temp_critsec, nullptr)) + { + // Another thread got in before us! shouldn't happen, if the PAL + // isn't initialized there shouldn't be any other threads +@@ -352,7 +352,7 @@ Initialize( + pthread_mutex_unlock(&init_critsec_mutex); + } + +- InternalEnterCriticalSection(pThread, init_critsec); // here pThread is always NULL ++ InternalEnterCriticalSection(pThread, init_critsec); // here pThread is always nullptr + + if (init_count == 0) + { +@@ -387,12 +387,12 @@ Initialize( + + #ifdef FEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION + char* useDefaultBaseAddr = getenv("COMPlus_UseDefaultBaseAddr"); +- if (useDefaultBaseAddr != NULL) ++ if (useDefaultBaseAddr != nullptr) + { + errno = 0; + // Like all numeric values specific by the COMPlus_xxx variables, it is a + // hexadecimal string without any prefix. +- long int flag = strtol(useDefaultBaseAddr, NULL, 16); ++ long int flag = strtol(useDefaultBaseAddr, nullptr, 16); + + if (errno == 0) + { +@@ -510,7 +510,7 @@ Initialize( + // + + pshmom = InternalNew(); +- if (NULL == pshmom) ++ if (nullptr == pshmom) + { + ERROR("Unable to allocate new object manager\n"); + palError = ERROR_OUTOFMEMORY; +@@ -533,7 +533,7 @@ Initialize( + g_pSynchronizationManager = + CPalSynchMgrController::CreatePalSynchronizationManager(); + +- if (NULL == g_pSynchronizationManager) ++ if (nullptr == g_pSynchronizationManager) + { + palError = ERROR_NOT_ENOUGH_MEMORY; + ERROR("Failure creating synchronization manager\n"); +@@ -547,11 +547,11 @@ Initialize( + + palError = ERROR_GEN_FAILURE; + +- if (argc > 0 && argv != NULL) ++ if (argc > 0 && argv != nullptr) + { + /* build the command line */ + command_line = INIT_FormatCommandLine(argc, argv); +- if (NULL == command_line) ++ if (nullptr == command_line) + { + ERROR("Error building command line\n"); + goto CLEANUP1d; +@@ -559,13 +559,13 @@ Initialize( + + /* find out the application's full path */ + exe_path = INIT_ConvertEXEPath(argv[0]); +- if (NULL == exe_path) ++ if (nullptr == exe_path) + { + ERROR("Unable to find exe path\n"); + goto CLEANUP1e; + } + +- if (NULL == command_line || NULL == exe_path) ++ if (nullptr == command_line || nullptr == exe_path) + { + ERROR("Failed to process command-line parameters!\n"); + goto CLEANUP2; +@@ -582,7 +582,7 @@ Initialize( + } + + // InitializeProcessCommandLine took ownership of this memory. +- command_line = NULL; ++ command_line = nullptr; + + #ifdef PAL_PERF + // Initialize the Profiling structure +@@ -601,7 +601,7 @@ Initialize( + } + + // LOADSetExeName took ownership of this memory. +- exe_path = NULL; ++ exe_path = nullptr; + } + + if (init_count == 0) +@@ -751,7 +751,7 @@ done: + + if (fFirstTimeInit && 0 == retval) + { +- _ASSERTE(NULL != pThread); ++ _ASSERTE(nullptr != pThread); + } + + if (retval != 0 && GetLastError() == ERROR_SUCCESS) +@@ -867,7 +867,7 @@ PAL_IsDebuggerPresent() + struct kinfo_proc info = {}; + size_t size = sizeof(info); + int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; +- int ret = sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, NULL, 0); ++ int ret = sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, nullptr, 0); + + if (ret == 0) + return ((info.kp_proc.p_flag & P_TRACED) != 0); +@@ -880,12 +880,12 @@ PAL_IsDebuggerPresent() + + struct kinfo_proc *info; + +- kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open"); +- if (kd == NULL) ++ kd = kvm_open(nullptr, nullptr, nullptr, KVM_NO_FILES, "kvm_open"); ++ if (kd == nullptr) + return FALSE; + + info = kvm_getprocs(kd, KERN_PROC_PID, getpid(), &cnt); +- if (info == NULL || cnt < 1) ++ if (info == nullptr || cnt < 1) + { + kvm_close(kd); + return FALSE; +@@ -923,7 +923,7 @@ PAL_EntryPoint( + ENTRY("PAL_EntryPoint(lpStartAddress=%p, lpParameter=%p)\n", lpStartAddress, lpParameter); + + pThread = InternalGetCurrentThread(); +- if (NULL == pThread) ++ if (nullptr == pThread) + { + /* This function works only for thread that called PAL_Initialize for now. */ + ERROR( "Unable to get the thread object.\n" ); +@@ -984,7 +984,7 @@ PAL_TerminateEx( + { + ENTRY_EXTERNAL("PAL_TerminateEx()\n"); + +- if (NULL == init_critsec) ++ if (nullptr == init_critsec) + { + /* note that these macros probably won't output anything, since the + debug channels haven't been initialized yet */ +@@ -1102,7 +1102,7 @@ BOOL PALInitLock(void) + } + + CPalThread * pThread = +- (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : NULL); ++ (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : nullptr); + + InternalEnterCriticalSection(pThread, init_critsec); + return TRUE; +@@ -1124,7 +1124,7 @@ void PALInitUnlock(void) + } + + CPalThread * pThread = +- (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : NULL); ++ (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : nullptr); + + InternalLeaveCriticalSection(pThread, init_critsec); + } +@@ -1206,7 +1206,7 @@ Note : not all peculiarities of Windows command-line processing are supported; + static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv) + { + LPWSTR retval; +- LPSTR command_line=NULL, command_ptr; ++ LPSTR command_line=nullptr, command_ptr; + LPCSTR arg_ptr; + INT length, i,j; + BOOL bQuoted = FALSE; +@@ -1231,7 +1231,7 @@ static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv) + if(!command_line) + { + ERROR("couldn't allocate memory for command line!\n"); +- return NULL; ++ return nullptr; + } + + command_ptr=command_line; +@@ -1270,27 +1270,27 @@ static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv) + *command_ptr='\0'; + + /* convert to Unicode */ +- i = MultiByteToWideChar(CP_ACP, 0,command_line, -1, NULL, 0); ++ i = MultiByteToWideChar(CP_ACP, 0,command_line, -1, nullptr, 0); + if (i == 0) + { + ASSERT("MultiByteToWideChar failure\n"); + free(command_line); +- return NULL; ++ return nullptr; + } + + retval = reinterpret_cast(InternalMalloc((sizeof(WCHAR)*i))); +- if(retval == NULL) ++ if(retval == nullptr) + { + ERROR("can't allocate memory for Unicode command line!\n"); + free(command_line); +- return NULL; ++ return nullptr; + } + + if(!MultiByteToWideChar(CP_ACP, 0,command_line, i, retval, i)) + { + ASSERT("MultiByteToWideChar failure\n"); + free(retval); +- retval = NULL; ++ retval = nullptr; + } + else + TRACE("Command line is %s\n", command_line); +@@ -1326,33 +1326,33 @@ static LPWSTR INIT_ConvertEXEPath(LPCSTR exe_path) + if (!strchr(exe_path, '/')) + { + ERROR( "The exe path is not fully specified\n" ); +- return NULL; ++ return nullptr; + } + + if (-1 == stat(exe_path, &theStats)) + { + ERROR( "The file does not exist\n" ); +- return NULL; ++ return nullptr; + } + + if (!CorUnix::RealPathHelper(exe_path, real_path)) + { + ERROR("realpath() failed!\n"); +- return NULL; ++ return nullptr; + } + +- return_size = MultiByteToWideChar(CP_ACP, 0, real_path, -1, NULL, 0); ++ return_size = MultiByteToWideChar(CP_ACP, 0, real_path, -1, nullptr, 0); + if (0 == return_size) + { + ASSERT("MultiByteToWideChar failure\n"); +- return NULL; ++ return nullptr; + } + + return_value = reinterpret_cast(InternalMalloc((return_size*sizeof(WCHAR)))); +- if (NULL == return_value) ++ if (nullptr == return_value) + { + ERROR("Not enough memory to create full path\n"); +- return NULL; ++ return nullptr; + } + else + { +@@ -1361,7 +1361,7 @@ static LPWSTR INIT_ConvertEXEPath(LPCSTR exe_path) + { + ASSERT("MultiByteToWideChar failure\n"); + free(return_value); +- return_value = NULL; ++ return_value = nullptr; + } + else + { +-- +2.31.1 + diff --git a/testing/dotnet31-build/coreclr_non-portable-distrorid-fix-alpine.patch b/testing/dotnet31-build/coreclr_non-portable-distrorid-fix-alpine.patch deleted file mode 100644 index 2780675f3f2..00000000000 --- a/testing/dotnet31-build/coreclr_non-portable-distrorid-fix-alpine.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 88a1cd85cbc73631d67406b3ad740ee7bd36bc8b Mon Sep 17 00:00:00 2001 -Patch-Source: https://github.com/dotnet/coreclr/pull/28227 -From: Antoine Martin -Date: Sat, 4 Dec 2021 05:03:48 +0000 -Subject: [PATCH 1/1] Fix non-portable distrorid alpine generation - -/init-distro-id.sh generates incorrect DistroRid on Alpine. -While the expected DistroRid (alpine-x.xx-xxx) should only include macro -version, init-distro-id.sh includes the micro version. This patches it -to cut off the trailing subversion off of VERSION_ID by treating it -the same way RHEL's VERSION_ID is treated. - ---- - init-distro-rid.sh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/init-distro-rid.sh b/init-distro-rid.sh -index 49d8981c4f..7cec3cf649 100755 ---- a/init-distro-rid.sh -+++ b/init-distro-rid.sh -@@ -51,7 +51,7 @@ initNonPortableDistroRid() - # We have forced __PortableBuild=0. This is because -portablebuld - # has been passed as false. - if (( ${isPortable} == 0 )); then -- if [ "${ID}" == "rhel" ]; then -+ if [ "${ID}" == "rhel" ] || [ "${ID}" = "alpine" ]; then - # remove the last version digit - VERSION_ID=${VERSION_ID%.*} - fi --- -2.34.0 - diff --git a/testing/dotnet31-build/corefx_add-alpine-315-rid.patch b/testing/dotnet31-build/corefx_add-alpine-315-rid.patch deleted file mode 100644 index a618166aa94..00000000000 --- a/testing/dotnet31-build/corefx_add-alpine-315-rid.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 4243324d64dda9fbcaa76c37cf1e5090205d0320 Mon Sep 17 00:00:00 2001 -Patch-Source: https://github.com/dotnet/corefx/pull/43129 -From: Antoine Martin -Date: Sat, 4 Dec 2021 04:59:26 +0000 -Subject: [PATCH 1/1] Added Alpine 3.15 rid - -Adds RID for Alpine 3.15 - ---- - .../runtime.compatibility.json | 53 ++++++++++++++++++- - pkg/Microsoft.NETCore.Platforms/runtime.json | 13 ++++- - .../runtimeGroups.props | 2 +- - 3 files changed, 65 insertions(+), 3 deletions(-) - -diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json -index f34e8dbb82..6b0678be9f 100644 ---- a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json -+++ b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json -@@ -224,6 +224,57 @@ - "any", - "base" - ], -+ "alpine.3.15": [ -+ "alpine.3.15", -+ "alpine.3.14", -+ "alpine.3.13", -+ "alpine.3.12", -+ "alpine.3.11", -+ "alpine.3.10", -+ "alpine.3.9", -+ "alpine.3.8", -+ "alpine.3.7", -+ "alpine.3.6", -+ "alpine", -+ "linux-musl", -+ "linux", -+ "unix", -+ "any", -+ "base" -+ ], -+ "alpine.3.15-x64": [ -+ "alpine.3.15-x64", -+ "alpine.3.15", -+ "alpine.3.14-x64", -+ "alpine.3.14", -+ "alpine.3.13-x64", -+ "alpine.3.13", -+ "alpine.3.12-x64", -+ "alpine.3.12", -+ "alpine.3.11-x64", -+ "alpine.3.11", -+ "alpine.3.10-x64", -+ "alpine.3.10", -+ "alpine.3.9-x64", -+ "alpine.3.9", -+ "alpine.3.8-x64", -+ "alpine.3.8", -+ "alpine.3.7-x64", -+ "alpine.3.7", -+ "alpine.3.6-x64", -+ "alpine.3.6", -+ "alpine-x64", -+ "alpine", -+ "linux-musl-x64", -+ "linux-musl", -+ "linux-x64", -+ "linux", -+ "unix-x64", -+ "unix", -+ "any", -+ "base" -+ ], -+ - "alpine.3.6": [ - "alpine.3.6", - "alpine", -diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.json b/pkg/Microsoft.NETCore.Platforms/runtime.json -index 20082ac80f..20485cce4d 100644 ---- a/pkg/Microsoft.NETCore.Platforms/runtime.json -+++ b/pkg/Microsoft.NETCore.Platforms/runtime.json -@@ -66,6 +66,17 @@ - "alpine.3.13-x64" - ] - }, -+ "alpine.3.15": { -+ "#import": [ -+ "alpine.3.14" -+ ] -+ }, -+ "alpine.3.15-x64": { -+ "#import": [ -+ "alpine.3.15", -+ "alpine.3.14-x64" -+ ] -+ }, - "alpine.3.6": { - "#import": [ - "alpine" -diff --git a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props -index 3434ed138a..c466a38915 100644 ---- a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props -+++ b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props -@@ -16,7 +16,7 @@ - - linux-musl - x64 -- 3.6;3.7;3.8;3.9;3.10;3.11;3.12;3.13;3.14 -+ 3.6;3.7;3.8;3.9;3.10;3.11;3.12;3.13;3.14;3.15 - - - --- -2.34.0 -