sanity: skip make 4.2.1 warning for debian

Message ID 20220426194618.218353-1-nicolas.dechesne@linaro.org
State Accepted, archived
Commit 1d5d5278ff4f620cd786b85e880e8429a04a1548
Headers show
Series sanity: skip make 4.2.1 warning for debian | expand

Commit Message

Nicolas Dechesne April 26, 2022, 7:46 p.m. UTC
This is a follow up patch of:
ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)

Debian10 has the exact same version/sources for make as Ubuntu
(focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
https://packages.ubuntu.com/source/focal/make-dfsg.

As per the corresponding changelog, the patch mentioned in
ad5829aa1f8a, is included in both Debian and Ubuntu in make
4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.

Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
---
 meta/classes/sanity.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andre McCurdy April 26, 2022, 8:50 p.m. UTC | #1
On Tue, Apr 26, 2022 at 12:46 PM Nicolas Dechesne
<nicolas.dechesne@linaro.org> wrote:
>
> This is a follow up patch of:
> ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)
>
> Debian10 has the exact same version/sources for make as Ubuntu
> (focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
> https://packages.ubuntu.com/source/focal/make-dfsg.
>
> As per the corresponding changelog, the patch mentioned in
> ad5829aa1f8a, is included in both Debian and Ubuntu in make
> 4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.
>
> Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> ---
>  meta/classes/sanity.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> index c385d92e8b..c72a7b3ed3 100644
> --- a/meta/classes/sanity.bbclass
> +++ b/meta/classes/sanity.bbclass
> @@ -470,7 +470,7 @@ def check_make_version(sanity_data):
>
>      if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
>          distro = oe.lsb.distro_identifier()

Not directly related to your change, but shouldn't this be
lsb_distro_identifier() instead of oe.lsb.distro_identifier()?

> -        if "ubuntu" in distro:
> +        if "ubuntu" in distro or "debian" in distro:
>              return None
>          return "make version 4.2.1 is known to have issues on Centos/OpenSUSE and other non-Ubuntu systems. Please use a buildtools-make-tarball or a newer version of make.\n"
>      return None
> --
> 2.36.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#164881): https://lists.openembedded.org/g/openembedded-core/message/164881
> Mute This Topic: https://lists.openembedded.org/mt/90716488/3619030
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [armccurdy@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj April 26, 2022, 8:56 p.m. UTC | #2
On Tue, Apr 26, 2022 at 1:51 PM Andre McCurdy <armccurdy@gmail.com> wrote:
>
> On Tue, Apr 26, 2022 at 12:46 PM Nicolas Dechesne
> <nicolas.dechesne@linaro.org> wrote:
> >
> > This is a follow up patch of:
> > ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)
> >
> > Debian10 has the exact same version/sources for make as Ubuntu
> > (focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
> > https://packages.ubuntu.com/source/focal/make-dfsg.
> >
> > As per the corresponding changelog, the patch mentioned in
> > ad5829aa1f8a, is included in both Debian and Ubuntu in make
> > 4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.
> >
> > Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> > ---
> >  meta/classes/sanity.bbclass | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> > index c385d92e8b..c72a7b3ed3 100644
> > --- a/meta/classes/sanity.bbclass
> > +++ b/meta/classes/sanity.bbclass
> > @@ -470,7 +470,7 @@ def check_make_version(sanity_data):
> >
> >      if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
> >          distro = oe.lsb.distro_identifier()
>
> Not directly related to your change, but shouldn't this be
> lsb_distro_identifier() instead of oe.lsb.distro_identifier()?
>

lsb_distro_identifier would work when it is inheriting base.bbclass
otherwise the utility function is needed.

> > -        if "ubuntu" in distro:
> > +        if "ubuntu" in distro or "debian" in distro:
> >              return None
> >          return "make version 4.2.1 is known to have issues on Centos/OpenSUSE and other non-Ubuntu systems. Please use a buildtools-make-tarball or a newer version of make.\n"
> >      return None
> > --
> > 2.36.0
> >
> >
> >
> >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#164883): https://lists.openembedded.org/g/openembedded-core/message/164883
> Mute This Topic: https://lists.openembedded.org/mt/90716488/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Andre McCurdy April 26, 2022, 9:39 p.m. UTC | #3
On Tue, Apr 26, 2022 at 1:56 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> On Tue, Apr 26, 2022 at 1:51 PM Andre McCurdy <armccurdy@gmail.com> wrote:
> >
> > On Tue, Apr 26, 2022 at 12:46 PM Nicolas Dechesne
> > <nicolas.dechesne@linaro.org> wrote:
> > >
> > > This is a follow up patch of:
> > > ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)
> > >
> > > Debian10 has the exact same version/sources for make as Ubuntu
> > > (focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
> > > https://packages.ubuntu.com/source/focal/make-dfsg.
> > >
> > > As per the corresponding changelog, the patch mentioned in
> > > ad5829aa1f8a, is included in both Debian and Ubuntu in make
> > > 4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.
> > >
> > > Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> > > ---
> > >  meta/classes/sanity.bbclass | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> > > index c385d92e8b..c72a7b3ed3 100644
> > > --- a/meta/classes/sanity.bbclass
> > > +++ b/meta/classes/sanity.bbclass
> > > @@ -470,7 +470,7 @@ def check_make_version(sanity_data):
> > >
> > >      if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
> > >          distro = oe.lsb.distro_identifier()
> >
> > Not directly related to your change, but shouldn't this be
> > lsb_distro_identifier() instead of oe.lsb.distro_identifier()?
>
> lsb_distro_identifier would work when it is inheriting base.bbclass
> otherwise the utility function is needed.

Question isn't really whether it will work or not (if it doesn't work,
we should make it work) but rather whether any user-defined
LSB_DISTRO_ADJUST should be applied before checking if the host distro
is based on Debian/Ubuntu or not.

> > > -        if "ubuntu" in distro:
> > > +        if "ubuntu" in distro or "debian" in distro:
> > >              return None
> > >          return "make version 4.2.1 is known to have issues on Centos/OpenSUSE and other non-Ubuntu systems. Please use a buildtools-make-tarball or a newer version of make.\n"
> > >      return None
> > > --
> > > 2.36.0
> > >
> > >
> > >
> > >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#164883): https://lists.openembedded.org/g/openembedded-core/message/164883
> > Mute This Topic: https://lists.openembedded.org/mt/90716488/1997914
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Richard Purdie April 27, 2022, 10:40 a.m. UTC | #4
On Tue, 2022-04-26 at 14:39 -0700, Andre McCurdy wrote:
> On Tue, Apr 26, 2022 at 1:56 PM Khem Raj <raj.khem@gmail.com> wrote:
> > 
> > On Tue, Apr 26, 2022 at 1:51 PM Andre McCurdy <armccurdy@gmail.com> wrote:
> > > 
> > > On Tue, Apr 26, 2022 at 12:46 PM Nicolas Dechesne
> > > <nicolas.dechesne@linaro.org> wrote:
> > > > 
> > > > This is a follow up patch of:
> > > > ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)
> > > > 
> > > > Debian10 has the exact same version/sources for make as Ubuntu
> > > > (focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
> > > > https://packages.ubuntu.com/source/focal/make-dfsg.
> > > > 
> > > > As per the corresponding changelog, the patch mentioned in
> > > > ad5829aa1f8a, is included in both Debian and Ubuntu in make
> > > > 4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.
> > > > 
> > > > Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> > > > ---
> > > >  meta/classes/sanity.bbclass | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> > > > index c385d92e8b..c72a7b3ed3 100644
> > > > --- a/meta/classes/sanity.bbclass
> > > > +++ b/meta/classes/sanity.bbclass
> > > > @@ -470,7 +470,7 @@ def check_make_version(sanity_data):
> > > > 
> > > >      if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
> > > >          distro = oe.lsb.distro_identifier()
> > > 
> > > Not directly related to your change, but shouldn't this be
> > > lsb_distro_identifier() instead of oe.lsb.distro_identifier()?
> > 
> > lsb_distro_identifier would work when it is inheriting base.bbclass
> > otherwise the utility function is needed.
> 
> Question isn't really whether it will work or not (if it doesn't work,
> we should make it work) but rather whether any user-defined
> LSB_DISTRO_ADJUST should be applied before checking if the host distro
> is based on Debian/Ubuntu or not.

It would help to be a little more specific with the background. Having looked at
the code, we have two lsb functions, one in base.bbclass and one in
oe/lib/lsb.py. The one in base.bbclass is a wrapper which uses
LSB_DISTRO_ADJUST.

As far as I know, we don't use LSB_DISTRO_ADJUST in core at all. I suspect it
should really probably be added to the lsb.py function in most cases. Is there
any documentation or other info about when it should be applied and when it
should not?

I did have a look at
https://git.yoctoproject.org/poky/commit/meta/classes/base.bbclass?id=096306ecd1bb80fe5e732584caca0172305628a2
where it was introduced 10 years ago but there isn't much more info. 
Chris: Do we still need/use this?

As ever, patches are welcome both to improve this and perhaps to better document
it too but if I remember rightly your policy is not to send them :/.

Cheers,

Richard
Mike Crowe April 27, 2022, 1:22 p.m. UTC | #5
On Wednesday 27 April 2022 at 11:40:49 +0100, Richard Purdie wrote:
> As far as I know, we don't use LSB_DISTRO_ADJUST in core at all. I suspect it
> should really probably be added to the lsb.py function in most cases. Is there
> any documentation or other info about when it should be applied and when it
> should not?

We used to use LSB_DISTRO_ADJUST to stop Debian minor release upgrades
causing sstate paths to change up until about five years ago when we
upgraded to an oe-core version that only considered the major version to be
important.

> I did have a look at
> https://git.yoctoproject.org/poky/commit/meta/classes/base.bbclass?id=096306ecd1bb80fe5e732584caca0172305628a2
> where it was introduced 10 years ago but there isn't much more info. 

I believe that we use the mapping in SSTATE_MIRRORS to do the equivalent of
what is described in that commit message:

  SSTATE_MIRRORS ?= "\
  file://debian ${OUR_SSTATE_DIR}/debian-10 \n \
  file://debian-11 ${OUR_SSTATE_DIR}/debian-10 \n \
  file://debian-10 ${OUR_SSTATE_DIR}/debian-10 \n \
  \
  file://debian-9 ${OUR_SSTATE_DIR}/debian-9 \n \
  file://.* ${OUR_SSTATE_DIR}/PATH \n \
  "

(Our autobuilders are running Debian 10 at the moment, so anyone running
Debian 11 can make use of sstate files they wrote to debian-10, but anyone
running Debian 9 cannot.)

I have no idea whether this works for the Red Hat world though.

HTH.

Mike.
Andre McCurdy April 27, 2022, 4:54 p.m. UTC | #6
On Wed, Apr 27, 2022 at 3:40 AM Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
>
> On Tue, 2022-04-26 at 14:39 -0700, Andre McCurdy wrote:
> > On Tue, Apr 26, 2022 at 1:56 PM Khem Raj <raj.khem@gmail.com> wrote:
> > >
> > > On Tue, Apr 26, 2022 at 1:51 PM Andre McCurdy <armccurdy@gmail.com> wrote:
> > > >
> > > > On Tue, Apr 26, 2022 at 12:46 PM Nicolas Dechesne
> > > > <nicolas.dechesne@linaro.org> wrote:
> > > > >
> > > > > This is a follow up patch of:
> > > > > ad5829aa1f8a (sanity: Show a warning that make 4.2.1 is buggy on non-ubuntu systems)
> > > > >
> > > > > Debian10 has the exact same version/sources for make as Ubuntu
> > > > > (focal), e.g. https://packages.debian.org/source/buster/make-dfsg and
> > > > > https://packages.ubuntu.com/source/focal/make-dfsg.
> > > > >
> > > > > As per the corresponding changelog, the patch mentioned in
> > > > > ad5829aa1f8a, is included in both Debian and Ubuntu in make
> > > > > 4.2.1-1.1. So it's safe to use make 4.2.1 in Debian10.
> > > > >
> > > > > Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> > > > > ---
> > > > >  meta/classes/sanity.bbclass | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> > > > > index c385d92e8b..c72a7b3ed3 100644
> > > > > --- a/meta/classes/sanity.bbclass
> > > > > +++ b/meta/classes/sanity.bbclass
> > > > > @@ -470,7 +470,7 @@ def check_make_version(sanity_data):
> > > > >
> > > > >      if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
> > > > >          distro = oe.lsb.distro_identifier()
> > > >
> > > > Not directly related to your change, but shouldn't this be
> > > > lsb_distro_identifier() instead of oe.lsb.distro_identifier()?
> > >
> > > lsb_distro_identifier would work when it is inheriting base.bbclass
> > > otherwise the utility function is needed.
> >
> > Question isn't really whether it will work or not (if it doesn't work,
> > we should make it work) but rather whether any user-defined
> > LSB_DISTRO_ADJUST should be applied before checking if the host distro
> > is based on Debian/Ubuntu or not.
>
> It would help to be a little more specific with the background. Having looked at
> the code, we have two lsb functions, one in base.bbclass and one in
> oe/lib/lsb.py. The one in base.bbclass is a wrapper which uses
> LSB_DISTRO_ADJUST.
>
> As far as I know, we don't use LSB_DISTRO_ADJUST in core at all. I suspect it
> should really probably be added to the lsb.py function in most cases. Is there
> any documentation or other info about when it should be applied and when it
> should not?

Adding LSB_DISTRO_ADJUST directly to lsb.py would be fine I think.
Personally I use LSB_DISTRO_ADJUST to map Linux Mint to Ubuntu. Linux
Mint is binary compatible with Ubuntu (created from Ubuntu package
feeds). The LSB_DISTRO_ADJUST mapping allows native sstate from a
build server running Ubuntu to be reused on a developer laptop running
Linux Mint.

  https://github.com/lgirdk/meta-mng/blob/ofw/conf/distro/include/mng-sstate.inc

If the make 4.2.1 sanity check were to include LSB_DISTRO_ADJUST then
(for me at least) it would suppress unnecessary warnings when running
on Linux Mint (ie with the Ubuntu version of make). But in general, if
we give users a method to adjust how their host distro is identified
then we should enable it consistently unless there's a clear reason
not to.

Patch

diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index c385d92e8b..c72a7b3ed3 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -470,7 +470,7 @@  def check_make_version(sanity_data):
 
     if bb.utils.vercmp_string_op(version, "4.2.1", "=="):
         distro = oe.lsb.distro_identifier()
-        if "ubuntu" in distro:
+        if "ubuntu" in distro or "debian" in distro:
             return None
         return "make version 4.2.1 is known to have issues on Centos/OpenSUSE and other non-Ubuntu systems. Please use a buildtools-make-tarball or a newer version of make.\n"
     return None