From 69c4f2ed44e6af2449ace191b840dbf40bd49cac Mon Sep 17 00:00:00 2001
From: Esben Haabendal <esben@geanix.com>
Date: Fri, 3 Mar 2023 16:57:43 +0100
Subject: [PATCH] openharmony-standard: Run samgr as systemd service

Signed-off-by: Esben Haabendal <esben@geanix.com>
---
 .../openharmony/files/openharmony-preinit            |  6 ------
 .../openharmony/files/openharmony-preinit.service    |  2 ++
 recipes-openharmony/openharmony/files/samgr.service  | 11 ++++++++---
 .../openharmony-standard-3.0/samgr-sd-notify.patch   | 12 ++++++++++++
 .../openharmony/openharmony-standard_3.0.bb          |  1 -
 5 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit
index f7eb48ef..8bcfaa9a 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit
@@ -104,12 +104,6 @@ setparam persist.ace.trace.enabled 0
 # - pre-init stage
 # - init stage
 
-if systemctl -q is-enabled samgr.service; then
-	echo >/dev/console "Starting OpenHarmony samgr service"
-	/system/bin/samgr &
-	sleep "$STARTUP_CMD_SLEEP"
-fi
-
 # - post-init stage
 #   - "trigger early-fs",
 #   - "trigger fs",
diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit.service b/recipes-openharmony/openharmony/files/openharmony-preinit.service
index ca384e6a..bad291a2 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit.service
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit.service
@@ -2,6 +2,8 @@
 Description=OpenHarmony pre-init setup
 After=param.service
 Requires=param.service
+After=samgr.service
+Requires=samgr.service
 
 [Service]
 Type=oneshot
diff --git a/recipes-openharmony/openharmony/files/samgr.service b/recipes-openharmony/openharmony/files/samgr.service
index bb66c394..16a22cee 100644
--- a/recipes-openharmony/openharmony/files/samgr.service
+++ b/recipes-openharmony/openharmony/files/samgr.service
@@ -1,10 +1,15 @@
 [Unit]
 Description=OpenHarmony SystemAbilityFramework service
+# Logging to hilogd, but seems to work without it
+Wants=hilogd.service
+After=hilogd.service
 
 [Service]
-Type=oneshot
-ExecStart=/bin/echo "OpenHarmony SystemAbilityFramework Service"
-RemainAfterExit=yes
+Type=notify
+ExecStartPre=!install -m 755 -o system -g system -d /data/sadata_de /data/sadata_de/samgr
+User=system
+Group=system
+ExecStart=/usr/bin/samgr
 
 [Install]
 WantedBy=multi-user.target
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
index caec79db..7c4010f7 100644
--- a/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
@@ -1,3 +1,15 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //foundation/distributedschedule/samgr of OpenHarmony 3.0 codebase
+
+This adds sd_notify(3) ready notification to samgr service for better
+integration with systemd.
+
+Signed-off-by: Esben Haabendal <esben@geanix.com>
+Upstream-Status: Pending
+
 diff --git a/services/samgr/native/BUILD.gn b/services/samgr/native/BUILD.gn
 index 9b7e4a4e6301..48c512f430e6 100755
 --- a/services/samgr/native/BUILD.gn
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 818ff5fc..c1bfbe4b 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -771,7 +771,6 @@ FILES:${PN}-samgr = " \
     ${bindir}/samgr \
     ${libdir}/libsamgr*${SOLIBS} \
     ${libdir}/liblsamgr*${SOLIBS} \
-    ${systemd_unitdir}/samgr.service \
 "
 SYSTEMD_PACKAGES += "${PN}-samgr"
 SYSTEMD_SERVICE:${PN}-samgr = "samgr.service"
-- 
GitLab