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