Skip to content

[release/v7.6.7] Add native Azure Linux 4 RPM packaging - #28109

Closed
Justin Chung (jshigetomi) wants to merge 1 commit into
PowerShell:release/v7.6.7from
jshigetomi:jshigetomi-azure-linux-4-rpm-v76
Closed

Justin Chung (jshigetomi) wants to merge 1 commit into
PowerShell:release/v7.6.7from
jshigetomi:jshigetomi-azure-linux-4-rpm-v76

Conversation

@jshigetomi

Copy link
Copy Markdown
Collaborator

Summary

Backports and adapts the full native Azure Linux 4 packaging change from #28107 (d8984870ca158442c0c043653ee63cef920ace8c) directly to release/v7.6.7.

  • Generates distinct framework-dependent Azure Linux 3 (.cm) and Azure Linux 4 (.azl4) RPMs for x86_64 and aarch64, including Release: 1.azl4 metadata.
  • Replaces the Azure Linux 4 beta mappings added by [release/v7.6.7] Add Azure Linux 4 RPM support #28039 with explicit preview and stable mappings for both architectures. The logical mapping names omit -yum because the PMC publishing Run.ps1 appends it.
  • Keeps all four Azure Linux 3 .cm mappings unchanged.
  • Hardens both RPM filename validators by escaping literal dots, anchoring complete filenames, and accepting azl4.
  • Adds targeted coverage for artifact names, RPM Release metadata, dependencies, mapping channel policy, retained Azure Linux 3 mappings, and malformed filenames.

PowerShell 7.6 dependency adaptation

The master change in #28107 uses the .NET 11 runtime contract. PowerShell 7.6 targets .NET 10, so this backport deliberately preserves the branch's Azure Linux native dependency set and requires dotnet-runtime-10.0 only for framework-dependent cm and azl4 RPMs. It does not introduce any .NET 11 dependency.

Relationship to #28039

#28039 is already merged in release/v7.6.7. It added initial Azure Linux 4 PMC routing using the existing .cm RPM and updated the shared dependencies to the .NET 10 contract. This PR builds on that work: it creates native .azl4 packages, separates preview/stable routing, and adds the validator and test hardening from #28107.

Validation

  • Pester 5.6.1: 32 targeted packaging and Linux package-name tests passed.
  • Parsed tools/packaging/packaging.psm1 and both changed Pester files with the PowerShell parser.
  • Parsed tools/packages.microsoft.com/mapping.json with ConvertFrom-Json.
  • git diff --check passed.

Copilot AI lite review requested due to automatic review settings September 25, 2026 18:08
@jshigetomi
Justin Chung (jshigetomi) requested a review from a team as a code owner September 25, 2026 18:08
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@jshigetomi Justin Chung (jshigetomi) added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Sep 25, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

RPM validators accept malformed filenames with an unsupported optional preview segment.

Review effort: Lite
Findings: None

What changed in this PR

Adds native Azure Linux 4 RPM packaging for PowerShell 7.6.7 while preserving Azure Linux 3 support and .NET 10 dependencies.

Changes:

  • Generates .azl4 RPMs with architecture-specific metadata.
  • Adds Azure Linux 4 preview and stable mappings.
  • Strengthens RPM filename validation and related tests.
File Description
tools/​packaging/​packaging.psm1 Adds Azure Linux 4 packaging and dependencies.
tools/​packages.microsoft.com/​mapping.json Defines Azure Linux 4 mappings.
test/​packaging/​packaging.tests.ps1 Tests packaging, dependencies, and mappings.
test/​packaging/​linux/​package-validation.tests.ps1 Tests valid and malformed RPM names.
.pipelines/​templates/​release-validate-packagenames.yml Updates release RPM validation.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@jshigetomi

Copy link
Copy Markdown
Collaborator Author

Closing this direct 7.6 PR in favor of backporting #28107 after it merges. The Azure Linux 4 native dependency list is currently identical for .NET 10 and .NET 11; during the 7.6 backport, retain the branch-specific framework-dependent requirement dotnet-runtime-10.0 instead of master’s dotnet-runtime-11.0. The source branch is intentionally retained.

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.

2 participants