On 7/20/23 8:20 PM, Carlos Rodriguez Fernandez <carlosrodrifernan...@gmail.com> 
wrote:
Hi all,

I am interested in packaging some golang programs for Fedora (and EPEL), and I read through the guidelines: https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/ <https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/>

My question is more about the reasoning for the recommended handling of 
dependencies.

Other language platforms have shared runtime objects, and devel packages provide the interface to link to them when necessary; however golang compiles it all statically. It is very easy to bring all the dependencies locally for compilation directly from git repos and then nothing is necessary at runtime.

Creating rpm packages for each golang dependency seems counterproductive as it adds an additional burden to maintain without the benefits of shared runtime objects.

I have the feeling I am missing something. What is the benefit of having each golang build dependency as rpms? Is it a requirement for golang programs rpm contributions or it is optional? (e.g. prometheus in EPEL9 does not follow the deps handling guidelines but not sure if it is a tech debt or an option).


Thank you,
Carlos


We need to build into Koji, there is no "local build". As such we have two 
options :
- bundle the dependencies in the package
- package all the libraries separately

The Fedora guidelines is to package library separately, per 
https://docs.fedoraproject.org/en-US/fesco/Bundled_Software_policy/ :



All packages whose upstreams allow them to be built against system libraries 
must be built against system libraries.

All packages whose upstreams have no mechanism to build against system 
libraries must be contacted publicly about a path to supporting system 
libraries. If upstream refuses, this must be recorded in the spec file using a 
persistent mechanism to be clarified in the packaging guidelines.

All packages whose upstreams have no mechanism to build against system 
libraries may opt to carry bundled libraries, but if they do, they must include 
Provides: bundled() = in their RPM spec file.


This policy only applies to Fedora. In EPEL we bundle because we don't have our 
macros and the Go ecosystem is not bootstrapped.

Best regards,

Robert-André
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to