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] -=-=-=-=-=-=-=-=-=-=-=-