Re: pkg_postinst_ontarget not executed

Alexander Kanavin

Reading recipes-devtools/run-postinsts/run-postinsts/run-postinsts and_save_postinsts_common (in once more, it seems /etc/ipk-postinsts is only used if there is no package manager on the target.

If there is, then 'opkg configure' is run directly, and so postinsts come from some internal database. There is some additional magic in to mark packages with first-boot postinsts as unpacked, so they'll get picked up by opkg.


On Wed, 13 May 2020 at 09:33, Damien LEFEVRE <lefevre.da@...> wrote:
Thanks Alex,

When I do a factory reset, the system detects as a first boot and the script is executed.

> cat /var/log/postinstall.log
Configuring test-deployment.

One thing which puzzles me: the /etc/ipk-postinsts directory do not exist. Not in the image recipe folder, not in the image file which I mount to check the content before flashing and of course it's deleted at the end of run-postinsts
    def _save_postinsts_common(self, dst_postinst_dir, src_postinst_dir):
        if bb.utils.contains("IMAGE_FEATURES", "package-management",
                         True, False, self.d):
        num = 0
        for p in self._get_delayed_postinsts():

            if os.path.exists(os.path.join(src_postinst_dir, p + ".postinst")):
                shutil.copy(os.path.join(src_postinst_dir, p + ".postinst"),
                            os.path.join(dst_postinst_dir, "%03d-%s" % (num, p)))

            num += 1

package-management is in my image features so I understand nothing get written.

So who temporarily creates that /etc/ipk-postinsts?


On Fri, May 8, 2020 at 6:15 PM Alexander Kanavin <alex.kanavin@...> wrote:
On Fri, 8 May 2020 at 11:32, Damien LEFEVRE <lefevre.da@...> wrote:

If can find the postinst script in /var/lib/opkg/info/test-deployment.postinst and execute it.

Since test-deployment is a new package, I would have expected pkg_postinst_ontarget to be executed

How is the first boot detected on a poky image? Is there a way to detect if .postinst scripts haven't been executed?

The scripts to be executed  are written into /etc/rpm|deb|ipk-postinsts/ and executed by
meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts script (which is started on first boot as a service).
Then they get deleted.


Join to automatically receive all group messages.