On Wednesday 07 July 2021 at 17:48:20 +0100, Richard Purdie wrote:
> On Wed, 2021-07-07 at 17:43 +0100, Richard Purdie via lists.openembedded.org 
> wrote:
> > On Wed, 2021-07-07 at 14:05 +0100, Mike Crowe wrote:
> > > On Wednesday 07 July 2021 at 13:25:17 +0100, Richard Purdie wrote:
> > > > On Wed, 2021-07-07 at 12:53 +0100, Mike Crowe via 
> > > > lists.openembedded.org wrote:
> > > > > We're using LICENSE_CREATE_PACKAGE to create ${PN}-lic package files 
> > > > > and
> > > > > relying on the automatically generated recommends to cause them to be
> > > > > installed in the image. This works well for most packages, but fails 
> > > > > for
> > > > > packages where we only install package created using PACKAGES_DYNAMIC.
> > > > > 
> > > > > For example, liborc is being installed in our image but that package 
> > > > > lacks
> > > > > a recommends for orc-lic, so the licences that apply to it are not 
> > > > > being
> > > > > installed. This is because license.bbclass:add_package_and_files 
> > > > > iterates
> > > > > only over the packages listed in PACKAGES.
> > > > > 
> > > > > Steps to reproduce on current master:
> > > > > 
> > > > > $ echo 'LICENSE_CREATE_PACKAGE = "1"' >> conf/local.conf
> > > > > $ bitbake orc
> > > > > $ dpkg-deb -I 
> > > > > tmp-glibc/deploy/ipk/armv7vet2hf-neon/orc_0.4.32-r0_armv7vet2hf-neon.ipk|grep
> > > > >  Recommends
> > > > >  Recommends: orc-lic
> > > > > $ dpkg-deb -I 
> > > > > tmp-glibc/deploy/ipk/armv7vet2hf-neon/liborc-0.4-0_0.4.32-r0_armv7vet2hf-neon.ipk|grep
> > > > >  Recommends
> > > > > $
> > > > > 
> > > > > (I would have expected the last command to produce the same output as 
> > > > > the
> > > > > penultimate one.)
> > > > > 
> > > > > Even if I could fathom out how to fix orc and any other recipes so 
> > > > > that they
> > > > > did add the ${PN}-lic dependency, I'd be worried about not noticing 
> > > > > that
> > > > > the problem affected other recipes in the future.
> > > > > 
> > > > > Is there a way to teach license.bbclass:add_package_and_files to add 
> > > > > the
> > > > > ${PN}-lic recommends for dynamic packages, or would it be necessary to
> > > > > teach package.bbclass to do so?
> > > > 
> > > > That all sounds rather horrible :/.
> > > > 
> > > > Would IMAGE_INSTALL_COMPLEMENTARY += "*-lic" work instead?
> > > 
> > > That seems to have worked well.
> > > 
> > > I wonder whether this means that it would be better to stop adding the
> > > recommends automatically and tell users that need this to use
> > > IMAGE_INSTALL_COMPLEMENTARY instead (either directly, or by teaching
> > > license_image.bbclass to modify it based on another variable.)
> > 
> > That would seem the better option to me at least...
> 
> To be clear, I'd definitely support dropping that existing RRECOMMENDS code,
> I think there are better ways to handle this now. I may even write that patch 
> :)

I was thinking of something like the following untested patch:

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index f7978e266b..c87473cbb8 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -63,14 +63,6 @@ def add_package_and_files(d):
         # first in PACKAGES to be sure that nothing else gets 
LICENSE_FILES_DIRECTORY
         d.setVar('PACKAGES', "%s %s" % (pn_lic, packages))
         d.setVar('FILES_' + pn_lic, files)
-    for pn in packages.split():
-        if pn == pn_lic:
-            continue
-        rrecommends_pn = d.getVar('RRECOMMENDS_' + pn)
-        if rrecommends_pn:
-            d.setVar('RRECOMMENDS_' + pn, "%s %s" % (pn_lic, rrecommends_pn))
-        else:
-            d.setVar('RRECOMMENDS_' + pn, "%s" % (pn_lic))

 def copy_license_files(lic_files_paths, destdir):
     import shutil
diff --git a/meta/classes/license_image.bbclass 
b/meta/classes/license_image.bbclass
index 73cebb4d55..293a033855 100644
--- a/meta/classes/license_image.bbclass
+++ b/meta/classes/license_image.bbclass
@@ -279,3 +279,6 @@ python license_qa_dead_symlink() {
                 bb.error("broken symlink: " + full_path)
 }
 IMAGE_QA_COMMANDS += "license_qa_dead_symlink"
+
+IMAGE_INSTALL_LICENSES ??= "${LICENSE_CREATE_PACKAGE}"
+IMAGE_INSTALL_COMPLEMENTARY += 
"${oe.utils.conditional("IMAGE_INSTALL_LICENSES", "0", "", "*-lic", d)}"

I'm not sure whether it's safe to += an empty string onto the end of
IMAGE_INSTALL_COMPLEMENTARY, but I'm trying to avoid adding yet more
anonymous Python. :-)

Is that the sort of thing you meant?

Thanks.

Mike.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#153657): 
https://lists.openembedded.org/g/openembedded-core/message/153657
Mute This Topic: https://lists.openembedded.org/mt/84042415/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to