Re: Modularity: New modulemd-packager format for building modules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



V Fri, Sep 10, 2021 at 08:50:44AM -0400, Neal Gompa napsal(a):
> On Fri, Sep 10, 2021 at 8:26 AM Petr Pisar <ppisar@xxxxxxxxxx> wrote:
> >
> > Good news, module maintainers.
> >
> > I'm relieved to announce an availability of the new module packaging format,
> > modulemd-packager, version 3.
> >
> 
> So this certainly solves a lot of issues, but it's still frustrating
> to see that we *need* to declare the platform and that we couldn't
> inherit the platform from the build environment. This means that at
> branching time, we need to make a commit to change the requested
> platform.
>
I confirm it is so and I fully agree with you that it's unpleasant.

The problem is that if you want to have the context invariant, then you need
to store a mapping between a context and its build-dependencies somewhere. And
naturally as new Fedora releases are added, and end-of-live releases removed,
the mapping must be updated because platform is one of the dependencies.

> That being said, does the platform value influence how the final
> modulemd is generated? That is, if I made a system that accepted this
> YAML file as input but *ignored* the platform value

It would end up like this <https://pagure.io/fm-orchestrator/issue/1714>: The
build service would mix contexts for different platforms and the module
wouldn't probably build at all like in the referred issue.

> (and the platform was forced by other means)

For example? The information has to be somewhere stored, somehow retrieved,
and delivered to a build and compose systems.

In non-modular world the information is stored in dist-git branch name,
delivered to Koji as a build target, and stored in Koji build as tag. The
information is updated with each Fedora release. The process of updating is
called branching and package retirement.

I was thinking about possible solutions:

One was omitting platform from the context. You would not specify any platform
in the module input format.
    
    - context: A

You would submit the module for building. MBS would expand the build for all
platforms (= currently supported Fedoras). The result would be four module
builds:

    Build                       Dependencies
    -------------------------------------------
    perl:5.32:362021:A          platform:36:0:0
    perl:5.32:352021:A          platform:35:0:0
    perl:5.32:342021:A          platform:34:0:0
    perl:5.32:332021:A          platform:33:0:0

But somewhere would have to be stored for which platform was the build done.
We can guess it from the version prefix (36..., 35...) now. (ELN has no
prefix.)

Then when you build perl-DBI:1.643 which build- and run-requires perl:5.32:

    - context: A
      buildrequires:
        perl: [5.32]
      requires:
        perl: [5.32]

the same way without platforms, MBS would expand a matrix of the platforms and
perls:

    perl-DBI:1.643:362022:A     platform:36:0:0 perl:5.32:362021:A
    perl-DBI:1.643:352022:A     platform:35:0:0 perl:5.32:352021:A
    perl-DBI:1.643:342022:A     platform:34:0:0 perl:5.32:342021:A
    perl-DBI:1.643:332022:A     platform:33:0:0 perl:5.32:332021:A

That would work. But how would a packager specify that he does not want to
build for all plaforms? E.g. he adds a module to Fedora 36 and is not
interested in the older ones. Or e.g. he stops maintaining the module and the
last supported is Fedora 35.

Maybe we could add a new field into the input file:

    - platforms: [f33, f34, f35]
    - context: A
      buildrequires:
        perl: [5.32]
      requires:
        perl: [5.32]

and default to all platforms if not specified.

When I shared this idea I was told that a context must change with a platform.
That everything (MBS?) assumes it. I believe I was also told another,
reasonable reason. But I cannot recall now. I'm sorry I cannot provide better
explanation now.

However, it's true that it does matter much whether the platform is encoded
into the version or into the context (perl:5.32:362021:A vs.
perl:5.32:2021:36A). If we hadn't it encoded anywhere, we could not store the
builds into Koji, and MBS:

    perl:5.32:2021:A          platform:36:0:0
    perl:5.32:2021:A          platform:35:0:0
    perl:5.32:2021:A          platform:34:0:0
    perl:5.32:2021:A          platform:33:0:0

And it's true that we would only special-case platform. It wouldn't be fair to
other modules. There must a stroger reason.

-- Petr

Attachment: signature.asc
Description: PGP signature

_______________________________________________
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 on the list, report it: https://pagure.io/fedora-infrastructure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux