[poky] Running script after installation (postinst)
Patrick
kpa_info at yahoo.fr
Thu Jun 14 06:30:01 PDT 2012
On 06/13/2012 05:22 PM, Patrick wrote:
> 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 !
>
Argh, in fact it doesn't work. The script is executed against right
files but *after* packaging everything into a single image...
The script should be executed just before packaging of the image.
Any idea how to do that ?
More information about the poky
mailing list