https://fedoraproject.org/wiki/Changes/BuildRequires_Generators = BuildRequires Generators = == Summary == Add possibility to generate build-time dependencies within RPM spec file and teach RPM and mock how to handle this. == Owner == * Name: [[User:ignatenkobrain|Igor Gnatenko]], [[User:ffesti|Florian Festi]], [[User:msuchy|Miroslav Suchý]] * Email: ignatenkobrain@xxxxxxxxxxxxxxxxx, ffesti@xxxxxxxxxx, miroslav@xxxxxxxx == Detailed Description == For many languages (Rust, Golang, Node.Js, Ruby, Python), BuildRequires can be automatically generated. All it takes, run some special tool which will output dependencies in RPM format. Q: How will it work under the hood? A: When you build RPM, something like this will happen under the hood… # rpm would perform %prep (which is supposed to abort if some dependencies missing and print them) # mock would install those dependencies and resume build Q: Will src.rpm contain all generated dependencies? A: This is not known yet, we'll update page once it is known. Q: Does this mean that package builds won't be reproducible anymore? A: No, as long as you have same buildroot and tool which is generating BuildRequires is doing so in reproducible manner, it should not affect reproducibility. == Benefit to Fedora == Packagers won't have to pre-generate BuildRequires in the spec file which means it will be always updated (and correct) : * Packagers can focus of making their packages better instead of spending all their packaging time copying BuildRequires from documentation and third party tools. * BuildRequires are dropped as soon as they're no longer necessary * Packages can be easily bumped without requiring a manual BuildRequires refresh * BuildRequires and Requires generation can use similar utilities, making sure that the deps packages declare can also be used for second-level building. Packages no longer need to declare the deps of their second and n-th dependencies because someone forgot to declare them in the correct package. == Scope == * Proposal owners: Implement support for a feature in RPM and mock (if implemented properly, Koji should just work). Make use of it in Rust ecosystem. * Other developers: Maintainers of language stacks are advised to use this feature. * Release engineering: [https://pagure.io/releng/issue/8129 #8129] * Policies and guidelines: Packaging Guidelines need to be updated with instructions how to use this feature. * Trademark approval: N/A (not needed for this Change) == Upgrade/compatibility impact == Packagers and users who use repoquery might be affected (src.rpm might not contain generated dependencies). == How To Test == TBD. == User Experience == Users won't notice differences. == Dependencies == Required feature needs to be implemented in RPM and mock. == Contingency Plan == * Contingency mechanism: (What to do? Who will do it?) Proposal Owners might still ship feature disabled for Fedora buildsystem but have it available for end-users, and move full completion to the next release. * Contingency deadline: Beta Freeze * Blocks release? No. * Blocks product? No. == Documentation == TBD. == Release Notes == TBD. -- Ben Cotton Fedora Program Manager TZ=America/Indiana/Indianapolis _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx