feat: Add Rocky Linux support#2654
Conversation
All changes compile cleanly. Here's a summary of everything that was added: --- ### Rocky Linux support — changes made **1. distro-support.json** Added a `"Rocky Linux"` entry using `dnf` commands (identical to RHEL since Rocky is a RHEL rebuild), with `/usr/lib64/dotnet` as the expected distro feed install directory, and versions `8.0` through `11.0`. **2. StringConstants.ts** Added `ROCKY_LINUX_DISTRO_INFO_KEY = 'Rocky Linux'` — matches the exact `NAME` value in os-release. **3. LinuxVersionResolver.ts** - Imported `RockyLinuxDistroSDKProvider` and `ROCKY_LINUX_DISTRO_INFO_KEY` - Added a `case ROCKY_LINUX_DISTRO_INFO_KEY:` branch in `DistroProviderFactory` **4. RockyLinuxDistroSDKProvider.ts** *(new)* Extends `RedHatDistroSDKProvider` with no overrides — Rocky Linux uses the same version-parsing logic (`"8.10"` → `"8.0"` key) and the same `dnf`-based package management as RHEL. **5. RockyLinuxDistroTests.test.ts** *(new)* Unit tests covering package lookup, support status, install directories, SDK/runtime version listing, and version key resolution — all gated on `shouldRun` so they only execute on Rocky Linux. Made changes.
…in command parts and root
Copilot summary:
**Root cause (hypothesis 2):** `getAllValidCommands()` in IDistroDotnetSDKProvider.ts only expanded `{packageName}` when it was the **last** command part. The Rocky Linux `isInstalledCommand` is `dnf list --installed {packageName} -q` — the placeholder is 3rd of 4 parts, not last. So the whitelist got the literal `"dnf list --installed {packageName} -q"`, but the real command written to `command.txt` was `"dnf list --installed dotnet-sdk-10.0 -q"`. The shell script rejected it as unknown (exit 111777), killed the sudo master process, and no output files were ever written — leading to the `stdout.txt` ENOENT error you saw.
**Fix:** Changed the check from `command.commandParts.slice(-1)[0] !== this.missingPackageNameKey` (last-part-only) to `command.commandParts.some(part => part.includes(...))` (any part), so commands with `{packageName}` anywhere are now fully expanded into the whitelist.
Made changes.
|
@Jalmenara please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
Contributor License AgreementContribution License AgreementThis Contribution License Agreement ( “Agreement” ) is agreed to by the party signing below ( “You” ), 1. Definitions. “Code” means the computer software code, whether in human-readable or machine-executable form, “Project” means any of the projects owned or managed by .NET Foundation and offered under a license “Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any “Submission” means the Code and any other copyrightable material Submitted by You, including any 2. Your Submission. You must agree to the terms of this Agreement before making a Submission to any 3. Originality of Work. You represent that each of Your Submissions is entirely Your 4. Your Employer. References to “employer” in this Agreement include Your employer or anyone else 5. Licenses. a. Copyright License. You grant .NET Foundation, and those who receive the Submission directly b. Patent License. You grant .NET Foundation, and those who receive the Submission directly or c. Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement. 6. Representations and Warranties. You represent that You are legally entitled to grant the above 7. Notice to .NET Foundation. You agree to notify .NET Foundation in writing of any facts or 8. Information about Submissions. You agree that contributions to Projects and information about 9. Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and 10. Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and .NET Foundation dedicates this Contribution License Agreement to the public domain according to the Creative Commons CC0 1. |
Closes #1949