On Mon, Feb 18, 2019 at 4:36 PM Dridi Boukelmoune
<dridi.boukelmoune(a)gmail.com> wrote:
On Mon, Feb 18, 2019 at 9:21 PM Ben Cotton <bcotton(a)redhat.com> wrote:
>
>
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(a)fedoraproject.org, ffesti(a)redhat.com, miroslav(a)suchy.cz
>
> == 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
As of today, running %configure or %cmake is part of the %build step,
not the %prep step according to the guidelines.
Would it mean that we should move this kind of commands in the %prep
step? I think that's technically where they belong. However, focusing
on language stacks won't help for polyglot projects (for example when
using gcc in a Rust project).
Current discussion upstream indicates we'll have a new spec section
for generating build dependencies. It'll happen between %prep and
%build, most likely.
That should not require changing the behavior of how things are done now.
> 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.
As a mock and RPM user on Fedora, outside of my Fedora endeavors, I
beg to differ ;-)
Yeah, everyone has to update. :)
--
真実はいつも一つ!/ Always, there's only one truth!