diff mbox series

[master/kirkstone,2/3] meta-arago-extras: sysrepo: Add meta-sysrepo recipes

Message ID 20230621091801.14944-3-r-gunasekaran@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series Add meta-sysrepo recipes | expand

Commit Message

Ravi Gunasekaran June 21, 2023, 9:18 a.m. UTC
meta-sysrepo recipes are hosted at [1]. But the layer seems to
be inactive. So add the recipes to meta-arago-extras.

[1] - https://github.com/sartura/meta-sysrepo

Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
---
 meta-arago-extras/recipes-sysrepo/README.md   | 85 +++++++++++++++++++
 .../libnetconf2/libnetconf2_git.bb            | 24 ++++++
 .../libredblack/libredblack_git.bb            | 21 +++++
 .../recipes-sysrepo/libssh/libssh_0.9.5.bb    | 35 ++++++++
 .../recipes-sysrepo/libyang/libyang_git.bb    | 23 +++++
 .../netopeer2-server/netopeer2-server         | 36 ++++++++
 .../netopeer2-server/netopeer2-server_git.bb  | 32 +++++++
 .../0001-so-version.patch                     | 12 +++
 .../sysrepo-plugins-common_git.bb             | 27 ++++++
 .../recipes-sysrepo/sysrepo/sysrepo/sysrepo   | 52 ++++++++++++
 .../recipes-sysrepo/sysrepo/sysrepo_git.bb    | 35 ++++++++
 11 files changed, 382 insertions(+)
 create mode 100644 meta-arago-extras/recipes-sysrepo/README.md
 create mode 100644 meta-arago-extras/recipes-sysrepo/libnetconf2/libnetconf2_git.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/libredblack/libredblack_git.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/libssh/libssh_0.9.5.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/libyang/libyang_git.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-server
 create mode 100644 meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/0001-so-version.patch
 create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/sysrepo-plugins-common_git.bb
 create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepo
 create mode 100644 meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
diff mbox series

Patch

diff --git a/meta-arago-extras/recipes-sysrepo/README.md b/meta-arago-extras/recipes-sysrepo/README.md
new file mode 100644
index 00000000..9c312bf8
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/README.md
@@ -0,0 +1,85 @@ 
+# sysrepo/netopeer2 layer for Yocto Project
+
+This README file contains information on the contents of the sysrepo/netopeer2 layer for Yocto Project.
+
+Please see the corresponding sections below for details.
+
+## Dependencies
+
+This layer depends on:
+
+* URI: git://git.openembedded.org/meta-openembedded 
+* branch: kirkstone
+
+It was tested with yocto project kirkstone branch:
+
+* URI: git://git.yoctoproject.org/poky
+* branch: kirkstone
+
+Build host dependencies:
+https://docs.yoctoproject.org/dev-manual/start.html#preparing-the-build-host
+
+## Adding the layer to your build
+
+In order to use this layer, you need to make the build system aware of it.
+First prepare yocto project and all required layers:
+```
+git clone git://git.yoctoproject.org/poky -b kirkstone
+cd poky
+git clone git://git.openembedded.org/meta-openembedded -b kirkstone
+git clone https://github.com/sartura/meta-sysrepo
+source oe-init-build-env
+```
+The last command initializes the build environment and your current working directory is set to the `build` directory.
+Now add the layer to the build system by adding the location of the sysrepo layer to `conf/bblayers.conf`, along with any other layers needed, e.g.:
+```
+BBLAYERS ?= " \
+  /home/build/poky/meta \
+  /home/build/poky/meta-poky \
+  /home/build/poky/meta-yocto-bsp \
+  /home/build/poky/meta-sysrepo \
+  /home/build/poky/meta-openembedded/meta-initramfs \
+  /home/build/poky/meta-openembedded/meta-multimedia \
+  /home/build/poky/meta-openembedded/meta-networking \
+  /home/build/poky/meta-openembedded/meta-oe \
+  /home/build/poky/meta-openembedded/meta-python \
+  "
+```
+
+Update `conf/local.conf` file to include additional software in the final image, e.g. add to the end:
+```
+IMAGE_INSTALL:append = " sysrepo netopeer2-server openssh openssl "
+```
+Optionally, adapt `MACHINE` variable for target system.
+
+Append "pam" to DISTRO_FEATURES, if needed
+```
+DISTRO_FEATURES += " pam"
+```
+## Build test image
+
+Now a test image can be built, e.g.:
+```
+bitbake core-image-base
+```
+
+The image is located under `tmp/deploy/images/<target>` directory.
+
+Default `MACHINE` target is `qemux86`, so it can be run with:
+```
+runqemu qemux86-64
+```
+
+## Starting sysrepo and netopeer2-server
+
+There are init.d scripts (as part of the meta-sysrepo layer) which are automatically stored in the image:
+* /etc/init.d/sysrepo
+* /etc/init.d/netopeer2-server
+
+It is enough to start only `/etc/init.d/netopeer2-server` script and it will make sure `sysrepo` processes are also started.
+```
+/etc/init.d/netopeer2-server start
+```
+
+## Demo
+[![asciicast](https://asciinema.org/a/360926.svg)](https://asciinema.org/a/360926)
diff --git a/meta-arago-extras/recipes-sysrepo/libnetconf2/libnetconf2_git.bb b/meta-arago-extras/recipes-sysrepo/libnetconf2/libnetconf2_git.bb
new file mode 100644
index 00000000..a534b9ac
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/libnetconf2/libnetconf2_git.bb
@@ -0,0 +1,24 @@ 
+SUMMARY = "libnetconf2 is a NETCONF library in C intended for building NETCONF clients and servers"
+DESCRIPTION = "The library provides functions to connect NETCONF client and server to each other via SSH and to send, receive and process NETCONF messages."
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=08a5578c9bab06fb2ae84284630b973f"
+
+SRC_URI = "git://github.com/CESNET/libnetconf2.git;protocol=https;branch=devel"
+
+PV = "2.1.34+git${SRCPV}"
+SRCREV = "91cd6d75722c65de5c005d908f6d645b48cee89b"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libssh openssl libyang libxcrypt libpam"
+
+FILES:${PN} += "/usr/share/yang/modules/libnetconf2/*"
+
+inherit cmake pkgconfig
+
+# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
+#EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String=Release -DLIBYANG_INCLUDE_DIR=/usr/include -DLIBYANG_LIBRARY=/usr/lib "
+EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String=Release "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-arago-extras/recipes-sysrepo/libredblack/libredblack_git.bb b/meta-arago-extras/recipes-sysrepo/libredblack/libredblack_git.bb
new file mode 100644
index 00000000..ea51b618
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/libredblack/libredblack_git.bb
@@ -0,0 +1,21 @@ 
+SUMMARY = "Library for handling red-black tree searching algorithm"
+DESCRIPTION = "A library to provide the RedBlack balanced tree searching and sorting algorithm."
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=de174fb5a92cdbe038c88dc4c4316f99"
+
+SRC_URI = "git://github.com/sysrepo/libredblack.git;protocol=https"
+
+PV = "1.0+git${SRCPV}"
+SRCREV = "a399310d99b61eec4d3c0677573ab5dddcf9395d"
+
+S = "${WORKDIR}/git"
+
+# NOTE: if this software is not capable of being built in a separate build directory
+# from the source, you should replace autotools with autotools-brokensep in the
+# inherit line
+inherit python3native autotools
+
+# Specify any options you want to pass to the configure script using EXTRA_OECONF:
+EXTRA_OECONF = " --without-rbgen "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-arago-extras/recipes-sysrepo/libssh/libssh_0.9.5.bb b/meta-arago-extras/recipes-sysrepo/libssh/libssh_0.9.5.bb
new file mode 100644
index 00000000..43a6827e
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/libssh/libssh_0.9.5.bb
@@ -0,0 +1,35 @@ 
+SUMMARY = "Multiplatform C library implementing the SSHv2 and SSHv1 protocol"
+HOMEPAGE = "http://www.libssh.org"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dabb4958b830e5df11d2b0ed8ea255a0"
+
+DEPENDS = "zlib openssl"
+
+SRC_URI = "git://git.libssh.org/projects/libssh.git;branch=stable-0.9"
+SRCREV = "0cceefd49d4d397eb21bd36e314ac87739da51ff"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??=""
+PACKAGECONFIG[gssapi] = "-DWITH_GSSAPI=1, -DWITH_GSSAPI=0, krb5, "
+
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+EXTRA_OECMAKE = " \
+    -DWITH_GCRYPT=0 \
+    -DWITH_PCAP=1 \
+    -DWITH_SFTP=1 \
+    -DWITH_ZLIB=1 \
+    -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+    "
+
+do_configure:prepend () {
+    # Disable building of examples
+    sed -i -e '/add_subdirectory(examples)/s/^/#DONOTWANT/' ${S}/CMakeLists.txt \
+        || bbfatal "Failed to disable examples"
+}
+
+TOOLCHAIN = "gcc"
diff --git a/meta-arago-extras/recipes-sysrepo/libyang/libyang_git.bb b/meta-arago-extras/recipes-sysrepo/libyang/libyang_git.bb
new file mode 100644
index 00000000..c984a252
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/libyang/libyang_git.bb
@@ -0,0 +1,23 @@ 
+SUMMARY = "YANG data modelling language parser and toolkit"
+DESCRIPTION = "libyang is YANG data modelling language parser and toolkit written (and providing API) in C. The library is used e.g. in libnetconf2, Netopeer2 or sysrepo projects."
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f3916d7d8d42a6508d0ea418cfff10ad"
+
+SRC_URI = "git://github.com/CESNET/libyang.git;protocol=https;branch=devel"
+
+PV = "2.1.77+git${SRCPV}"
+SRCREV = "a804113c9bbac3e36c53221be469c1ca5af5b435"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libpcre2"
+
+FILES:${PN} += "/usr/share/yang/modules/libyang/*"
+
+inherit cmake pkgconfig
+
+# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
+EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String=Release "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-server b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-server
new file mode 100644
index 00000000..fc0ee793
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server/netopeer2-server
@@ -0,0 +1,36 @@ 
+#!/bin/sh
+
+# Source function library.
+. /etc/init.d/functions
+
+EXEC_PATH="/usr/sbin"
+SERVER_EXEC="netopeer2-server"
+SERVER_OPTS=" -v 1"
+
+
+case "$1" in
+    start)
+        /etc/init.d/sysrepo start
+        start-stop-daemon --start --exec $EXEC_PATH/$SERVER_EXEC -- $SERVER_OPTS
+        ;;
+    stop)
+        start-stop-daemon --stop --quiet --exec $EXEC_PATH/$SERVER_EXEC
+        ;;
+    status)
+        status $SERVER_EXEC
+        ;;
+    reload)
+        echo "not supported"
+        ;;
+    restart)
+        $0 stop
+        $0 start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|status|restart}"
+        exit 1;;
+esac
+
+
+exit 0
+
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
new file mode 100644
index 00000000..c64cd2f1
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/netopeer2-server/netopeer2-server_git.bb
@@ -0,0 +1,32 @@ 
+SUMMARY = "Netopeer2 is a set of tools implementing network configuration tools based on the NETCONF Protocol."
+DESCRIPTION = "Netopeer2 is based on the new generation of the NETCONF and YANG libraries - libyang and libnetconf2. The Netopeer server uses sysrepo as a NETCONF datastore implementation."
+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"
+
+PV = "2.1.59+git${SRCPV}"
+SRCREV = "b81788d9a81770313a0eb7f88d4224726b3d6e15"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libyang libnetconf2 sysrepo curl"
+RDEPENDS:${PN} += "bash curl"
+
+FILES:${PN} += "/usr/share/yang* /usr/share/netopeer2/* /usr/lib/sysrepo-plugind/*"
+
+inherit cmake pkgconfig
+
+# 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"
+
+do_install:append () {
+    install -d ${D}/etc/netopeer2/scripts
+    install -o root -g root ${S}/scripts/setup.sh ${D}/etc/netopeer2/scripts/setup.sh
+    install -o root -g root ${S}/scripts/merge_hostkey.sh ${D}/etc/netopeer2/scripts/merge_hostkey.sh
+    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/
+}
+
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/0001-so-version.patch b/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/0001-so-version.patch
new file mode 100644
index 00000000..547f3642
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/0001-so-version.patch
@@ -0,0 +1,12 @@ 
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fd64b80..910510d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -23,6 +23,7 @@ include_directories(${LIBYANG_INCLUDE_DIRS})
+ include_directories(${SYSREPO_INCLUDE_DIRS})
+ 
+ add_library(${PROJECT_NAME} SHARED ${SRPC_SOURCES})
++set_target_properties(${PROJECT_NAME} PROPERTIES VERSION 1.0.0 SOVERSION 1)
+ 
+ install(
+     TARGETS ${PROJECT_NAME}
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/sysrepo-plugins-common_git.bb b/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/sysrepo-plugins-common_git.bb
new file mode 100644
index 00000000..f107b423
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo-plugins-common/sysrepo-plugins-common_git.bb
@@ -0,0 +1,27 @@ 
+SUMMARY = "Set of utilities/functionalities which can be used for easier build of sysrepo plugins."
+DESCRIPTION = ""
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f91d5dfaae99cc1943a8eca222cafa5c"
+
+SRC_URI = "gitsm://github.com/telekom/sysrepo-plugins-common.git;protocol=https;branch=devel "
+SRC_URI += " file://0001-so-version.patch "
+FILESEXTRAPATHS:prepend := "${THISDIR}:"
+
+PV = "dev+git${SRCPV}"
+SRCREV = "20885de0d3bb95a05610fdb3a0f83d8f7c370fad"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libyang sysrepo"
+
+FILES:${PN} += ""
+
+inherit cmake pkgconfig
+
+# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
+EXTRA_OECMAKE = " -DCMAKE_INSTALL_PREFIX:PATH=/usr "
+
+do_install:append () {
+    true
+}
+
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepo b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepo
new file mode 100644
index 00000000..9dff7ba5
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo/sysrepo
@@ -0,0 +1,52 @@ 
+#!/bin/sh
+
+# Source function library.
+. /etc/init.d/functions
+
+EXEC_PATH="/usr/bin"
+SYSREPOPLUGIND_EXEC="sysrepo-plugind"
+SERVER_OPTS=" -d -v 1"
+
+init_sysrepo() {
+    export NP2_MODULE_DIR="/usr/share/yang/modules/netopeer2"
+    export NP2_MODULE_PERMS="600"
+    export NP2_MODULE_OWNER="root"
+    export NP2_MODULE_GROUP="root"
+    if [ -x /usr/bin/sysrepoctl ]; then
+        sh /etc/netopeer2/scripts/setup.sh
+    fi
+    if [ -x /usr/bin/sysrepocfg ]; then
+        sh /etc/netopeer2/scripts/merge_hostkey.sh
+        sh /etc/netopeer2/scripts/merge_config.sh
+    fi
+    touch /etc/sysrepo/init
+}
+
+
+case "$1" in
+    start)
+        test -r /etc/sysrepo/init || init_sysrepo
+        start-stop-daemon --start --background --exec $EXEC_PATH/$SYSREPOPLUGIND_EXEC -- $SERVER_OPTS
+        ;;
+    stop)
+        start-stop-daemon --stop --quiet --exec $EXEC_PATH/$SYSREPOPLUGIND_EXEC
+        rm -rf /var/run/sysrepo-subscriptions/*
+        ;;
+    status)
+        status $SYSREPOPLUGIND_EXEC
+        ;;
+    reload)
+        echo "not supported"
+        ;;
+    restart)
+        $0 stop
+        $0 start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|status|restart}"
+        exit 1;;
+esac
+
+
+exit 0
+
diff --git a/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
new file mode 100644
index 00000000..56818fd9
--- /dev/null
+++ b/meta-arago-extras/recipes-sysrepo/sysrepo/sysrepo_git.bb
@@ -0,0 +1,35 @@ 
+# Recipe created by recipetool
+SUMMARY = "YANG-based configuration and operational state data store for Unix/Linux applications."
+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"
+
+PV = "2.2.71+git${SRCPV}"
+SRCREV = "b828f0ab4693c613cc66efd053a146e05854d5c8"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libyang protobuf protobuf-c protobuf-c-native libredblack libev libnetconf2"
+
+FILES:${PN} += "/usr/share/yang/* /usr/lib/sysrepo-plugind/*"
+
+inherit cmake pkgconfig python3native python3-dir
+
+# 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" 
+
+do_install:append () {
+    install -d ${D}/etc/sysrepo/data/notifications
+    install -d ${D}/etc/sysrepo/yang
+    install -o root -g root ${S}/modules/ietf-netconf-notifications.yang ${D}/etc/sysrepo/yang/ietf-netconf-notifications@2012-02-06.yang
+    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
+}
+