[poky] Running script after installation (postinst)
Patrick
kpa_info at yahoo.fr
Thu Jun 14 07:24:39 PDT 2012
On 06/14/2012 03:30 PM, Patrick wrote:
> 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 ?
>
I reply myself, it works with rootfs_rpm_do_rootfs_append instead of
using do_rootfs_append but I don't know if it's the best way to do.
If you know more recommended way to do feel free to comment here !
Patrick
More information about the poky
mailing list