diff mbox series

[master/kirkstone] meta-arago-extras: sysrepo: Update netopeer and sysrepo to start under systemd

Message ID 20240209103337.25332-1-r-gunasekaran@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [master/kirkstone] meta-arago-extras: sysrepo: Update netopeer and sysrepo to start under systemd | expand

Commit Message

Ravi Gunasekaran Feb. 9, 2024, 10:33 a.m. UTC
The init.d scripts for sysrepo and netopeer2-server requires certain
other init.d scripts that are now removed. And the systemd services generated
systemd-sysv-generator is not sufficient.

So introduce new unit files for sysrepo and netopeer2 and update the
respective bitbake recipes.

Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
---
 .../netopeer2-serverd.service                 | 29 +++++++++++++++
 .../netopeer2-server/netopeer2-server_git.bb  | 20 +++++++++-
 .../sysrepo/sysrepo/sysrepod.service          | 37 +++++++++++++++++++
 .../recipes-sysrepo/sysrepo/sysrepo_git.bb    | 23 ++++++++++--
 4 files changed, 104 insertions(+), 5 deletions(-)
 create mode 100644 meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
 create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service


base-commit: db4752d19a46406683f4a4adf8187de8075b70b6

Comments

Ravi Gunasekaran Feb. 9, 2024, 10:36 a.m. UTC | #1
On 2/9/24 4:03 PM, Ravi Gunasekaran wrote:
> The init.d scripts for sysrepo and netopeer2-server requires certain
> other init.d scripts that are now removed. And the systemd services generated
> systemd-sysv-generator is not sufficient.
> 
> So introduce new unit files for sysrepo and netopeer2 and update the
> respective bitbake recipes.
> 
> Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
> ---
>  .../netopeer2-serverd.service                 | 29 +++++++++++++++
>  .../netopeer2-server/netopeer2-server_git.bb  | 20 +++++++++-
>  .../sysrepo/sysrepo/sysrepod.service          | 37 +++++++++++++++++++
>  .../recipes-sysrepo/sysrepo/sysrepo_git.bb    | 23 ++++++++++--
>  4 files changed, 104 insertions(+), 5 deletions(-)
>  create mode 100644 meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
>  create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
> 


systemd service status at boot-up and after starting sservices


/* sysrepo and netopeer2-server disabled at bootup */

root@am62pxx-evm:~# systemctl status sysrepod.service
* sysrepod.service - Sysrepo
     Loaded: loaded (8;;file://am62pxx-evm/lib/systemd/system/sysrepod.service/lib/systemd/system/sysrepod.service8;;; disabled; vendor preset: disabled)8;;
     Active: inactive (dead)
root@am62pxx-evm:~# 
root@am62pxx-evm:~# systemctl status netopeer2-serverd.service
* netopeer2-serverd.service - Netopeer2-Server
     Loaded: loaded (8;;file://am62pxx-evm/lib/systemd/system/netopeer2-serverd.service/lib/systemd/system/netopeer2-serverd.service8;;; disabled; vendor preset: disabled)8;;
     Active: inactive (dead)


root@am62pxx-evm:~# 
root@am62pxx-evm:~# 
root@am62pxx-evm:~# systemctl start sysrepod.service                                                                                                                                                               
root@am62pxx-evm:~# 
root@am62pxx-evm:~# systemctl status sysrepod.service                                                                                                                                                              
* sysrepod.service - Sysrepo
     Loaded: loaded (8;;file://am62pxx-evm/lib/systemd/system/sysrepod.service/lib/systemd/system/sysrepod.service8;;; disabled; vendor preset: disabled)8;;
     Active: active (exited) since Thu 1970-01-01 00:00:56 UTC; 5s ago
    Process: 1097 ExecStartPre=/bin/bash -c NP2_MODULE_DIR="/usr/share/yang/modules/netopeer2"                             NP2_MODULE_PERMS="600" NP2_MODULE_OWNER="root"                          NP2_MODULE_GROU>
    Process: 1342 ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_hostkey.sh (code=exited, status=0/SUCCESS)
    Process: 1365 ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_config.sh (code=exited, status=0/SUCCESS)
    Process: 1373 ExecStartPre=touch /etc/sysrepo/init (code=exited, status=0/SUCCESS)
    Process: 1374 ExecStart=/usr/bin/sysrepo-plugind (code=exited, status=0/SUCCESS)
   Main PID: 1374 (code=exited, status=0/SUCCESS)
      Tasks: 3 (limit: 8760)
     Memory: 6.7M
     CGroup: /system.slice/sysrepod.service
             `- 1375 /usr/bin/sysrepo-plugind

Jan 01 00:00:51 am62pxx-evm systemd[1]: Starting Sysrepo...
Jan 01 00:00:56 am62pxx-evm systemd[1]: Finished Sysrepo.
root@am62pxx-evm:~# 

root@am62pxx-evm:~# systemctl start netopeer2-serverd.service
root@am62pxx-evm:~# 
root@am62pxx-evm:~# systemctl status netopeer2-serverd.service                                                                                                                                                     
* netopeer2-serverd.service - Netopeer2-Server
     Loaded: loaded (8;;file://am62pxx-evm/lib/systemd/system/netopeer2-serverd.service/lib/systemd/system/netopeer2-serverd.service8;;; disabled; vendor preset: disabled)8;;
     Active: active (exited) since Thu 1970-01-01 00:01:15 UTC; 5s ago
    Process: 1382 ExecStart=/usr/sbin/netopeer2-server -v 1 (code=exited, status=0/SUCCESS)
   Main PID: 1382 (code=exited, status=0/SUCCESS)
      Tasks: 6 (limit: 8760)
     Memory: 5.6M
     CGroup: /system.slice/netopeer2-serverd.service
             `- 1383 /usr/sbin/netopeer2-server -v 1

Jan 01 00:01:15 am62pxx-evm systemd[1]: Starting Netopeer2-Server...
Jan 01 00:01:15 am62pxx-evm systemd[1]: Finished Netopeer2-Server.
Chirag Shilwant Feb. 9, 2024, 11:02 a.m. UTC | #2
Hi Ravi,

On 09/02/24 16:03, Ravi Gunasekaran via lists.yoctoproject.org wrote:
> The init. d scripts for sysrepo and netopeer2-server requires certain 
> other init. d scripts that are now removed. And the systemd services 
> generated systemd-sysv-generator is not sufficient. So introduce new 
> unit files for sysrepo and netopeer2
> ZjQcmQRYFpfptBannerStart
> This message was sent from outside of Texas Instruments.
> Do not click links or open attachments unless you recognize the source 
> of this email and know the content is safe.
> ZjQcmQRYFpfptBannerEnd
> The init.d scripts for sysrepo and netopeer2-server requires certain
> other init.d scripts that are now removed. And the systemd services generated
> systemd-sysv-generator is not sufficient.
>
> So introduce new unit files for sysrepo and netopeer2 and update the
> respective bitbake recipes.
>
> Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
> ---
>   .../netopeer2-serverd.service                 | 29 +++++++++++++++
>   .../netopeer2-server/netopeer2-server_git.bb  | 20 +++++++++-
>   .../sysrepo/sysrepo/sysrepod.service          | 37 +++++++++++++++++++
>   .../recipes-sysrepo/sysrepo/sysrepo_git.bb    | 23 ++++++++++--
>   4 files changed, 104 insertions(+), 5 deletions(-)
>   create mode 100644 meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
>   create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
>
> diff --git a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
> new file mode 100644
> index 00000000..3b365fca
> --- /dev/null
> +++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
> @@ -0,0 +1,29 @@
> +#Permission is hereby granted, free of charge, to any person obtaining a copy
> +#of this software and associated documentation files (the "Software"), to deal
> +#in the Software without restriction, including without limitation the rights
> +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +#copies of the Software, and to permit persons to whom the Software is
> +#furnished to do so, subject to the following conditions:
> +#
> +#The above copyright notice and this permission notice shall be included in
> +#all copies or substantial portions of the Software.
> +#
> +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> +#THE SOFTWARE.
> +
> +[Unit]
> +Description=Netopeer2-Server
> +After=sysrepod.service
> +
> +[Service]
> +RemainAfterExit=true
> +Type=oneshot
> +ExecStart=/usr/sbin/netopeer2-server -v 1
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
> index e4278d23..7c840243 100644
> --- a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
> +++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
> @@ -3,7 +3,12 @@ DESCRIPTION = "Netopeer2 is based on the new generation of the NETCONF and YANG
>   LICENSE = "BSD-3-Clause"
>   LIC_FILES_CHKSUM = "file://LICENSE;md5=41daedff0b24958b2eba4f9086d782e1"
>   
> -SRC_URI = "git://github.com/CESNET/Netopeer2.git;protocol=https;branch=devel file://netopeer2-server"
> +SRC_URI = "git://github.com/CESNET/Netopeer2.git;protocol=https;branch=devel \
> +          ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', \
> +	        'file://netopeer2-server', '', d)} \
> +          ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', \
> +	        'file://netopeer2-serverd.service', '', d)} \
> +          "
>   
>   PV = "2.1.59+git${SRCPV}"
>   SRCREV = "b81788d9a81770313a0eb7f88d4224726b3d6e15"
> @@ -16,10 +21,15 @@ RDEPENDS:${PN} += "bash curl"
>   FILES:${PN} += "/usr/share/yang* /usr/share/netopeer2/* /usr/lib/sysrepo-plugind/*"
>   
>   inherit cmake pkgconfig
> +inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
>   
>   # Specify any options you want to pass to cmake using EXTRA_OECMAKE:
>   EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String=Release -DINSTALL_MODULES=OFF -DGENERATE_HOSTKEY=OFF -DMERGE_LISTEN_CONFIG=OFF"
>   
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE:${PN} = "netopeer2-serverd.service"
> +SYSTEMD_AUTO_ENABLE:${PN} = "disable"
> +
>   do_install:append () {
>       install -d ${D}/etc/netopeer2/scripts
>       install -o root -g root ${S}/scripts/setup.sh ${D}/etc/netopeer2/scripts/setup.sh
> @@ -27,5 +37,11 @@ do_install:append () {
>       install -o root -g root ${S}/scripts/merge_config.sh ${D}/etc/netopeer2/scripts/merge_config.sh
>       install -d ${D}/etc/netopeer2
>       install -d ${D}/etc/init.d
> -    install -m 0755 ${WORKDIR}/netopeer2-server ${D}/etc/init.d/
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
> +        install -m 0755 ${WORKDIR}/netopeer2-server ${D}/etc/init.d/
> +    fi
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
> +        install -d ${D}${systemd_system_unitdir}
> +        install -m 0644 ${WORKDIR}/netopeer2-serverd.service ${D}${systemd_system_unitdir}
> +    fi
>   }
> diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
> new file mode 100644
> index 00000000..1b4c3e3b
> --- /dev/null
> +++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
> @@ -0,0 +1,37 @@
> +#Permission is hereby granted, free of charge, to any person obtaining a copy
> +#of this software and associated documentation files (the "Software"), to deal
> +#in the Software without restriction, including without limitation the rights
> +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +#copies of the Software, and to permit persons to whom the Software is
> +#furnished to do so, subject to the following conditions:
> +#
> +#The above copyright notice and this permission notice shall be included in
> +#all copies or substantial portions of the Software.
> +#
> +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> +#THE SOFTWARE.
> +
> +[Unit]
> +Description=Sysrepo
> +After=local-fs.target
> +
> +[Service]
> +RemainAfterExit=true
> +Type=oneshot
> +
> +ExecStartPre=/bin/bash -c 'NP2_MODULE_DIR="/usr/share/yang/modules/netopeer2" \
> +			   NP2_MODULE_PERMS="600" NP2_MODULE_OWNER="root" \
> +			   NP2_MODULE_GROUP="root" \
> +			   exec /etc/netopeer2/scripts/setup.sh'
> +ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_hostkey.sh
> +ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_config.sh
> +ExecStartPre= touch /etc/sysrepo/init
> +ExecStart=/usr/bin/sysrepo-plugind
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
> index 18da3ca3..77da7b7a 100644
> --- a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
> +++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
> @@ -4,7 +4,11 @@ DESCRIPTION = ""
>   LICENSE = "BSD-3-Clause"
>   LIC_FILES_CHKSUM = "file://LICENSE;md5=ef345f161efb68c3836e6f5648b2312f"
>   
> -SRC_URI = "git://github.com/sysrepo/sysrepo.git;protocol=https;branch=devel file://sysrepo"
> +SRC_URI = "git://github.com/sysrepo/sysrepo.git;protocol=https;branch=devel \
> +           ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', \
> +                'file://sysrepo','', d)} \
> +           ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', \
> +                'file://sysrepod.service','', d)}"
>   
>   PV = "2.2.71+git${SRCPV}"
>   SRCREV = "b828f0ab4693c613cc66efd053a146e05854d5c8"
> @@ -16,12 +20,18 @@ DEPENDS = "libyang protobuf protobuf-c protobuf-c-native libredblack libev libne
>   FILES:${PN} += "/usr/share/yang/* /usr/lib/sysrepo-plugind/*"
>   
>   inherit cmake pkgconfig python3native python3-dir
> +inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
> +
>   
>   # Specify any options you want to pass to cmake using EXTRA_OECMAKE:
>   EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String=Release -DBUILD_EXAMPLES:String=False -DENABLE_TESTS:String=False -DREPOSITORY_LOC:PATH=/etc/sysrepo  -DCALL_TARGET_BINS_DIRECTLY=False -DGEN_LANGUAGE_BINDINGS:String=False "
>   
>   BBCLASSEXTEND = "native nativesdk"
>   
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE:${PN} = "sysrepod.service"
> +SYSTEMD_AUTO_ENABLE:${PN} = "disable"
> +
>   do_install:append () {
>       install -d ${D}/etc/sysrepo/data/notifications
>       install -d ${D}/etc/sysrepo/yang
> @@ -29,6 +39,13 @@ do_install:append () {
>       install -o root -g root ${S}/modules/ietf-netconf-with-defaults.yang ${D}/etc/sysrepo/yang/ietf-netconf-with-defaults@2011-06-01.yang
>       install -o root -g root ${S}/modules/ietf-netconf.yang ${D}/etc/sysrepo/yang/ietf-netconf@2011-06-01.yang
>       install -d ${D}/etc/init.d
> -    install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
> -    install -d ${D}/usr/lib/sysrepo/plugins
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
> +        install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
> +        install -d ${D}/usr/lib/sysrepo/plugins

Using Yocto's Installation variables (just like you have it for systemd 
below) is a good idea [1]
Eg,

  * ${D}/etc/init.d/ should be ${D}${sysconfdir}/init.d
  * ${D}/usr/lib/sysrepo/plugins should be ${D}${libdir}/sysrepo/plugins


Reference
---------
[1] http://www.embeddedlinux.org.cn/OEManual/directories_installation.html

> +    fi
> +
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
> +        install -d ${D}${systemd_system_unitdir}
> +        install -m 0644 ${WORKDIR}/sysrepod.service ${D}${systemd_system_unitdir}
> +    fi
>   }
>
> base-commit: db4752d19a46406683f4a4adf8187de8075b70b6
> -- 
> 2.17.1
>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#15148):https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-arago/message/15148__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P43vSawg$
> Mute This Topic:https://urldefense.com/v3/__https://lists.yoctoproject.org/mt/104256565/7030289__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P27WlTjr$
> Group Owner: meta-arago+owner@lists.yoctoproject.org
> Unsubscribe:https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-arago/unsub__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P5U1J_IW$  [c-shilwant@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Ravi Gunasekaran Feb. 12, 2024, 5 a.m. UTC | #3
Chirag,

On 2/9/24 4:32 PM, Chirag Shilwant wrote:
> Hi Ravi,
> 

>>       install -d ${D}/etc/sysrepo/data/notifications
>>       install -d ${D}/etc/sysrepo/yang
>> @@ -29,6 +39,13 @@ do_install:append () {
>>       install -o root -g root ${S}/modules/ietf-netconf-with-defaults.yang ${D}/etc/sysrepo/yang/ietf-netconf-with-defaults@2011-06-01.yang
>>       install -o root -g root ${S}/modules/ietf-netconf.yang ${D}/etc/sysrepo/yang/ietf-netconf@2011-06-01.yang
>>       install -d ${D}/etc/init.d
>> -    install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
>> -    install -d ${D}/usr/lib/sysrepo/plugins
>> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
>> +        install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
>> +        install -d ${D}/usr/lib/sysrepo/plugins
> 
> Using Yocto's Installation variables (just like you have it for systemd below) is a good idea [1]
> Eg,
> 
>  * ${D}/etc/init.d/ should be ${D}${sysconfdir}/init.d
>  * ${D}/usr/lib/sysrepo/plugins should be ${D}${libdir}/sysrepo/plugins
> 

Thanks for reviewing the patch. I will rework and send a v2

> 
> Reference
> ---------
> [1] http://www.embeddedlinux.org.cn/OEManual/directories_installation.html
> 
>> +    fi
>> +
>> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
>> +        install -d ${D}${systemd_system_unitdir}
>> +        install -m 0644 ${WORKDIR}/sysrepod.service ${D}${systemd_system_unitdir}
>> +    fi
>>   }
>>
>> base-commit: db4752d19a46406683f4a4adf8187de8075b70b6
>> -- 
>> 2.17.1
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#15148):https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-arago/message/15148__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P43vSawg$
>> Mute This Topic:https://urldefense.com/v3/__https://lists.yoctoproject.org/mt/104256565/7030289__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P27WlTjr$
>> Group Owner: meta-arago+owner@lists.yoctoproject.org
>> Unsubscribe:https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-arago/unsub__;!!G3vK!WteFVQcTWZuhDmKaUzOjchX06LXVt5bLZibOfjHxJB6hb6iS8cqgjcWTUCC72HeA5RiRLZJ012AQbGldvKNki1dPVak8P5U1J_IW$  [c-shilwant@ti.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>>
diff mbox series

Patch

diff --git a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
new file mode 100644
index 00000000..3b365fca
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-serverd.service
@@ -0,0 +1,29 @@ 
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+#
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+#
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+[Unit]
+Description=Netopeer2-Server
+After=sysrepod.service
+
+[Service]
+RemainAfterExit=true
+Type=oneshot
+ExecStart=/usr/sbin/netopeer2-server -v 1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
index e4278d23..7c840243 100644
--- a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
+++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
@@ -3,7 +3,12 @@  DESCRIPTION = "Netopeer2 is based on the new generation of the NETCONF and YANG
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=41daedff0b24958b2eba4f9086d782e1"
 
-SRC_URI = "git://github.com/CESNET/Netopeer2.git;protocol=https;branch=devel file://netopeer2-server"
+SRC_URI = "git://github.com/CESNET/Netopeer2.git;protocol=https;branch=devel \
+          ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', \
+	        'file://netopeer2-server', '', d)} \
+          ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', \
+	        'file://netopeer2-serverd.service', '', d)} \
+          "
 
 PV = "2.1.59+git${SRCPV}"
 SRCREV = "b81788d9a81770313a0eb7f88d4224726b3d6e15"
@@ -16,10 +21,15 @@  RDEPENDS:${PN} += "bash curl"
 FILES:${PN} += "/usr/share/yang* /usr/share/netopeer2/* /usr/lib/sysrepo-plugind/*"
 
 inherit cmake pkgconfig
+inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
 
 # Specify any options you want to pass to cmake using EXTRA_OECMAKE:
 EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String=Release -DINSTALL_MODULES=OFF -DGENERATE_HOSTKEY=OFF -DMERGE_LISTEN_CONFIG=OFF"
 
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "netopeer2-serverd.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
 do_install:append () {
     install -d ${D}/etc/netopeer2/scripts
     install -o root -g root ${S}/scripts/setup.sh ${D}/etc/netopeer2/scripts/setup.sh
@@ -27,5 +37,11 @@  do_install:append () {
     install -o root -g root ${S}/scripts/merge_config.sh ${D}/etc/netopeer2/scripts/merge_config.sh
     install -d ${D}/etc/netopeer2
     install -d ${D}/etc/init.d
-    install -m 0755 ${WORKDIR}/netopeer2-server ${D}/etc/init.d/
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -m 0755 ${WORKDIR}/netopeer2-server ${D}/etc/init.d/
+    fi
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/netopeer2-serverd.service ${D}${systemd_system_unitdir}
+    fi
 }
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
new file mode 100644
index 00000000..1b4c3e3b
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepod.service
@@ -0,0 +1,37 @@ 
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+#
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+#
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+[Unit]
+Description=Sysrepo
+After=local-fs.target
+
+[Service]
+RemainAfterExit=true
+Type=oneshot
+
+ExecStartPre=/bin/bash -c 'NP2_MODULE_DIR="/usr/share/yang/modules/netopeer2" \
+			   NP2_MODULE_PERMS="600" NP2_MODULE_OWNER="root" \
+			   NP2_MODULE_GROUP="root" \
+			   exec /etc/netopeer2/scripts/setup.sh'
+ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_hostkey.sh
+ExecStartPre=/bin/bash /etc/netopeer2/scripts/merge_config.sh
+ExecStartPre= touch /etc/sysrepo/init
+ExecStart=/usr/bin/sysrepo-plugind
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
index 18da3ca3..77da7b7a 100644
--- a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
@@ -4,7 +4,11 @@  DESCRIPTION = ""
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ef345f161efb68c3836e6f5648b2312f"
 
-SRC_URI = "git://github.com/sysrepo/sysrepo.git;protocol=https;branch=devel file://sysrepo"
+SRC_URI = "git://github.com/sysrepo/sysrepo.git;protocol=https;branch=devel \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', \
+                'file://sysrepo','', d)} \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', \
+                'file://sysrepod.service','', d)}"
 
 PV = "2.2.71+git${SRCPV}"
 SRCREV = "b828f0ab4693c613cc66efd053a146e05854d5c8"
@@ -16,12 +20,18 @@  DEPENDS = "libyang protobuf protobuf-c protobuf-c-native libredblack libev libne
 FILES:${PN} += "/usr/share/yang/* /usr/lib/sysrepo-plugind/*"
 
 inherit cmake pkgconfig python3native python3-dir
+inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
+
 
 # Specify any options you want to pass to cmake using EXTRA_OECMAKE:
 EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String=Release -DBUILD_EXAMPLES:String=False -DENABLE_TESTS:String=False -DREPOSITORY_LOC:PATH=/etc/sysrepo  -DCALL_TARGET_BINS_DIRECTLY=False -DGEN_LANGUAGE_BINDINGS:String=False "
 
 BBCLASSEXTEND = "native nativesdk"
 
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "sysrepod.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
 do_install:append () {
     install -d ${D}/etc/sysrepo/data/notifications
     install -d ${D}/etc/sysrepo/yang
@@ -29,6 +39,13 @@  do_install:append () {
     install -o root -g root ${S}/modules/ietf-netconf-with-defaults.yang ${D}/etc/sysrepo/yang/ietf-netconf-with-defaults@2011-06-01.yang
     install -o root -g root ${S}/modules/ietf-netconf.yang ${D}/etc/sysrepo/yang/ietf-netconf@2011-06-01.yang
     install -d ${D}/etc/init.d
-    install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
-    install -d ${D}/usr/lib/sysrepo/plugins
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -m 0775 ${WORKDIR}/sysrepo ${D}/etc/init.d/
+        install -d ${D}/usr/lib/sysrepo/plugins
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/sysrepod.service ${D}${systemd_system_unitdir}
+    fi
 }