On 7/20/23 8:20 PM, Carlos Rodriguez Fernandez <carlosrodrifernandez@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue