On Wed, 2021-07-07 at 17:55 +0100, Mike Crowe wrote:
> 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

The above looks like the patch I just sent out! :)


> 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?

Yes, += to an empty string is fine. I'm torn on whether we should do this 
"magically" 
or whether users should opt in to it when needed on a per image (or distro) 
basis.

Cheers,

Richard

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#153664): 
https://lists.openembedded.org/g/openembedded-core/message/153664
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