From 2eca2058c38283f81319d807831e8a1b8e4bc786 Mon Sep 17 00:00:00 2001 From: Sonic Build Admin Date: Tue, 15 Jul 2025 01:05:46 +0000 Subject: [PATCH] [SPM] Add support for configuring systemd service Type in package manifests #### What I did This change allows package developers to specify the systemd service type in their package manifests, which will be reflected in the generated systemd service files. #### How I did it - Add optional 'type' field to service section in manifest schema - Update sonic.service.j2 template to conditionally include Type= directive #### How to verify it #### Previous command output (if the output of a command-line utility has changed) #### New command output (if the output of a command-line utility has changed) --- sonic-utilities-data/templates/sonic.service.j2 | 3 +++ sonic_package_manager/manifest.py | 1 + 2 files changed, 4 insertions(+) diff --git a/sonic-utilities-data/templates/sonic.service.j2 b/sonic-utilities-data/templates/sonic.service.j2 index 72d6ab698c..93a2d9774b 100644 --- a/sonic-utilities-data/templates/sonic.service.j2 +++ b/sonic-utilities-data/templates/sonic.service.j2 @@ -25,6 +25,9 @@ StartLimitIntervalSec=1200 StartLimitBurst=3 [Service] +{%- if manifest.service.type is defined and manifest.service.type %} +Type={{ manifest.service.type }} +{%- endif %} ExecStartPre={{path}}/{{manifest.service.name}}.sh start{% if multi_instance %} %i{% endif %} ExecStart={{path}}/{{manifest.service.name}}.sh wait{% if multi_instance %} %i{% endif %} ExecStop={{path}}/{{manifest.service.name}}.sh stop{% if multi_instance %} %i{% endif %} diff --git a/sonic_package_manager/manifest.py b/sonic_package_manager/manifest.py index bc156f102c..27b2bf6ea7 100644 --- a/sonic_package_manager/manifest.py +++ b/sonic_package_manager/manifest.py @@ -203,6 +203,7 @@ def unmarshal(self, value): ManifestField('host-service', DefaultMarshaller(bool), True), ManifestField('delayed', DefaultMarshaller(bool), False), ManifestField('check_up_status', DefaultMarshaller(bool), False), + ManifestField('type', DefaultMarshaller(str), ''), ManifestRoot('warm-shutdown', [ ManifestArray('after', DefaultMarshaller(str)), ManifestArray('before', DefaultMarshaller(str)),