[RFC,1/2] debianize: use dh_installsystemd to automatically add systemd service

Message ID 20240201130752.3734292-2-Quirin.Gylstorff@siemens.com
State RFC
Headers show
Series debianize: Use dh_installsystemd | expand

Commit Message

Quirin Gylstorff Feb. 1, 2024, 1:07 p.m. UTC
From: Quirin Gylstorff <quirin.gylstorff@siemens.com>

Copy the file in `DEBIAN_SYSTEMD_SERVICE` to the folder if it has the
same name as the debian package. This will use dh_installsystemd.

Debian detects any of the following files in the debian folder
they are installed into usr/lib/systemd/system/ in the package build directory:
 - package.mount
 - package.path
 - package@.path
 - package.service
 - package@.service
 - package.socket
 - package@.socket
 - package.target
 - package@.target
 - package.timer
 - package@.timer

Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
---
 meta/classes/debianize.bbclass | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Patch

diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass
index 7de98673..5015d52c 100644
--- a/meta/classes/debianize.bbclass
+++ b/meta/classes/debianize.bbclass
@@ -11,6 +11,7 @@  DEBIAN_DEPENDS ??= ""
 DEBIAN_CONFLICTS ??= ""
 DEBIAN_MULTI_ARCH ??= "no"
 DEBIAN_COMPAT ??= "10"
+DEBIAN_SYSTEMD_SERVICE ??= ""
 DESCRIPTION ??= "must not be empty"
 MAINTAINER ??= "Unknown maintainer <unknown@example.com>"
 
@@ -116,12 +117,26 @@  deb_debianize() {
 	# contains an entry with CHANGELOG_V
 	deb_add_changelog
 
+	# copy service files to debian folder
+	# this will automatically enable the service
+	service_installed=""
+	if [ -n "${DEBIAN_SYSTEMD_SERVICE}" ]; then
+		service_name=$(echo ${DEBIAN_SYSTEMD_SERVICE} | awk -F. '{print $1}')
+		if [ "$service_name" = "${BPN}" ] && [ -f ${WORKDIR}/${DEBIAN_SYSTEMD_SERVICE} ]; then
+			install -v -m 644 ${WORKDIR}/${DEBIAN_SYSTEMD_SERVICE} ${S}/debian/
+		fi
+		service_installed="true"
+	fi
+
 	# copy all hooks from WORKDIR into debian/, hooks are not generated
 	for t in pre post
 	do
 		for a in inst rm
 		do
 			if [ -f ${WORKDIR}/${t}${a} ]; then
+				if [ "$service_installed" = "true" ]; then
+					bbwarn "systemd service '${BPN}.service' exists and is added automacially to the debian folder."
+				fi
 				install -v -m 755 ${WORKDIR}/${t}${a} \
 					${S}/debian/${t}${a}
 			fi