[release/v7.6] Mirror .NET/runtime ICU version range in PowerShell by adityapatwardhan · Pull Request #26563 · PowerShell/PowerShell
Backport of #26304 to release/v7.6
Triggered by @adityapatwardhan on behalf of @kasperk81
Original CL Label: CL-BuildPackaging
/cc @PowerShell/powershell-maintainers
Impact
REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.
Tooling Impact
- Required tooling change
- Optional tooling change (include reasoning)
This backports a critical fix for PowerShell Linux packaging that mirrors .NET runtime's ICU version range policy. This change replaces hardcoded ICU version lists with a dynamic range calculation (ICU 60-106) that provides 15 years of forward compatibility. This ensures Debian packages flow smoothly across ICU version updates and prevents packaging failures.
Customer Impact
- Customer reported
- Found internally
Regression
REQUIRED: Check exactly one box.
- Yes
- No
This is not a regression.
Testing
The change affects packaging dependency calculation. Testing verified the generated ICU version range matches expected values and maintains compatibility with supported ICU versions. The logic follows the proven .NET runtime approach.
Risk
REQUIRED: Check exactly one box.
- High
- Medium
- Low
This is a packaging/build system change that affects dependency resolution for Linux distributions. While it improves compatibility and reduces maintenance burden, any packaging changes carry inherent risk. However, the approach is proven in .NET runtime and provides better long-term stability than hardcoded version lists.