On Thu, Nov 14, 2019 at 1:40 PM Stephen Gallagher <sgallagh(a)redhat.com> wrote:
On Thu, Nov 14, 2019 at 12:12 PM Miro Hrončok <mhroncok(a)redhat.com> wrote:
>
> On 09. 10. 19 22:46, Ben Cotton wrote:
> >
https://fedoraproject.org/wiki/Changes/Modules_In_Non-Modular_Buildroot
> >
> > Enable module default streams in the buildroot repository for modular
> > and non-modular RPMs.
> >
> > == Summary ==
> > This Change (colloquially referred to as "Ursa Prime") enables the
> > Koji build-system to include the RPM artifacts provided by module
> > default streams in the buildroot when building non-modular (or
> > "traditional") RPMs.
>
> I have one more technical concern.
>
> Suppose a packager decides to package the "mycoolapp" software as a
non-modular
> package. "mycoolapp" is written in Python, it builds again non-modular
Python,
> currently 3.8, it requires "python(abi) = 3.8" on runtime.
>
> The packager decides to use avocado in %check. Avocado comes from a module, it
> requires "python(abi) = 3.8" as well, because the modular package was
built with
> Python 3.8. Avocado is in the bulidroot, so everything works.
>
> The Python maintainers (that includes me) decide to update to Python 3.9 in
> Fedora 33. They request a side tag to do that. They update the python3 to 3.9
> and they mass rebuild all non-modular Python packages in it. "mycoolapp"
cannot
> resolve build dependencies because avocado requires "python(abi) = 3.8".
>
> The Python maintainers need to detect this and figure out what happened.
> Then, the Python maintainers need to either:
>
> 1. Exclude "mycoolapp" from the rebuild. That is possible until dozens
of
> other packages require "mycoolapp".
>
> 2. Ask the avocado maintainers to rebuild their module in the side tag and ask
> releng to add the side-tag-built module into the side-tag buildroot (if it is
> even possible).
>
> 3. Modify the spec of "mycoolapp" to temporarily disable %check and
loose the
> avocado dependency.
>
> Or is there some other way?
>
Does Python actually break ABI on minor releases? So a full rebuild is
required for that case?
It is, yes. The Python ABI is versioned as MAJOR.MINOR.
--
真実はいつも一つ!/ Always, there's only one truth!