Re: [OE-core] [PATCH 01/20] oe-selftest: add a test for recipes without maintainers
On 02/01/2018 10:41 PM, Paul Eggleton wrote: I understand the intention, but I don't think oe-selftest is the right place to be doing this. It's going to fail for sure if you have any non-OE-Core layers in your configuration. One thing I have continued to campaign for (and I'm aware that not everyone completely agrees) is that oe-selftest should be able to be run with people's own configurations, we shouldn't necessarily assume that it's only our default being tested - that way we maximise oe-selftest's utility and audience. Of course there's a limit to that, if someone's esoteric configuration breaks it they get to keep the pieces - but this will definitely break with anyone's custom configuration, esoteric or otherwise. I do agree with this. We've had this exact conversation with Ross a few weeks back, and he promised to fix the test so that it's limited to recipes in oe-core. Take me re-sending the patch as a gentle reminder for that. :) By all means let's have a script that does this - it's even trivial to write one with tinfoil. No manual scripts (that no one except me even knows about) please. I really do want to automate this, and have it run regularly on the autobuilder. Otherwise, one can just issue: bitbake -c checkpkg world && grep -v @ tmp/log/checkpkg.csv Alex -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH 01/20] oe-selftest: add a test for recipes without maintainers
Hi Alex, On Friday, 2 February 2018 7:01:51 AM NZDT Alexander Kanavin wrote: > 'bitbake -c checkpkg world' is moved to class initializer to avoid > it being run twice in a row. > > Signed-off-by: Alexander Kanavin> --- > meta/lib/oeqa/selftest/cases/distrodata.py | 32 > +- > 1 file changed, 27 insertions(+), 5 deletions(-) > > diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py > b/meta/lib/oeqa/selftest/cases/distrodata.py > index 12540adc7d8..dd0760cce93 100644 > --- a/meta/lib/oeqa/selftest/cases/distrodata.py > +++ b/meta/lib/oeqa/selftest/cases/distrodata.py > @@ -9,6 +9,12 @@ class Distrodata(OESelftestTestCase): > @classmethod > def setUpClass(cls): > super(Distrodata, cls).setUpClass() > +feature = 'INHERIT += "distrodata"\n' > +feature += 'LICENSE_FLAGS_WHITELIST += " commercial"\n' > + > +cls.write_config(cls, feature) > +bitbake('-c checkpkg world') > + > > @OETestID(1902) > def test_checkpkg(self): > @@ -18,11 +24,6 @@ class Distrodata(OESelftestTestCase): > Product: oe-core > Author: Alexander Kanavin > """ > -feature = 'INHERIT += "distrodata"\n' > -feature += 'LICENSE_FLAGS_WHITELIST += " commercial"\n' > - > -self.write_config(feature) > -bitbake('-c checkpkg world') > checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), > "checkpkg.csv")).readlines()[1:] > regressed_failures = [pkg_data[0] for pkg_data in > [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == > 'UNKNOWN_BROKEN'] > regressed_successes = [pkg_data[0] for pkg_data in > [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == > 'KNOWN_BROKEN'] > @@ -40,3 +41,24 @@ The following packages have been checked successfully for > upstream versions, > but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. > Please remove that line from the recipes. > """ + "\n".join(regressed_successes) > self.assertTrue(len(regressed_failures) == 0 and > len(regressed_successes) == 0, msg) > + > +def test_maintainers(self): > +""" > +Summary: Test that recipes have a maintainer > +Expected:All recipes (except a few special static/testing ones) > should have a maintainer listed in maintainers.inc file. > +Product: oe-core > +Author: Alexander Kanavin > +""" > +def is_exception(pkg): > +exceptions = ["packagegroup-", "initramfs-", > "systemd-machine-units", "container-image-testpkg", "postinst", > "devtool-test-", "selftest-ed", "target-sdk-provides-dummy"] > +for i in exceptions: > + if i in pkg: > + return True > +return False > + > +checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), > "checkpkg.csv")).readlines()[1:] > +no_maintainer_list = [pkg_data[0] for pkg_data in > [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[14] == '' > and not is_exception(pkg_data[0])] > +msg = """ > +The following packages do not have a maintainer assigned to them. Please > add an entry to meta/conf/distro/include/maintainers.inc file. > +""" + "\n".join(no_maintainer_list) > +self.assertTrue(len(no_maintainer_list) == 0, msg) > I understand the intention, but I don't think oe-selftest is the right place to be doing this. It's going to fail for sure if you have any non-OE-Core layers in your configuration. One thing I have continued to campaign for (and I'm aware that not everyone completely agrees) is that oe-selftest should be able to be run with people's own configurations, we shouldn't necessarily assume that it's only our default being tested - that way we maximise oe-selftest's utility and audience. Of course there's a limit to that, if someone's esoteric configuration breaks it they get to keep the pieces - but this will definitely break with anyone's custom configuration, esoteric or otherwise. By all means let's have a script that does this - it's even trivial to write one with tinfoil. Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH 01/20] oe-selftest: add a test for recipes without maintainers
'bitbake -c checkpkg world' is moved to class initializer to avoid it being run twice in a row. Signed-off-by: Alexander Kanavin--- meta/lib/oeqa/selftest/cases/distrodata.py | 32 +- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py index 12540adc7d8..dd0760cce93 100644 --- a/meta/lib/oeqa/selftest/cases/distrodata.py +++ b/meta/lib/oeqa/selftest/cases/distrodata.py @@ -9,6 +9,12 @@ class Distrodata(OESelftestTestCase): @classmethod def setUpClass(cls): super(Distrodata, cls).setUpClass() +feature = 'INHERIT += "distrodata"\n' +feature += 'LICENSE_FLAGS_WHITELIST += " commercial"\n' + +cls.write_config(cls, feature) +bitbake('-c checkpkg world') + @OETestID(1902) def test_checkpkg(self): @@ -18,11 +24,6 @@ class Distrodata(OESelftestTestCase): Product: oe-core Author: Alexander Kanavin """ -feature = 'INHERIT += "distrodata"\n' -feature += 'LICENSE_FLAGS_WHITELIST += " commercial"\n' - -self.write_config(feature) -bitbake('-c checkpkg world') checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), "checkpkg.csv")).readlines()[1:] regressed_failures = [pkg_data[0] for pkg_data in [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == 'UNKNOWN_BROKEN'] regressed_successes = [pkg_data[0] for pkg_data in [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == 'KNOWN_BROKEN'] @@ -40,3 +41,24 @@ The following packages have been checked successfully for upstream versions, but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please remove that line from the recipes. """ + "\n".join(regressed_successes) self.assertTrue(len(regressed_failures) == 0 and len(regressed_successes) == 0, msg) + +def test_maintainers(self): +""" +Summary: Test that recipes have a maintainer +Expected:All recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file. +Product: oe-core +Author: Alexander Kanavin +""" +def is_exception(pkg): +exceptions = ["packagegroup-", "initramfs-", "systemd-machine-units", "container-image-testpkg", "postinst", "devtool-test-", "selftest-ed", "target-sdk-provides-dummy"] +for i in exceptions: + if i in pkg: + return True +return False + +checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), "checkpkg.csv")).readlines()[1:] +no_maintainer_list = [pkg_data[0] for pkg_data in [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[14] == '' and not is_exception(pkg_data[0])] +msg = """ +The following packages do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file. +""" + "\n".join(no_maintainer_list) +self.assertTrue(len(no_maintainer_list) == 0, msg) -- 2.15.1 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core