Hi Paul,

I have done as your suggestions:

--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -68,15 +68,16 @@ license_create_manifest() {
         if [ "${COPY_LIC_DIRS}" = "1" ]; then
             for pkg in ${INSTALLED_PKGS}; do
                 mkdir -p ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}
-                for lic in `ls ${LICENSE_DIRECTORY}/${pkg}`; do
+ pkged_pn="$(oe-pkgdata-util lookup-recipe ${PKGDATA_DIR} ${pkg})"
+                for lic in `ls ${LICENSE_DIRECTORY}/${pkged_pn}`; do
                     # Really don't need to copy the generics as they're
# represented in the manifest and in the actual pkg licenses
                     # Doing so would make your image quite a bit larger
                     if [ "${lic#generic_}" = "${lic}" ]; then
- cp ${LICENSE_DIRECTORY}/${pkg}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic} + cp ${LICENSE_DIRECTORY}/${pkged_pn}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic}
                     else
if [ ! -f ${IMAGE_ROOTFS}/usr/share/common-licenses/${lic} ]; then - cp ${LICENSE_DIRECTORY}/${pkg}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/ + cp ${LICENSE_DIRECTORY}/${pkged_pn}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/
                         fi
ln -s ../${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic}
                     fi

//Hongxu


On 11/22/2013 05:54 PM, Paul Eggleton wrote:
On Friday 22 November 2013 14:06:01 Hongxu Jia wrote:
Hi Paul,

On 11/22/2013 12:41 AM, Paul Eggleton wrote:
Hi Hongxu,

On Wednesday 20 November 2013 18:39:02 Hongxu Jia wrote:
For each recipe, it populated license files to
${LICENSE_DIRECTORY}/${PN},
such as kernel's license dir was
${LICENSE_DIRECTORY}/kernel-3.10.17-yocto-standard;

In do_rootfs task, it copied license directories from
${LICENSE_DIRECTORY}/
${pkg}, and ${pkg} was listed in ${INSTALLED_PKGS};

We got ${INSTALLED_PKGS} by rpm query, such as the kernel were
'kernel-*',
but the kernel's PN was linux-yocto, so searching ${LICENSE_DIRECTORY}/
kernel-* failed.

Copied license directories from ${LICENSE_DIRECTORY}/${PN} fixed this
issue.

[YOCTO #5572]

Signed-off-by: Hongxu Jia <hongxu....@windriver.com>
---

   meta/classes/license.bbclass | 9 ++++++---
   1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 6d7ee94..32605ff 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -68,15 +68,18 @@ license_create_manifest() {

                if [ "${COPY_LIC_DIRS}" = "1" ]; then
                
                        for pkg in ${INSTALLED_PKGS}; do
                        
                                mkdir -p 
${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}

-                               for lic in `ls ${LICENSE_DIRECTORY}/${pkg}`; do
+                               pkged_pn="$(sed -n "/^PACKAGE NAME: 
${pkg}$/,/^$/ \
+                                           {s/^RECIPE NAME: //;
/^PACKAGE
NAME:/d; /^PACKAGE VERSION:/d; /^LICENSE:/d; p}" \ +

                     ${LICENSE_MANIFEST})"

+                               for lic in `ls 
${LICENSE_DIRECTORY}/${pkged_pn}`; do
This isn't the right way to do this. If you need to look up the recipe
name

from the target package name, in master you can now use:
    oe-pkgdata-util lookup-recipe ${PKGDATA_DIR} "<list of packages>"
I am afraid to use oe-pkgdata-util here is not a good idea:

- everything we need has been listed in ${LICENSE_MANIFEST},
    we just need to sort them out;

- the oe-pkgdata-util utility only support to search the specific
    ${PKGDATA_DIR} directory which was  ${TMPDIR}/pkgdata/
    ${MULTIMACH_TARGET_SYS}, but we need to search multiple
    ${MULTIMACH_TARGET_SYS} directories;
Note that in 1.5 the pkgdata structure changed - it is now under the machine-
specific sysroot, so there is only one directory to look in.

Cheers,
Paul


_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to