Add .NET-based tooling to construct RPM packages#15191
Add .NET-based tooling to construct RPM packages#15191jkoritzinsky merged 12 commits intodotnet:mainfrom
Conversation
…. Fix reading file contents in ArReader.
…Ms so verification and fixes can be validated.
…ns after we generate the regular RPMs. This will reduce extraneous output and allow us to easily remove these copies when we stop making Mariner packages.
| SourceFiles="@(Manpage)" | ||
| DestinationFiles="@(Manpage->'$(_LayoutDocs)/%(RecursiveDir)%(Filename)%(Extension)')" /> | ||
|
|
||
| <!-- Write copyright file in the debian format. There's no defined format for RPM copyright files. --> |
There was a problem hiding this comment.
Does the produced copyright match what is produced with FPM tooling?
There was a problem hiding this comment.
We produce the copyright file today in our own tooling before we feed it to FPM. The copyright file under rpm_templates is the old template, which is in the DEB copyright format.
…ashion, we can simplify our input cpio payload generation to include all directories under the root instead of excluding some.
|
I've diffed the package contents and metadata, of old and new-style of packages. Here are my findings. Apphost packagePackage contains the following directories, previously no directories were included: We likely need to include the following, which exludes the last two dirs in the list: Host packagePackage contains symlink that uses a relative path: Previously this was an absolute path: Runtime packagePackage contains the following directories: First two should not be included. This is currently implemented with https://github.com/dotnet/runtime/blob/251ef76584bd6568439b5cbb3eb19bd13e42b93e/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.props#L66 Runtime-deps packagePackage dependencies are listed as follows: Previously, this was the dependency list: Dependency without versions should not include Targeting-pack packagePackage contains the following directories: Last two dirs should not be included in this package. Metadata differences
In old packages, this has a value, like the following: |
|
Thanks for doing an extensive diff! I'll add an API to explicitly specify owned directories so we can get the correct behavior. I'll investigate the dependency differences and figure out the right flags for versionless dependencies. I intentionally didn't add the source RPM metadata as we don't actually ship a package with that name to rebuild from source, so there really is no source RPM. I can add back this metadata if we want to include it anyway. I wanted to have the symlink be relative as it works on the installed machine just as well as an absolute symlink and is easier to generate (uses the same tooling as the debian package build) |
|
Including directories is now opt-in through the After we get this tooling in and start switching over to using it, I plan on providing some integration between this tooling and the SFX SDK (as that knows what directories are owned) to make this easier for the framework packs. I'll file a follow-up issue for that once this is merged in. |
Introduce APIs to handle reading/writing RPMs and build an MSBuild integration for them.
Unlike the Deb tooling PR, this PR does not opt-in all repositories to the new tooling automatically. Repositories will need to set the
UseArcadeRpmToolingproperty totrueto opt-in to the new tooling.This tooling (like the Deb tooling) is designed to have a set of APIs that can be re-used by SignTool to enable unwrapping/rewrapping RPMs.
Fixes #15143