2017-05-05 127 views
0

我对yocto相当陌生,并且从继承自autotools和systemd的配方中挣扎。Bitbake 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 

感谢您的帮助。

回答

2

@ Fl0v0:菲多不支持${systemd_system_unitdir}。它在Jethro中引入。

@helix_:你重写自动工具的默认安装功能。您应该使用do_install_append而不是do_install。此外,您应该在结束赞美之前删除空间。

do_install_append() { 
    install -d ${D}${systemd_unitdir}/system/ 
    install -m 0644 ${WORKDIR}/sgw.service/ ${D}${systemd_unitdir}/system/ 
} 
+0

解决它!非常感谢 –