[poky] Running script after installation (postinst)

Richard Purdie richard.purdie at linuxfoundation.org
Wed Jun 13 01:08:00 PDT 2012


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...

Cheers,

Richard




More information about the poky mailing list