It might be easier to manually enable the service with a symbolic link instead of using systemd.bbclass with something like:

do_install() {

  install -Dm 755 ${D}${systemd_unitdir}/system/multi-user.target.wants/

  ln -s ${systemd_unitdir}/system/openvpn@.service ${D}${systemd_unitdir}/system/multi-user.target.wants/openvpn@test.service

}

NOTE: I didn't explicitly test this

On 5/27/21 9:17 AM, François GOUDAL wrote:
Hello,

I am struggling with something I couldn’t find any solution for so far.

I am trying to make a very simple recipe that does this:
- Drop an openvpn configuration file in /etc/openvpn/test.conf
- Make the systemd service openvpn@test.service enabled by default

The recipe itself depends on openvpn, and so, it doesn’t, by itself, provide the openvpn@.service , which comes with openvpn.

Dropping the openvpn configuration file in the rootfs is easy, but I can’t manage to make the recipe to enable the service.
I’ve tried adding this to my recipe:

inherit systemd
SYSTEMD_AUTO_ENABLE = "enable"
SYSTEMD_SERVICE_${PN} = "openvpn@test.service"

But bitbake fails on this recipe with the message below:

ERROR: test-openvpn-config-1.0-r0 do_package: SYSTEMD_SERVICE_test-openvpn-config value openvpn@test.service does not exist

I believe this is caused by the fact that the service file is not part of the files installed by the recipe itself, but it is not meant to be anyway.

Is there a (clean) way to achieve this ?

Thanks in advance