Bitbake Autotools 和 Systemd
Bitbake Autotools and Systemd
我是 yocto 的新手,正在努力研究从 autotools 和 systemd 继承的配方。
Systemd 已在发行版上正确设置,其他食谱也这样使用它,但它们不继承自 autotools。
这是我的食谱源代码:
DESCRIPTION = "Single Channel gateway"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
DEPENDS = "wiringpi"
SRCREV = "c3cf15f6f3db46ec554de873326d253ee0508ea4"
SRC_URI = "git://github.com/ArnaudPec/single_chan_pkt_fwd.git;protocol=git;branch=master \
file://sgw.service"
S = "${WORKDIR}/git/"
inherit autotools systemd
PARALLEL_MAKE = ""
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = " sgw.service"
FILES_${PN} += " ${systemd_system_unitdir}/sgw.service"
do_install () {
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/sgw.service ${D}${systemd_system_unitdir}
}
这是我的服务文件:
[Unit]
Description=Single Channel Gateway LoRaWAN service
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sgw
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
do_package 失败并输出:
ERROR: sgw-1.0-r0 do_package: SYSTEMD_SERVICE_sgw value sgw.service does not exist
ERROR: sgw-1.0-r0 do_package: Function failed: systemd_populate_packages
感谢您的帮助。
@Fl0v0:Fido不支持${systemd_system_unitdir}
。它在 Jethro 中被引入。
@helix_:您覆盖了 autotools 的默认安装功能。您应该使用 do_install_append
而不是 do_install
。此外,您应该在结束表彰之前删除 space。
do_install_append () {
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/sgw.service/ ${D}${systemd_unitdir}/system/
}
我是 yocto 的新手,正在努力研究从 autotools 和 systemd 继承的配方。
Systemd 已在发行版上正确设置,其他食谱也这样使用它,但它们不继承自 autotools。
这是我的食谱源代码:
DESCRIPTION = "Single Channel gateway"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
DEPENDS = "wiringpi"
SRCREV = "c3cf15f6f3db46ec554de873326d253ee0508ea4"
SRC_URI = "git://github.com/ArnaudPec/single_chan_pkt_fwd.git;protocol=git;branch=master \
file://sgw.service"
S = "${WORKDIR}/git/"
inherit autotools systemd
PARALLEL_MAKE = ""
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = " sgw.service"
FILES_${PN} += " ${systemd_system_unitdir}/sgw.service"
do_install () {
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/sgw.service ${D}${systemd_system_unitdir}
}
这是我的服务文件:
[Unit]
Description=Single Channel Gateway LoRaWAN service
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sgw
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
do_package 失败并输出:
ERROR: sgw-1.0-r0 do_package: SYSTEMD_SERVICE_sgw value sgw.service does not exist
ERROR: sgw-1.0-r0 do_package: Function failed: systemd_populate_packages
感谢您的帮助。
@Fl0v0:Fido不支持${systemd_system_unitdir}
。它在 Jethro 中被引入。
@helix_:您覆盖了 autotools 的默认安装功能。您应该使用 do_install_append
而不是 do_install
。此外,您应该在结束表彰之前删除 space。
do_install_append () {
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/sgw.service/ ${D}${systemd_unitdir}/system/
}