Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions tools/packaging/packaging.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -2125,17 +2125,37 @@ function Get-PackageDependencies

# These should match those in the Dockerfiles, but exclude tools like Git, which, and curl
$Dependencies = @()

# ICU version range follows .NET runtime policy.
# See: https://github.com/dotnet/runtime/blob/3fe8518d51bbcaa179bbe275b2597fbe1b88bc5a/src/native/libs/System.Globalization.Native/pal_icushim.c#L235-L243
#
# Version range rationale:
# - The runtime supports ICU versions >= the version it was built against
# and <= that version + 30, to allow sufficient headroom for future releases.
# - ICU typically releases about twice per year, so +30 provides roughly
# 15 years of forward compatibility.
# - On some platforms, the minimum supported version may be lower
# than the build version and we know that older versions just works.
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar in comment: “older versions just works” should be “older versions just work”.

Suggested change
# than the build version and we know that older versions just works.
# than the build version and we know that older versions just work.

Copilot uses AI. Check for mistakes.
#
$MinICUVersion = 60 # runtime minimum supported
$BuildICUVersion = 74 # current build version for v7.4.15
$MaxICUVersion = $BuildICUVersion + 30 # headroom

if ($Distribution -eq 'deb') {
$Dependencies = @(
"libc6",
"libgcc1",
"libgssapi-krb5-2",
"libstdc++6",
"zlib1g",
"libicu74|libicu72|libicu71|libicu70|libicu69|libicu68|libicu67|libicu66|libicu65|libicu63|libicu60|libicu57|libicu55|libicu52",
(($MaxICUVersion..$MinICUVersion).ForEach{ "libicu$_" } -join '|'),
"libssl3|libssl1.1|libssl1.0.2|libssl1.0.0"
Comment on lines +2140 to 2152
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new dynamic ICU dependency range logic isn’t covered by existing Pester tests (see test/packaging/packaging.tests.ps1). Consider adding a test for Get-PackageDependencies -Distribution deb that asserts the generated dependency string includes both the expected min (libicu60) and the computed max (libicu$($BuildICUVersion+30)) to prevent regressions.

Copilot uses AI. Check for mistakes.
)

} elseif ($Distribution -eq 'rh') {
$Dependencies = @(
"openssl-libs",
"libicu"
)
} elseif ($Distribution -eq 'rh') {
$Dependencies = @(
"openssl-libs",
Expand Down Expand Up @@ -5733,4 +5753,4 @@ function Test-IsProductFile {
}

return $false
}
}
Loading