Monday 25 May 2020

Re: Help understanding the package set we need to maintain for partial i386

On Tue, May 19, 2020 at 5:43 PM Christian Ehrhardt
<christian.ehrhardt@canonical.com> wrote:
>
> On Mon, May 18, 2020 at 9:25 PM Steve Langasek
> <steve.langasek@ubuntu.com> wrote:
> >
> > Hi Christian,
> >
> > On Mon, May 18, 2020 at 03:57:39PM +0200, Christian Ehrhardt wrote:
> > > Hi,
> > > I was revisiting one of the packages the server team usually looks
> > > after: `rdma-core`.
> > > Late in the focal release cycle I was asked to mark the `pandoc`
> > > build-dependency with !i386 as it doesn't exist there and was causing
> > > problems [1]. I was revisiting this now to resolve it in a better way
> > > to be able to make the package a sync again.
> >
> > > I had a discussion with Debian and started to wonder why this is a
> > > problem for Ubuntu at all. That made me identify a weak spot in my
> > > understanding of partial i386 [3][4].
> > > The odd thing to me is that `rdma-core` isn't part of the i386
> > > whitelist [5], so why would it be a problem that the d/control lists
> > > pandoc as build-dep - I'd have expected it to not build at all.
> > > Then I realized that germinate still pulls it in [6], but failed to
> > > see why. Is it that we actually have i386 builds on the whitelist and
> > > in addition all-of-its-build-deps ?
> >
> > The relevant germinate output is
> > https://people.canonical.com/~ubuntu-archive/germinate-output/i386.groovy/i386+build-depends
> >
> > This shows the source packages that are in the set, as well as why they're
> > pulled in.
> >
> > rdma-core is there as a dependency of openmpi, which is a dependency of
> > mpi-defaults, which is a build-dependency of boost.
>
> Thank you for this link on top of the ones I have checked.
>
> > There are a lot more packages that need to be built on i386 than those that
> > are directly in the whitelist, because we need a closure over
> > build-dependencies in order to be able to build the packages that are in the
> > whitelist.
>
> I was seeing that it was more, thanks for confirming that it is due to
> the dependencies.
> I have added this to the wiki page [4] so that fewer people have to
> ask again :-)
>
> > > Furthermore that might explain why the only dependency left is openmpi
> > > which also isn't part of the whitelist [5] but shown in germinate [6].
> >
> > > $ reverse-depends --release=groovy --arch=i386 src:rdma-core
> > > Reverse-Depends
> > > * libopenmpi-dev (for libibverbs-dev)
> >
> > > I now wonder if a much easier fix might be to remove the build
> > > dependency to rdma-core on src:openmpi (for i386 only) which would
> > > finally make rdma-core really not building on i386. Is that a better
> > > solution? Openmpi in turn has a much longer list of things depending
> > > on it, doing the cut at openmpi->rdma-core seems to be the cleanest.
> >
> > I have no preference on whether we do the cut above or below rdma. If you
> > find that having openmpi not depend on rdma-core on i386, and keeping
> > rdma-core in sync, is easier for maintenance, then that's fine.
>
> Looking at openmpi more in detail it seems someone called "Steve"
> already gave this a shot :-)
> The current Delta we have there is:
> * Also disable the direct build-dependency on libibverbs-dev (from
> rdma-core) on i386.
> * Disable libfabric support on i386 to avoid pulling in rdma-core.
>
> So since we already have delta on openmpi due to i386 let us try to
> reduce it to just openmpi.
> It seems the build deps are correct, but there is a hard dependency
> statement in d/control:
> libibverbs-dev (>= 1.1.7) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386]
>
> That just needs the same !i386 treatment as the build-deps you have
> already done.
> Hopefully rdma-core will no more be pulled then.
>
> I'll do the openmpi change and re-check the i386 germinate a day later
> if rdma-core really was let go on i386.

Hi Steve (and all of Ubuntu-dev),
so far things almost worked as expected :-)

The change for openmp [1] worked and migrated to groovy-release.
The new dependency worked as well and germinate [2] now reports to no
more pull in rdma-core on i386.
But on the subsequent sync of rdma-core [3] I see i386 is still trying
to be built.
So I face the obvious "missing build on i386: ibacm, ..." [4] in update-excuses.

I wonder what to do now, is this another case not yet documented in [5]?
Do I need to call for an archive admin to update the "effective
whitelist" accordingly?

Thanks in advance,
Christian

[1]: https://launchpad.net/ubuntu/+source/openmpi/4.0.3-6ubuntu2
[2]: https://people.canonical.com/~ubuntu-archive/germinate-output/i386.groovy/i386+build-depends
[3]: https://launchpad.net/ubuntu/+source/rdma-core/29.0-1
[4]: https://people.canonical.com/~ubuntu-archive/proposed-migration/update_excuses.html
[5]: https://wiki.ubuntu.com/i386

> > > But then I have realized that while there are not more runtime
> > > dependencies, build dependencies in i386 seem to be quite a lot still
> > > (reverse-depends --release=groovy --arch=i386 --build-dep
> > > src:rdma-core shows 41).
> >
> > As far as I know these are all false-positives; I don't know that
> > reverse-depends --build-dep --arch=foo ever does anything useful.
> > Spot-checking the output, I see that most of these packages only have arch:
> > all packages published on i386.
> >
> > > With this mail I'd look for:
> > > a) general guidance on `is the effective i386 build = whitelist + build-deps`
> > > b) feedback on the suggestion to remove the rdma-core build dep on
> > > openmpi; or would all 41 build-deps have to go away?
> > > c) other alternatives
> >
> > > The answers to (a) we could add to the wiki [4].
> > > The answers to (b)+(c) will hopefully help me to go on with this, it
> > > might eventually come down to keeping the current Delta (trivial) in
> > > rdma-core, but along the way understanding the inner workings better
> > > would be great.
> > >
> > > [1]: https://launchpad.net/ubuntu/+source/rdma-core/28.0-1ubuntu1
> > > [2]: https://github.com/linux-rdma/rdma-core/pull/756#issuecomment-630138899
> > > [3]: https://discourse.ubuntu.com/t/community-process-for-32-bit-compatibility/12598
> > > [4]: https://wiki.ubuntu.com/i386
> > > [5]: https://git.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/+git/i386/tree/i386
> > > [6]: https://people.canonical.com/~ubuntu-archive/germinate-output/i386.focal/i386+build-depends.sources
> >
> > --
> > Steve Langasek Give me a lever long enough and a Free OS
> > Debian Developer to set it on, and I can move the world.
> > Ubuntu Developer https://www.debian.org/
> > slangasek@ubuntu.com vorlon@debian.org
>
>
>
> --
> Christian Ehrhardt
> Staff Engineer, Ubuntu Server
> Canonical Ltd

--
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

--
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel