-
Notifications
You must be signed in to change notification settings - Fork 353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build Debs using our own infra instead of debuild + custom scripting #15051
Conversation
…icitly emit the file formats that are required for what we put in deb packages.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can include https://github.com/dotnet/sdk/tree/main/documentation/manpages (which we can update at the end of October like did last year).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd need to look more at that tooling to figure out how it works and how to integrate it well. I like the idea
Thanks @NikolaMilosavljevic So once this change flows to SDK we could switch to using this? @baronfel as an FYI |
Absolutely fantastic. Taking a look. |
/cc @ellahathaway |
Looking at dotnet/sdk, it actually directly uses the existing tooling with its own task (instead of our MSBuild targets). As a result, I'll need to restore the old tooling just to keep in the package for now. |
… targets, just the tool directly) are able to move off of it.
I wonder if this functionality would also be helpful for the signing work @mmitche |
@ericstj My initial reasoning for doing this work was for signing, as it will enable us to do the unwrapping/re-wrapping of debs easily (like how we do for tarballs and zips). |
Yeah, this is absolutely useful. |
Today, we use some scripting built around debuild to build our deb packages. This approach has a few problems:
This PR attempts a new approach: Build Debs from the various components that make up a Deb package.
A deb package is a remarkably simple format. It's an ar archive with 3 files in it. One has one line of text. The other two are (compressed) tarballs. Within the first tarball are text files with well documented formats. Within the second tarball is the actual data as well as some generated files that follow specific formats.
This approach allows us to ensure we don't accidentally adopt new features in the format that aren't supported by old distros.
It also doesn't implement the rest of the package building support that we don't use and have to work around.
Since this doesn't depend on debian-only tools, we can build our packages on Azure Linux and for arm64 without significant trouble.
Also, having our own library to support the "ar" format also solves the biggest part of #14436.
Validated locally that (with the changes in dotnet/runtime#107429) produces identical package contents and metadata (just with gzip compression instead of xz compression).
Blocked on dotnet/runtime#107429