Abhinav
Abhinav

Reputation: 1015

Bitbake recipe to have pre and post install action

I am writing an custom recipe for the Bitbake for an Makefile based project. We are able to create the RPMs with all the files place in the package but we are not able to find a way for pre and post install action. As the application runs as service we want to stop it in pre-install step and then start it in post-install step. But I am not able to find the same so any thoughts to achieve it. Below is the sample recipe we written for it.

DESCRIPTION = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"
SRC_URI = "file://helloworld.c"
DEPENDS = "boost"
S = "${WORKDIR}"
do_compile() {
    ${CC} helloworld.c -o helloworld
}

PACKAGES = "helloworld"
do_install() {
     install -d ${D}${bindir}
     install -m 0755 helloworld ${D}${bindir}
     install -d ${D}${sysconfig}/init.d
     install -m 0755 ${S}/service ${D}${sysconfig}/init.d
}

I do see INITSCRIPT_PACKAGES and INITSCRIPT_PARAMS but their description doesn't talk about being pre and post action. So any thoughts for putting %pre and %post (in terms of RPM spec) for this purpose.

Upvotes: 3

Views: 11767

Answers (2)

volker
volker

Reputation: 1865

You can add post install scripts in your .bb:

 pkg_postinst_PACKAGENAME() {
 #!/bin/sh -e
 # Commands to carry out
 }

Reference: Section 5.3.16 http://www.yoctoproject.org/docs/1.7.1/mega-manual/mega-manual.html

According to the documentation the examples only runs during image creation time. There is also another function that will only run on the first boot (and never after it). It uses the meta/recipes-devtools/run-postinsts recipe to accomplish this.

Upvotes: 3

E-rich
E-rich

Reputation: 9511

I ran into the same issue. See this post for how I did the post install script. Hopefully you can glean from that answer enough to modify it for your script.

Upvotes: 1

Related Questions