I need to install a systemd service into my own image, but it is failing with following errors:
*ERROR: hellosystemd-1.00-r0 do_package: Didn't find service unit 'hello.service', specified in SYSTEMD_SERVICE:hellosystemd.
ERROR: Logfile of failure stored in: /home/milaap/WORKSPACE/yocto-kirkstone/build-qemux86-64/tmp/work/core2-64-poky-linux/hellosystemd/1.00-r0/temp/log.do_package.1304921
ERROR: Task (/home/milaap/WORKSPACE/yocto-kirkstone/layers/meta-test/recipes-example/systemd/hellosystemd_1.00.bb:do_package) failed with exit code '1'*
I have configured all DISTRO_FEATURES which is needed. But, unable to resolve. Find the below code:
local.conf
# set machine
MACHINE = "qemux86-64"
# enable some features for the distro
DISTRO_FEATURES:append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
INIT_MANAGER = "systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
hellosystemd.bb
SUMMARY = "Systemd Example Recipe"
DESCRIPTION = "Run hellosystemd script"
LICENSE = "CLOSED"
SRC_URI = "file://hello.service"
DEPENDS += "systemd"
RDEPENDS:${PN} += "systemd"
S = "${WORKDIR}"
inherit pkgconfig systemd
SYSTEMD_AUTO_ENABLE = "enable"
SYSTEMD_SERVICE:${PN} = " hello.service"
FILES:${PN} += "/system/hello.service"
hello.service is getting copied to below location:
./tmp/work/core2-64-poky-linux/systemd/1_250.5-r0/git/test/units/hello.service
./tmp/work/core2-64-poky-linux/hellosystemd/1.00-r0/hello.service
Please provide the solution.
I see a main issue, you are not installing the file in a do_install
task.
do_install() {
install -d ${D}/${systemd_system_unitdir}
install -m 0644 ${S}/hello.service ${D}/${systemd_system_unitdir}/
}
Your FILES:{PN}
needs to be set accordingly (setting the directory is enough):
FILES:${PN} += "${systemd_system_unitdir}"
And two remarks:
You final recipe should look like:
SUMMARY = "Systemd Example Recipe"
DESCRIPTION = "Run hellosystemd script"
LICENSE = "CLOSED"
SRC_URI = "file://hello.service"
S = "${WORKDIR}"
inherit systemd
SYSTEMD_SERVICE:${PN} = " hello.service"
do_install() {
install -d ${D}/${systemd_system_unitdir}
install -m 0644 ${S}/hello.service ${D}/${systemd_system_unitdir}/
}
FILES:${PN} += "${systemd_system_unitdir}"