From: "Luca Boccassi" <luca.boccassi@microsoft.com>
To: "richard.purdie@linuxfoundation.org"
<richard.purdie@linuxfoundation.org>,
"openembedded-core@lists.openembedded.org"
<openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCH v3] util-linux: split uuid in separate recipe to allow bootstrapping
Date: Fri, 11 Dec 2020 09:51:23 +0000 [thread overview]
Message-ID: <a308f746624a7b47541d746265831a187f2535da.camel@microsoft.com> (raw)
In-Reply-To: <8135d8b348600bcf9c7d3c08fbd395f912c68aea.camel@linuxfoundation.org>
On Thu, 2020-12-10 at 20:04 +0000, Richard Purdie wrote:
> On Thu, 2020-12-10 at 18:47 +0000, Luca Boccassi wrote:
> > On Thu, 2020-12-10 at 15:52 +0000, Richard Purdie wrote:
> > > On Mon, 2020-11-23 at 13:28 +0000, Luca Bocassi wrote:
> > > > From: Luca Boccassi <luca.boccassi@microsoft.com>
> > > >
> > > > In v2.35 util-linux gained an (optional) build
> > > > dependency on libcryptsetup. But libcryptsetup build-depends on
> > > > util-linux for blkid (optional, can be disabled) and uuid
> > > > (mandatory).
> > > > Split out util-linux-uuid in a different recipe to break the
> > > > cycle.
> > > >
> > > > Add a packageconfig switch (disabled by default) to allow using
> > > > the
> > > > new dependency.
> > > >
> > > > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fkarelzak%2Futil-linux%2Fpull%2F898&data=04%7C01%7CLuca.Boccassi%40microsoft.com%7Cf1cc5d5a36b94793f16708d89d46dfac%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637432275624402419%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=k69BQ6hOpusjBlcC%2FBo%2BFRLsAc%2FiYd5pLPfh65lcRdQ%3D&reserved=0
> > > >
> > > > Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > > > ---
> > > > v1: util-linux 2.35 is not out yet, but I'd like to get the
> > > > preparatory work
> > > > underway as I'm not sure if this is the best approach or if
> > > > there are
> > > > alternatives. Suggestions and comments very welcome. Thanks!
> > > > v2: changed packages names to reflect old ones (eg: libuuid1 ->
> > > > util-linux-libuuid)
> > > > and leave uuid build enable in main recipe to allow for
> > > > uuidgen build to happen,
> > > > as it does not have its own autoconf switch. Delete the
> > > > library manualy from
> > > > the main recipe after build instead, and add dependency.
> > > > Might help to break loop python3 -> util-linux -> libselinux
> > > > -> python3, as it's
> > > > only libuuid that is needed, see
> > > > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.yoctoproject.org%2Fg%2Fyocto%2Fmessage%2F47570&data=04%7C01%7CLuca.Boccassi%40microsoft.com%7Cf1cc5d5a36b94793f16708d89d46dfac%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637432275624402419%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=poH8DFxARF1Myy%2BRRirbOE3bJzu5uSO%2F%2BLfsalK%2F4ro%3D&reserved=0
> > > > v3: rebased and refactored to have a common util-linux.inc file
> > > >
> > >
> > > I'm afraid this causes do_package_qa errors in basic testing:
> > >
> > > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fautobuilder.yoctoproject.org%2Ftyphoon%2F%23%2Fbuilders%2F83%2Fbuilds%2F1668&data=04%7C01%7CLuca.Boccassi%40microsoft.com%7Cf1cc5d5a36b94793f16708d89d46dfac%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637432275624402419%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=uiLItrvBcoNjjjCFZaUlQfC1%2B26N%2BnV72BUiy%2FuBq0M%3D&reserved=0
> >
> > Thanks, added RDEPENDS in v4. Strange that those didn't pop up when
> > building poky locally, I usually get QA warnings as expected.
> > Anything
> > in local.conf to enable to get them?
>
> No, you should see it in a standard build. It did make me wonder how
> this was tested :/.
Very weird. Maybe some packageconfig difference? I did not go through
all the possible permutations manually.
We have been using this recipe change in production for a year now, so
it has plenty of builds behind.
> > > I am worried about this change as we're starting to see a number of
> > > circular dependencies in util-linux (there is a new bug about the
> > > pylibmount PACKAGECONFIG option too), maybe we should flag this
> > > upstream?
> > >
> > > Multiple recipes like this usually turn into a maintenance
> > > nightmare
> > > unfortunately which is part of my reluctance to go in this
> > > direction,
> > > not sure we have any choice though.
> >
> > Well I've added the feature, and both the maintainer and myself were
> > aware of the implications. It's optional, so on distros with multi-
> > stage bootstrapping functionality like Debian/Ubuntu/RHEL/Suse/etc it
> > can be automatically disabled for the first stage build. At runtime
> > it can also be optional via dlopen, if desired (via --configure
> > flag).
>
> I have to ask why libuuid couldn't be done in a separate repository and
> avoid the need to do a multi-stage build of a component? To me at
> least, it would seem to make sense to logically split the library code
> out, then it avoids all the complexity. Yes, that means a different
> component to release but that isn't unusual.
Because there's no need for the extra complications - again, it's all
optional features, so bootstrapping is not an issue when the tooling is
there to support it.
I'm not a util-linux maintainer so my opinion on the subject counts for
precisely nothing, but as a contributor and user I'd not be very happy
if it was stuck to the lowest common denominator.
> > Yocto could really use multi stage support - this isn't the first and
> > won't be the last occurrence. Just my 2c...
>
> Well, we can do it as you're proving, its just ugly and hard to
> maintain. I don't think the other distros will be particularly happy
> about needing to do it either. Outside of libgcc, we've not really
> found that we need to do this often at all and the compiler/libc
> interface is a lot more "special" than uuid.
But that's what I'm saying: it doesn't have to be ugly, if the
infrastructure is there to support it.
On Debian and derivatives, you just mark the dependency with <!stage1>
- and that's it. When bootstrapping you start from stage1 and the
resolver skips those. If the package configure/make scripts are done
well, by default optional dependencies are skipped if not available and
if not explicitly set - and util-linux does that.
In the RPM world, the spec has conditional macros and you set the
appropriate one at the build config level (eg: in the lower ring
project on OBS).
It's not perfect of course, and requires attention, and there are
complications and gotchas, and things do go wrong at times - but such
is life in the software world.
> Thanks for updating the patch. I'll put it back into the queue and test
> the new version.
Thank you - does the approach of adding RDEPENDS look right? The
interaction between those variables and the native/nativesdk builds
still confuses me a lot, and I get it wrong all the time.
--
Kind regards,
Luca Boccassi
next prev parent reply other threads:[~2020-12-11 9:51 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-05 20:13 [PATCH] util-linux: split uuid in separate recipe to allow bootstrapping luca.boccassi
2019-12-05 23:29 ` Ross Burton
2019-12-09 16:24 ` [PATCH v2] " luca.boccassi
2020-11-23 13:28 ` [PATCH v3] " Luca Bocassi
2020-12-10 15:52 ` [OE-core] " Richard Purdie
2020-12-10 18:47 ` Luca Boccassi
2020-12-10 20:04 ` Richard Purdie
2020-12-11 9:51 ` Luca Boccassi [this message]
2020-12-11 16:54 ` Richard Purdie
2020-12-14 16:32 ` Luca Boccassi
2020-12-10 18:46 ` [PATCH v4] " Luca Bocassi
2021-01-19 20:52 ` Richard Purdie
2021-01-19 23:13 ` [OE-core] " Paul Eggleton
2021-01-19 23:23 ` Richard Purdie
2021-01-19 23:28 ` Paul Eggleton
2021-02-25 15:31 ` Luca Bocassi
2021-02-25 15:30 ` [PATCH v5] " Luca Bocassi
2021-02-26 19:02 ` [OE-core] " Khem Raj
2021-03-02 19:01 ` Luca Bocassi
2021-02-27 14:52 ` Alexandre Belloni
2021-02-27 15:08 ` Alexandre Belloni
2021-02-27 15:15 ` Alexandre Belloni
2021-03-02 17:31 ` Luca Bocassi
2021-03-02 18:49 ` Alexandre Belloni
2021-03-03 22:30 ` Richard Purdie
2021-03-04 12:05 ` Luca Bocassi
2021-03-04 12:27 ` [PATCH v6] " Luca Bocassi
2021-03-05 0:13 ` Richard Purdie
2021-03-05 11:03 ` Luca Bocassi
2021-03-05 11:02 ` [PATCH v7] " Luca Bocassi
2021-03-08 19:29 ` Richard Purdie
2021-03-09 11:07 ` Luca Bocassi
2021-03-09 11:18 ` [OE-core] " Kory Maincent
2021-03-09 13:26 ` Luca Bocassi
2021-03-09 13:47 ` Kory Maincent
2021-03-09 13:48 ` Richard Purdie
2021-03-09 13:56 ` Luca Bocassi
2021-03-09 11:13 ` [PATCH v8] " Luca Bocassi
2021-03-09 13:56 ` [PATCH v9] " Luca Bocassi
2021-03-09 23:43 ` Richard Purdie
2021-03-10 18:28 ` Luca Bocassi
2021-03-11 10:15 ` Luca Bocassi
2021-03-11 10:31 ` Richard Purdie
2021-03-11 14:37 ` Luca Bocassi
2021-03-11 14:38 ` [PATCH v10] " Luca Bocassi
2021-03-11 14:44 ` Richard Purdie
2021-03-11 15:10 ` Luca Bocassi
2021-03-11 15:09 ` [PATCH v11] " Luca Bocassi
2021-03-14 22:10 ` Richard Purdie
2021-03-15 10:44 ` Luca Bocassi
2021-03-15 10:49 ` Richard Purdie
2021-03-15 11:50 ` Luca Bocassi
2021-03-15 12:21 ` Richard Purdie
2021-03-15 13:04 ` Luca Bocassi
2021-03-15 13:55 ` [OE-core] " Martin Jansa
2021-03-15 13:57 ` Richard Purdie
[not found] ` <166C88B2CBAB1BAF.20509@lists.openembedded.org>
2021-03-15 21:51 ` Richard Purdie
2021-03-24 16:52 ` Scott Branden
2021-03-24 17:03 ` Luca Boccassi
2021-03-24 17:37 ` Richard Purdie
2021-03-24 17:52 ` Luca Bocassi
2021-03-25 9:17 ` Oleksiy Obitotskyy
2021-03-25 9:34 ` Richard Purdie
2021-03-25 9:48 ` Luca Bocassi
2021-03-25 14:22 ` Peter Kjellerstedt
2021-03-25 14:27 ` Richard Purdie
2021-03-25 15:45 ` Luca Bocassi
2021-03-25 16:01 ` Khem Raj
2021-03-25 16:19 ` Peter Kjellerstedt
2021-03-25 16:51 ` Richard Purdie
2021-03-26 18:06 ` Peter Kjellerstedt
2021-03-26 18:12 ` Richard Purdie
2021-03-26 18:22 ` Andre McCurdy
2019-12-09 16:33 ` [PATCH] " Luca Boccassi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a308f746624a7b47541d746265831a187f2535da.camel@microsoft.com \
--to=luca.boccassi@microsoft.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox