[yocto] Cannot use "LICENSE_CREATE_PACKAGE = 1" when building the image with mdns

Stefano Cappa stefano.cappa.ks89 at gmail.com
Fri Oct 4 08:17:25 PDT 2019


Oh, another update to integrate the previous email.

Inside the source code of mDNSResponder (
https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-878.260.1.tar.gz)
I found in "mDNSPosix/Makefile" this:

"
# Check the nsswitch.conf file.
# If 'mdns' does not already appear on the "hosts:" line, then add it right
before 'dns'
cp -f /etc/nsswitch.conf /etc/nsswitch.conf.pre-mdns
sed -e '/mdns/!s/^\(hosts:.*\)dns\(.*\)/\1mdns dns\2/'
/etc/nsswitch.conf.pre-mdns > /etc/nsswitch.conf
"

Probably, It's better to use this "sed -e
'/mdns/!s/^\(hosts:.*\)dns\(.*\)/\1mdns dns\2/' /etc/nsswitch.conf.pre-mdns
> /etc/nsswitch.conf" instead of the existing one.

What do you think?


Il giorno ven 4 ott 2019 alle ore 17:04 Stefano Cappa <
stefano.cappa.ks89 at gmail.com> ha scritto:

> I fixed this issue in this way:
>
> I modified the recipe replacing this:
> ------------------------------
> pkg_postinst_${PN} () {
>     sed -e '/^hosts:/s/\s*\<mdns\>//' \
>         -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2
> mdns\3\4\5/' \
>         -i $D/etc/nsswitch.conf
> }
>
> pkg_prerm_${PN} () {
>     sed -e '/^hosts:/s/\s*\<mdns\>//' \
>         -e '/^hosts:/s/\s*mdns//' \
>         -i $D/etc/nsswitch.conf
> }------------------------------
>
> with this:
> ------------------------------
> pkg_postinst_ontarget_${PN} () {
>     sed -e '/^hosts:/s/\s*\<mdns\>//' \
>         -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2\3mdns
> \4\5/' \
>         -i $D/etc/nsswitch.conf
> }
>
> pkg_prerm_ontarget_${PN} () {
>     sed -e '/^hosts:/s/\s*\<mdns\>//' \
>         -e '/^hosts:/s/\s*mdns//' \
>         -i $D/etc/nsswitch.conf
> }
> ------------------------------
>
>
> Basically, I added _ontarget_ as suggested by yocto error that says: "...
> If the intention is to defer them to first boot,
> > then please place them into pkg_postinst_ontarget_${PN} ()....".
>
> In this way I can build the final image with LICENSE_CREATE_PACKAGE=1.
> Why? I don't know. I didn't understand why there was this error.
>
> However, the final result on the device when my os is running is
> different, because my nsswitch.conf changes from "hosts:  files myhostname
> mdns dns" to "hosts:  files mdns myhostname  dns". Why? I don't know,
> however I changed the regex in sed from "\1\2 mdns\3\4\5" to "\1\2\3mdns
> \4\5" to restore the original result.
>
> Why is it happening? Honestly, I don't know the reason. My solution
> worked, but since I don't know why, I want to ask to someone more expert
> about nsswitch.conf and in particular about pkg_prerm_ and pkg_postinst_
> because I really don't understand why I cannot change nsswitch without
> those and why without LICENSE_CREATE_PACKAGE they are working also without
> adding ontarget_, but with LICENSE_CREATE_PACKAGE = 1 the ontarget_ is
> required.
>
> Please, can someone help about this? Or at least add in CC someone with
> more experience about these topics.
>
> Thank you.
>
>
> Il giorno ven 4 ott 2019 alle ore 14:26 Stefano Cappa <
> stefano.cappa.ks89 at gmail.com> ha scritto:
>
>> I investigated a little bit.
>> Probably, I didn't understand your point.
>>
>> The postinst script modifies nsswitch adding mdns and this is right, but
>> why is this interfering with the license create package?
>>
>> If I remove the postinst I can build with license create package, however
>> I need this change to nsswitch.
>>
>> Is it possibile to change the recipe of mdns to modify nsswitch without
>> interfering with license create package in another xxxx() { }?
>>
>> Thanks
>>
>>
>>
>> Il gio 3 ott 2019, 14:24 Stefano Cappa <stefano.cappa.ks89 at gmail.com> ha
>> scritto:
>>
>>> I resend this email because it's not visible in yocto mailing list.
>>>
>>>
>>>
>>> Hi thank you for the answer.
>>>
>>> In my rootfs I have this nsswitch.conf:
>>> -------------------------------------------------------
>>> # /etc/nsswitch.conf
>>> #
>>> # Example configuration of GNU Name Service Switch functionality.
>>> # If you have the `glibc-doc' and `info' packages installed, try:
>>> # `info libc "Name Service Switch"' for information about this file.
>>>
>>> passwd:         compat
>>> group:          compat
>>> shadow:         compat
>>>
>>> hosts:          files myhostname  mdns dns
>>> networks:       files
>>>
>>> protocols:      db files
>>> services:       db files
>>> ethers:         db files
>>> rpc:            db files
>>>
>>> netgroup:       nis
>>> -------------------------------------------------------
>>>
>>> I'm not familiar with this file.
>>> Also changing "hosts: files myhostname  mdns dns" to "hosts: files
>>> mdns4_minimal [NOTFOUND=return] dns" (copied from a raspberry pi 3) I'm
>>> still having the same problem.
>>>
>>> What should I change to fix this issue?
>>>
>>>
>>>
>>>
>>> Il mar 1 ott 2019, 11:29 Stefano Cappa <stefano.cappa.ks89 at gmail.com>
>>> ha scritto:
>>>
>>>> Hi thank you for the answer.
>>>>
>>>> In my rootfs I have this nsswitch.conf:
>>>> -------------------------------------------------------
>>>> # /etc/nsswitch.conf
>>>> #
>>>> # Example configuration of GNU Name Service Switch functionality.
>>>> # If you have the `glibc-doc' and `info' packages installed, try:
>>>> # `info libc "Name Service Switch"' for information about this file.
>>>>
>>>> passwd:         compat
>>>> group:          compat
>>>> shadow:         compat
>>>>
>>>> hosts:          files myhostname  mdns dns
>>>> networks:       files
>>>>
>>>> protocols:      db files
>>>> services:       db files
>>>> ethers:         db files
>>>> rpc:            db files
>>>>
>>>> netgroup:       nis
>>>> -------------------------------------------------------
>>>>
>>>> I'm not familiar with this file.
>>>> Also changing "hosts: files myhostname  mdns dns" to "hosts: files
>>>> mdns4_minimal [NOTFOUND=return] dns" (copied from a raspberry pi 3) I'm
>>>> still having the same problem.
>>>>
>>>> What should I change to fix this issue?
>>>>
>>>>
>>>> Il lun 30 set 2019, 22:45 Khem Raj <raj.khem at gmail.com> ha scritto:
>>>>
>>>>>
>>>>>
>>>>> On 9/30/19 8:17 AM, Stefano Cappa wrote:
>>>>> > I saw your last patch to upgrade mdns, so I'm sending this email
>>>>> also to
>>>>> > you to try to get help.
>>>>> >
>>>>> > mdns is working correctly, however, when I try to build my image with
>>>>> > "LICENSE_CREATE_PACKAGE = "1"" in my local.conf as described
>>>>> > here
>>>>> https://www.yoctoproject.org/docs/2.8/dev-manual/dev-manual.html#providing-license-text
>>>>>  I
>>>>> > get this error message:
>>>>> >
>>>>> > ERROR: mydevice-image-1.0-r0 do_rootfs: Postinstall scriptlets of
>>>>> > ['mdns'] have failed. If the intention is to defer them to first
>>>>> boot,
>>>>> > then please place them into pkg_postinst_ontarget_${PN} ().
>>>>> > Deferring to first boot via 'exit 1' is no longer supported.
>>>>> > Details of the failure are in
>>>>> >
>>>>> /home/user/git/poky/build/tmp/work/mydevice1-image-poky-linux-gnueabi/mydevice-image/1.0-r0/temp/log.do_rootfs.
>>>>> > ERROR: mydevice-image-1.0-r0 do_rootfs: Function failed: do_rootfs
>>>>> > ERROR: Logfile of failure stored in:
>>>>> >
>>>>> /home/user/git/poky/build/tmp/work/mydevice1-poky-linux-gnueabi/mydevice-image/1.0-r0/temp/log.do_rootfs.14586
>>>>> > ERROR: Task (MY CUSTOM LAYER
>>>>> > PATH/recipes-core/images/mydevice-image.bb:do_rootfs) failed with
>>>>> exit
>>>>> > code '1'
>>>>> > NOTE: Tasks Summary: Attempted 4871 tasks of which 4654 didn't need
>>>>> to
>>>>> > be rerun and 1 failed.
>>>>> >
>>>>> > Do you have a solution? Why is it happening?
>>>>> >
>>>>>
>>>>> see mdns recipe especially
>>>>>
>>>>> pkg_postinst_${PN} (), that function is not able to execute offline
>>>>> during build. It could be that nsswitch.conf does not exist in your
>>>>> image rootfs
>>>>>
>>>>> > thank u.
>>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20191004/f784d2e2/attachment.html>


More information about the yocto mailing list