Replies: 5 comments 18 replies
-
The closest thing we have for this today is https://github.com/dotnet/designs/blob/main/accepted/2020/reproducible-builds.md . The basic idea is that the PDB of the binary in nuget package contains list of sources and compiler command line used to build the package that should be enough to allow re-creating the binary.
How is this done for Java or Python? We should be able to follow the same plan. |
Beta Was this translation helpful? Give feedback.
-
I like this general idea. It's a question of how to achieve it. While the reproducible builds are a good suggestion, it's definitely not productized and unlikely to be successful w/o cooperation from the library owner. I propose some complementary ideas:
I'll be the first to admit that this is hand-wavy. Also, for such a system to work, there needs to be circular influence/feedback. This has the potential to be a big lift. Folks would need to really want this for it to work, including distros, app authors, and library authors. Certainly, it could work. |
Beta Was this translation helpful? Give feedback.
-
@omajid what is the difference is with that issue? Can we keep a single issue? |
Beta Was this translation helpful? Give feedback.
-
Has best practice evolved on this? I packaged powershell for Alpine Linux a year ago, and the newer versions now include more dependencies that are not trivial to build from source. An issue was opened with the upstream team: PowerShell/PowerShell#20143 but indeed I'm not sure how to proceed. |
Beta Was this translation helpful? Give feedback.
-
We're also running into this with trying to bring Jellyfin into Fedora (rhbz#2238840). It'd be great to see some progress on this front. cc: @mooninite |
Beta Was this translation helpful? Give feedback.
-
A number of Linux distributions (and other OSs) are now using and packaging .NET (via source-build) into their distributions. With .NET available in the distro, users are looking to build on top of it. For example, someone was recently looking for guidance on how to package https://github.com/GitCredentialManager/git-credential-manager into Fedora. That led to some conversation in a Fedora context that I think is general enough that it would apply to most other distros as well.
You can see the original discussion here: https://pagure.io/packaging-committee/issue/1193.
I talked about this with @crummel who suggested starting a discussion here.
Before digging into specific, is this - packaging software built on top of .NET into distros - something we want to encourage and support?
If so, there's quite a few challenges that we need to solve. The challenges are similar to what we encounter in source-build: we need to build everything from source without access to the internet. Here's what I see as the big ones:
Newtonsoft.Json
would be used by a huge percentage of .NET applications, it seems like it would fit in best with the distro policies if we packaged it up once and then applications or higher-level libraries could use that without having to maintain or build this code.Newtonsoft.Json
, we would need to find a way to rebuild everything that consumesNewtonsoft.Json
. Is there a way for an application to use a dynamic-linking ordlopen
-style orLoadLibrary
-style approach to load the packaged copy ofNewtonsoft.Json.dll
?.nupkg
,.dll
files that are meant to be used by other applications? Where should standalone applications live? (This can only be a very rough recommendation, because every distro has its own policies on paths and install locations).This is also related to dotnet/core#7443
cc @dotnet/distro-maintainers @leecow @richlander @tmds
Beta Was this translation helpful? Give feedback.
All reactions