Skip to content

Commit 9e50897

Browse files
authored
[release/v7.5] Mirror .NET/runtime ICU version range in PowerShell (#26821)
1 parent c4ec0f4 commit 9e50897

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

tools/packaging/packaging.psm1

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2113,17 +2113,32 @@ function Get-PackageDependencies
21132113

21142114
# These should match those in the Dockerfiles, but exclude tools like Git, which, and curl
21152115
$Dependencies = @()
2116+
2117+
# ICU version range follows .NET runtime policy.
2118+
# See: https://github.com/dotnet/runtime/blob/3fe8518d51bbcaa179bbe275b2597fbe1b88bc5a/src/native/libs/System.Globalization.Native/pal_icushim.c#L235-L243
2119+
#
2120+
# Version range rationale:
2121+
# - The runtime supports ICU versions >= the version it was built against
2122+
# and <= that version + 30, to allow sufficient headroom for future releases.
2123+
# - ICU typically releases about twice per year, so +30 provides roughly
2124+
# 15 years of forward compatibility.
2125+
# - On some platforms, the minimum supported version may be lower
2126+
# than the build version and we know that older versions just works.
2127+
#
2128+
$MinICUVersion = 60 # runtime minimum supported
2129+
$BuildICUVersion = 76 # current build version
2130+
$MaxICUVersion = $BuildICUVersion + 30 # headroom
2131+
21162132
if ($Distribution -eq 'deb') {
21172133
$Dependencies = @(
21182134
"libc6",
21192135
"libgcc1",
21202136
"libgssapi-krb5-2",
21212137
"libstdc++6",
21222138
"zlib1g",
2123-
"libicu76|libicu74|libicu72|libicu71|libicu70|libicu69|libicu68|libicu67|libicu66|libicu65|libicu63|libicu60|libicu57|libicu55|libicu52",
2139+
(($MaxICUVersion..$MinICUVersion).ForEach{ "libicu$_" } -join '|'),
21242140
"libssl3|libssl1.1|libssl1.0.2|libssl1.0.0"
21252141
)
2126-
21272142
} elseif ($Distribution -eq 'rh') {
21282143
$Dependencies = @(
21292144
"openssl-libs",

0 commit comments

Comments
 (0)