Hi Konstantin,

On April 1, 2022 2:50:13 PM GMT+02:00, Konstantin Kletschke 
<[email protected]> wrote:
>I am currently trying to extend the meta-java framework with an
>openjdk-18 recipe.
>I encounter a problem with the [installed-vs-shipped] QA check which I
>can't cope with, I admit.
>
>The autotolls and crosscompile seems to work fine, the install is
>overridden with this:
>
>do_install() {
>    rm -rf ${D}/${JAVA_HOME}
>    mkdir -p ${D}/${JAVA_HOME}
>    echo "THIS IS D: "${D} > ${D}/${JAVA_HOME}/THE_D
>    if [[ "${PN}" = openjre* ]]; then
>        # cp -rp ${B}/images/jre/* ${D}/${JAVA_HOME}
>        cp -rp ${B}/jdk/* ${D}${JAVA_HOME}
>    else
>        # cp -rp ${B}/images/jdk/* ${D}/${JAVA_HOME}
>        cp -rp ${B}/jdk/* ${D}${JAVA_HOME}
>    fi
>    chown -R root:root ${D}${JAVA_HOME}
>    #install -m644 ${WORKDIR}/jvm.cfg  ${D}${JAVA_HOME}/jre/lib/${JDK_ARCH}/
>    find ${D}/${JAVA_HOME} -name "*.debuginfo" -exec rm {} \;
>}
>
>To verify ${D} there is this "echo [...] THE_D" part in the install step
>to look, what's happening.
>
>After this stage I have the following file
>
>/home/konsti/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/openjdk-18/18+37+gitAUTOINC+0f2113cee7-r0/image/usr/lib/jvm/openjdk-18/THE_D
>
>with contents
>
>THIS IS D: 
>/home/konsti/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/openjdk-18/18+37+gitAUTOINC+0f2113cee7-r0/image
>
>What I suppose is ${D} looks like this:
>
>~/yocto/build   honister ?1 ❯ ls -la 
>/home/konsti/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/openjdk-18/18+37+gitAUTOINC+0f2113cee7-r0/image
>                             
>total 12
>drwxr-xr-x  3 konsti konsti 4096 Apr  1 14:24 .
>drwxr-xr-x 17 konsti konsti 4096 Apr  1 14:24 ..
>drwxr-xr-x  3 konsti konsti 4096 Apr  1 14:24 usr
>
>${JAVA_HOME} expands to /usr/lib/jvm/openjdk-18:
>
>~/yocto/build   honister ?1 ❯ ls -la 
>/home/konsti/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/openjdk-18/18+37+gitAUTOINC+0f2113cee7-r0/image/usr/lib/jvm/openjdk-18/
>total 36
>drwxr-xr-x  7 konsti konsti 4096 Apr  1 14:24 .
>drwxr-xr-x  3 konsti konsti 4096 Apr  1 14:24 ..
>-rw-r--r--  3 konsti konsti  128 Apr  1 14:24 THE_D
>drwxr-xr-x  2 konsti konsti 4096 Apr  1 14:24 bin
>drwxr-xr-x  5 konsti konsti 4096 Apr  1 14:22 conf
>drwxr-xr-x  3 konsti konsti 4096 Apr  1 14:22 include
>drwxr-xr-x  5 konsti konsti 4096 Apr  1 14:24 lib
>drwxr-xr-x 69 konsti konsti 4096 Apr  1 14:23 modules
>-rw-r--r--  3 konsti konsti  129 Apr  1 14:22 release
>
>So accordingly the recipe continues with extending the FILES to do
>packaging this way:
>
>FILES_${PN} += "\
>    ${JAVA_HOME}/bin/[a-z]* \
>    ${JAVA_HOME}/lib/[a-z]* \

FILES variables is compatible with glob from Python so that should work but 
that's really the first time I see this, usually it's just the directory or 
dir/*. Learned something new today :)

>    ${JAVA_HOME}/modules \
>    ${JAVA_HOME}/release \
>    ${JAVA_HOME}/conf \
>    ${JAVA_HOME}/include \
>    ${JAVA_HOME}/THE_D \
>"
>
>When I do "bitbake -e openjdk-18 |grep FILES_openjdk-18=" I get this:
>

Are you on honister (or master/soon kirkstone) release? If so, it's FILES:${PN} 
and not FILES_${PN}.

Try to avoid using hardcoded names instead of ${PN} because it breaks multilib 
(probably not a problem for many, I can concede :) ).

Make sure that openjdk-18 is actually a valid package name too by running 
bitbake -e <recipe-name> | grep "^PACKAGES=".

>FILES_openjdk-18="     /usr/lib/jvm/openjdk-18/bin/[a-z]*     
>/usr/lib/jvm/openjdk-18/lib/[a-z]*     /usr/lib/jvm/openjdk-18/modules     
>/usr/lib/jvm/openjdk-18/release     /usr/lib/jvm/openjdk-18/conf     
>/usr/lib/jvm/openjdk-18/include     /usr/lib/jvm/openjdk-18/THE_D "
>
>When bitbake tries to package, I get this error:
>
>ERROR: openjdk-18-18+37+gitAUTOINC+0f2113cee7-r0 do_package: QA Issue: 
>openjdk-18: Files/directories were installed but not shipped in any package:
>  /usr/lib/jvm/openjdk-18/release
>  /usr/lib/jvm/openjdk-18/THE_D
>  /usr/lib/jvm/openjdk-18/conf
>  /usr/lib/jvm/openjdk-18/include
>  /usr/lib/jvm/openjdk-18/lib/libj2gss.so
>[...]
>  
> /usr/lib/jvm/openjdk-18/modules/jdk.internal.le/jdk/internal/org/jline/keymap/BindingReader.class
>  
> /usr/lib/jvm/openjdk-18/modules/jdk.internal.le/jdk/internal/org/jline/keymap/KeyMap.class
>Please set FILES such that these items are packaged. Alternatively if they are 
>unneeded, avoid installing them or delete them within do_install.
>openjdk-18: 28751 installed and not shipped files. [installed-vs-shipped]
>ERROR: openjdk-18-18+37+gitAUTOINC+0f2113cee7-r0 do_package: Fatal QA errors 
>found, failing task.
>ERROR: Logfile of failure stored in: 
>/home/konsti/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/openjdk-18/18+37+gitAUTOINC+0f2113cee7-r0/temp/log.do_package.3424506
>ERROR: Task 
>(/home/konsti/yocto/meta-insidem2m/recipes-core/openjdk/openjdk-18_18+37.bb:do_package)
> failed with exit code '1'
>
>Well, I am pretty shure the FILES_${PN} refers relative to ${D}, where
>is my stupid misunderstanding?
>
>Side-Quest: In do install the destination is referred as
>${D}${JAVA_HOME}. Why does this not need to be ${D}/${JAVA_HOME}?
>

To quote yourself:
>${JAVA_HOME} expands to /usr/lib/jvm/openjdk-18

Cheers,
Quentin
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#56642): https://lists.yoctoproject.org/g/yocto/message/56642
Mute This Topic: https://lists.yoctoproject.org/mt/90177703/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to