[OE-core] [PATCH V2] dnf, libdnf: Ignore if PACKAGE_CLASSES does not have rpm

Alexander Kanavin alex.kanavin at gmail.com
Thu Feb 13 08:19:35 UTC 2020


I took a look at meta/lib/oeqa/runtime/cases/rpm.py.

All tests depend on test_rpm_query, which should be skipped if rpm is not
used for packaging:

        status, output = self.target.run('ls /var/lib/rpm/')
        if status != 0:
            self.skipTest('No /var/lib/rpm on target')

Can you please check, how the tests fails for you exactly, and why
/var/lib/rpm exists (and what is the content of it)?

The test used to have the check I am talking about, but it was removed by

commit 633bd85270922d71ab4b1f94cd166da51fbe1458
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Thu Nov 8 19:55:17 2018 +0000

    oeqa/runtime/cases: Improve test dependency information
...
-    @classmethod
-    def setUpClass(cls):
-        if cls.tc.td['PACKAGE_CLASSES'].split()[0] != 'package_rpm':
-            cls.skipTest('Tests require image to be build from rpm')

Alex


On Thu, 13 Feb 2020 at 08:53, Alexander Kanavin <alex.kanavin at gmail.com>
wrote:

> World builds also enable apt and dpkg, but there is no problem with that
> for you? There is no consistency here; if you want to start excluding
> things from world based on what packaging is enabled, you need to treat all
> options equally, including deb and ipk.
>
> The original problem was that libsolv pulls in the full set of rpm
> executables and libraries, which erroneously triggers the rpm test on
> target. We can solve this by making libsolv pull in only the rpm libraries
> and not executables, so that rpm test will be skipped. Or maybe even make
> the test itself check whether rpm is the packaging format and skip
> otherwise.
>
> Alex
>
> On Thu 13. Feb 2020 at 7.01, Khem Raj <raj.khem at gmail.com> wrote:
>
>> On Wed, Feb 12, 2020 at 8:49 PM Alexander Kanavin
>> <alex.kanavin at gmail.com> wrote:
>> >
>> > But you do not need to fix or touch dnf at all. You only need to adjust
>> rpm packaging and split it in two parts instead of bundling everything into
>> a single package.
>> >
>>
>> when we do world builds without package_rpm, dnf and related packages
>> get compiled which is unnecessary and moreover wrong and when we mark
>> libsolv to enable rpmdb only for package_rpm, this becomes even more
>> evident.
>>
>> Perhaps, I am missing what you intend to convey, in that case maybe you
>> can send
>> code changes to support what you are intending here.
>>
>> > Alex
>> >
>> > On Wed 12. Feb 2020 at 23.16, Khem Raj <raj.khem at gmail.com> wrote:
>> >>
>> >> On Wed, Feb 12, 2020 at 2:00 PM Alexander Kanavin
>> >> <alex.kanavin at gmail.com> wrote:
>> >> >
>> >> > I would still prefer to just split rpm packaging into binaries and
>> libraries, and avoid the need to blacklist and tweak recipes based on what
>> PACKAGE_CLASSES is set to altogether. That setting should not leak into
>> recipes, and should only matter from do_package onwards. Can you look into
>> the rpm recipe please?
>> >> >
>> >>
>> >>  dnf and dnf related packages expecting rpmdb support in libresolv. I
>> >> do not know dnf well enough to fix it and moreover it has no direct
>> >> use for my usecase either. I also don't see a point of entertaining
>> >> dnf for non-rpm backends. Its not intended for that either even if we
>> >> were to make dnf not want rpmdb what good will it do to build for
>> >> distros who do not use rpm. These changes do not change poky defaults
>> >> which use rpm as default. OE-core does not and I dont know of any
>> >> opkg user who also has rpmdb needed.
>> >>
>> >> > Alex
>> >> >
>> >> > On Wed, 12 Feb 2020 at 20:19, Khem Raj <raj.khem at gmail.com> wrote:
>> >> >>
>> >> >> dnf does not work with opkg or dpkg/apt anyway
>> >> >>
>> >> >> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> >> >> ---
>> >> >> v2: Use PNBLACKLIST instead of anon python
>> >> >>
>> >> >>  meta/recipes-devtools/dnf/dnf_4.2.2.bb        | 2 ++
>> >> >>  meta/recipes-devtools/libdnf/libdnf_0.28.1.bb | 1 +
>> >> >>  2 files changed, 3 insertions(+)
>> >> >>
>> >> >> diff --git a/meta/recipes-devtools/dnf/dnf_4.2.2.bb
>> b/meta/recipes-devtools/dnf/dnf_4.2.2.bb
>> >> >> index f38167f1ad..220f1aabbd 100644
>> >> >> --- a/meta/recipes-devtools/dnf/dnf_4.2.2.bb
>> >> >> +++ b/meta/recipes-devtools/dnf/dnf_4.2.2.bb
>> >> >> @@ -84,3 +84,5 @@ SYSTEMD_SERVICE_${PN} = "dnf-makecache.service
>> dnf-makecache.timer \
>> >> >>                           dnf-automatic-notifyonly.service
>> dnf-automatic-notifyonly.timer \
>> >> >>  "
>> >> >>  SYSTEMD_AUTO_ENABLE ?= "disable"
>> >> >> +
>> >> >> +PNBLACKLIST[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES',
>> 'package_rpm', '', 'does not build correctly without package_rpm in
>> PACKAGE_CLASSES', d)}"
>> >> >> diff --git a/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
>> b/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
>> >> >> index 882c435b32..49afa04812 100644
>> >> >> --- a/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
>> >> >> +++ b/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
>> >> >> @@ -26,4 +26,5 @@ EXTRA_OECMAKE_append_class-native = "
>> -DWITH_GIR=OFF"
>> >> >>  EXTRA_OECMAKE_append_class-nativesdk = " -DWITH_GIR=OFF"
>> >> >>
>> >> >>  BBCLASSEXTEND = "native nativesdk"
>> >> >> +PNBLACKLIST[libdnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES',
>> 'package_rpm', '', 'does not build correctly without package_rpm in
>> PACKAGE_CLASSES', d)}"
>> >> >>
>> >> >> --
>> >> >> 2.25.0
>> >> >>
>> >> >> --
>> >> >> _______________________________________________
>> >> >> Openembedded-core mailing list
>> >> >> Openembedded-core at lists.openembedded.org
>> >> >> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20200213/6ec74a79/attachment.html>


More information about the Openembedded-core mailing list