[poky] Running script after installation (postinst)

Patrick kpa_info at yahoo.fr
Wed Jun 13 08:22:38 PDT 2012


On 06/13/2012 04:38 PM, Patrick wrote:
> On 06/13/2012 10:08 AM, Richard Purdie wrote:
>> On Wed, 2012-06-13 at 09:18 +0200, Patrick wrote:
>>> On 06/12/2012 04:47 PM, Richard Purdie wrote:
>>>> On Tue, 2012-06-12 at 16:35 +0200, Patrick wrote:
>>>>> Dear all,
>>>>>
>>>>> In one of our recipes we need to execute a small script after the
>>>>> installation of the package. Following yocto dev manual point 4.3.6 we
>>>>> have added a pkg_postinst function.
>>>>>
>>>>> This doesn’t work properly as the script is executed at first start-up
>>>>> and not after installation. Below are an example of this recipe.
>>>>>
>>>>> Do you have any idea why this script is started as first boot time and
>>>>> not after installation ?
>>>>>
>>>>> Thanks in advance for any help !
>>>>
>>>> We try and run postinstalls "offline" at image creation time. If they
>>>> fail, they run at first boot.
>>>>
>>>> You can tell which context you're in by the contents of the $D variable
>>>> (note, $D, not ${D}). For example, you could therefore do:
>>>>
>>>>
>>>> pkg_postinst_task-system-tweaks () {
>>>> #!/bin/sh -e
>>>>
>>>> #Mount tmprecovery at startup
>>>> mkdir -p $D/tmprecovery
>>>> mkdir -p $D/data
>>>> echo "/dev/mtdblock6 /tmprecovery yaffs2 0 0">> $D/etc/fstab
>>>> echo "/dev/mtdblock7 /data yaffs2 noauto 0 0">> $D/etc/fstab
>>>>
>>
>>> The problems when using $D is that the script is executed against the
>>> files of the package not against the whole rootfs. For example in the
>>> dummy recipes above we change the file $D/etc/fstab that is not in the
>>> package of the recipes.
>>
>> If you reference $D as part of a postinst script, it will run against
>> the files of the rootfs, not just the package. There are some problems
>> ensuring dependencies are present when this happens though, some
>> backends like rpm don't like ensuring that dependencies are present.
>>
>>> We have also tried to add (R)DEPENDS to the package that contains fstab
>>> with no change.
>>>
>>> Any idea why ?
>>
>> You would need to add the dependency in and then it sounds like you're
>> probably using rpm and it doesn't want to honour the dependency for some
>> reason. You could add a rootfs post process command to add in what you
>> need which would guarantee all the files are present first...
>
> That's a good idea ! What would be the correct function name ? Something
> like do_rootfs_append() ?
> In this case do we have to prefix all the path with ${IMAGE_ROOTFS} ?
>
> Patrick

I reply myself:
as suggested above, using do_rootfs_append() and ${IMAGE_ROOTFS} it 
works nicely !

Thanks to all for your help

Patrick



More information about the poky mailing list