Skip to content

Conversation

@adityapatwardhan
Copy link
Member

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.

Copilot AI review requested due to automatic review settings December 2, 2025 23:23
@adityapatwardhan adityapatwardhan requested a review from a team as a code owner December 2, 2025 23:23
@adityapatwardhan adityapatwardhan added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Dec 2, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR backports a critical packaging improvement that replaces hardcoded ICU version lists with a dynamic range calculation following .NET runtime's ICU version policy. The change generates ICU dependency ranges from version 60 to 106 (build version 76 + 30 headroom), providing approximately 15 years of forward compatibility and reducing maintenance burden.

Key Changes

  • Replaced hardcoded list of 14 ICU versions with dynamic range calculation using $MaxICUVersion..$MinICUVersion
  • Added comprehensive inline documentation explaining the version range policy and rationale
  • Applied .NET runtime's proven approach (minimum version 60, build version 76, +30 headroom for future releases)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@daxian-dbw daxian-dbw merged commit 2bdc89f into PowerShell:release/v7.6 Dec 2, 2025
42 checks passed
@adityapatwardhan adityapatwardhan deleted the backport/release/v7.6/26304-bb44aa1bc branch December 3, 2025 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants