[Buildroot] [git commit] package/netopeer2: add package

Yann E. MORIN yann.morin.1998 at free.fr
Fri Jul 24 21:27:00 UTC 2020


commit: https://git.buildroot.net/buildroot/commit/?id=6335ff08570daa6ec905650a8e46b449b0ad1bb8
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Netopeer2 is a set of tools implementing network configuration
tools based on the NETCONF Protocol.

Netopeer2 needs libnetconf2 to have SSL/TSL and SSH support, so
we enable both openssl and libssh+server from netopeer2, so that
libnetconf2 has appropriate support. But netopeer2 does not use
either, so does not build-depend on them.

Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
[yann.morin.1998 at free.fr:
  - fix dependencies and their comments
  - explain openssl and libssh+server dependencies
  - fix codestyle in Config,in, noticed by Adam
  - fix codestyle in .mk
]
Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
---
 DEVELOPERS                                         |  1 +
 package/Config.in                                  |  1 +
 ...uild-BUGFIX-take-DESTDIR-into-account-649.patch | 33 +++++++++
 ...pts-CHANGE-use-su-only-for-effective-root.patch | 79 ++++++++++++++++++++++
 package/netopeer2/Config.in                        | 34 ++++++++++
 package/netopeer2/S52netopeer2                     | 50 ++++++++++++++
 package/netopeer2/netopeer2.hash                   |  3 +
 package/netopeer2/netopeer2.mk                     | 21 ++++++
 8 files changed, 222 insertions(+)

diff --git a/DEVELOPERS b/DEVELOPERS
index 043e8ce3f4..ad927c6bbe 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1090,6 +1090,7 @@ F:	package/python-sip/
 N:	Heiko Thiery <heiko.thiery at gmail.com>
 F:	package/libnetconf2/
 F:	package/libyang/
+F:	package/netopeer2/
 F:	package/sysrepo/
 
 N:	Henrique Camargo <henrique at henriquecamargo.com>
diff --git a/package/Config.in b/package/Config.in
index e6500123f6..3b0b57bc5b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1751,6 +1751,7 @@ menu "Networking"
 	source "package/mongoose/Config.in"
 	source "package/nanomsg/Config.in"
 	source "package/neon/Config.in"
+	source "package/netopeer2/Config.in"
 	source "package/nghttp2/Config.in"
 	source "package/norm/Config.in"
 	source "package/nss-mdns/Config.in"
diff --git a/package/netopeer2/0001-build-BUGFIX-take-DESTDIR-into-account-649.patch b/package/netopeer2/0001-build-BUGFIX-take-DESTDIR-into-account-649.patch
new file mode 100644
index 0000000000..bff4337fe7
--- /dev/null
+++ b/package/netopeer2/0001-build-BUGFIX-take-DESTDIR-into-account-649.patch
@@ -0,0 +1,33 @@
+From c6afffafd1e27054ff59b82ffed3a99795814631 Mon Sep 17 00:00:00 2001
+From: Heiko Thiery <heiko.thiery at gmail.com>
+Date: Mon, 8 Jun 2020 09:47:58 +0200
+Subject: [PATCH] build BUGFIX take DESTDIR into account (#649)
+
+When installing yang modules add DESTDIR prefix to the NP2_MODULE_DIR.
+
+Fixes #648
+
+Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
+[patch taken from upstream:
+https://github.com/CESNET/netopeer2/commit/726b1384a3f93090ede1143da86c99d5d24d06c5]
+Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
+---
+ scripts/setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/setup.sh b/scripts/setup.sh
+index 7175bc4..81abf63 100755
+--- a/scripts/setup.sh
++++ b/scripts/setup.sh
+@@ -8,7 +8,7 @@ fi
+ 
+ # avoid problems with sudo path
+ SYSREPOCTL=`su -c "which sysrepoctl" $USER`
+-MODDIR=${NP2_MODULE_DIR}
++MODDIR=${DESTDIR}${NP2_MODULE_DIR}
+ PERMS=${NP2_MODULE_PERMS}
+ OWNER=${NP2_MODULE_OWNER}
+ GROUP=${NP2_MODULE_GROUP}
+-- 
+2.20.1
+
diff --git a/package/netopeer2/0002-scripts-CHANGE-use-su-only-for-effective-root.patch b/package/netopeer2/0002-scripts-CHANGE-use-su-only-for-effective-root.patch
new file mode 100644
index 0000000000..b960a87beb
--- /dev/null
+++ b/package/netopeer2/0002-scripts-CHANGE-use-su-only-for-effective-root.patch
@@ -0,0 +1,79 @@
+From 71cc996faa5500b3bfd499ad0c436c8b96629ea7 Mon Sep 17 00:00:00 2001
+From: Michal Vasko <mvasko at cesnet.cz>
+Date: Wed, 10 Jun 2020 15:20:23 +0200
+Subject: [PATCH] scripts CHANGE use su only for effective root
+
+Fixes #645
+
+[patch taken from upstream:
+https://github.com/CESNET/netopeer2/commit/2161b333009c21ffc8501e5127b82e6f0570ca8e]
+Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
+---
+ scripts/merge_config.sh  |  8 ++++++--
+ scripts/merge_hostkey.sh | 11 ++++++++---
+ scripts/setup.sh         |  8 ++++++--
+ 3 files changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/scripts/merge_config.sh b/scripts/merge_config.sh
+index dde0c75..4ad151c 100755
+--- a/scripts/merge_config.sh
++++ b/scripts/merge_config.sh
+@@ -2,8 +2,12 @@
+ 
+ set -e
+ 
+-# avoid problems with sudo path
+-SYSREPOCFG=`su -c "which sysrepocfg" $USER`
++# avoid problems with sudo PATH
++if [ `id -u` -eq 0 ]; then
++    SYSREPOCFG=`su -c 'which sysrepocfg' -l $USER`
++else
++    SYSREPOCFG=`which sysrepocfg`
++fi
+ KS_KEY_NAME=genkey
+ 
+ # check that there is no listen/Call Home configuration yet
+diff --git a/scripts/merge_hostkey.sh b/scripts/merge_hostkey.sh
+index 87947fa..a0677ee 100755
+--- a/scripts/merge_hostkey.sh
++++ b/scripts/merge_hostkey.sh
+@@ -2,9 +2,14 @@
+ 
+ set -e
+ 
+-# avoid problems with sudo path
+-SYSREPOCFG=`su -c "which sysrepocfg" $USER`
+-OPENSSL=`su -c "which openssl" $USER`
++# avoid problems with sudo PATH
++if [ `id -u` -eq 0 ]; then
++    SYSREPOCFG=`su -c 'which sysrepocfg' -l $USER`
++    OPENSSL=`su -c 'which openssl' -l $USER`
++else
++    SYSREPOCFG=`which sysrepocfg`
++    OPENSSL=`which openssl`
++fi
+ 
+ # check that there is no SSH key with this name yet
+ KEYSTORE_KEY=`$SYSREPOCFG -X -x "/ietf-keystore:keystore/asymmetric-keys/asymmetric-key[name='genkey']/name"`
+diff --git a/scripts/setup.sh b/scripts/setup.sh
+index 81abf63..8bf6825 100755
+--- a/scripts/setup.sh
++++ b/scripts/setup.sh
+@@ -6,8 +6,12 @@ if [ -z "$NP2_MODULE_DIR" -o -z "$NP2_MODULE_PERMS" -o -z "$NP2_MODULE_OWNER" -o
+     exit 1
+ fi
+ 
+-# avoid problems with sudo path
+-SYSREPOCTL=`su -c "which sysrepoctl" $USER`
++# avoid problems with sudo PATH
++if [ `id -u` -eq 0 ]; then
++    SYSREPOCTL=`su -c 'which sysrepoctl' -l $USER`
++else
++    SYSREPOCTL=`which sysrepoctl`
++fi
+ MODDIR=${DESTDIR}${NP2_MODULE_DIR}
+ PERMS=${NP2_MODULE_PERMS}
+ OWNER=${NP2_MODULE_OWNER}
+-- 
+2.20.1
+
diff --git a/package/netopeer2/Config.in b/package/netopeer2/Config.in
new file mode 100644
index 0000000000..763b1f234b
--- /dev/null
+++ b/package/netopeer2/Config.in
@@ -0,0 +1,34 @@
+comment "netopeer2 needs a toolchain w/ gcc >= 4.8, C++, threads, dynamic library"
+	depends on BR2_USE_MMU
+	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \
+		|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
+config BR2_PACKAGE_NETOPEER2
+	bool "netopeer2"
+	depends on BR2_USE_MMU # libnetconf2, libssh, sysrepo
+	depends on !BR2_STATIC_LIBS # libnetconf2, libssh, libyang, sysrepo
+	depends on BR2_INSTALL_LIBSTDCPP # sysrepo
+	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # sysrepo
+	select BR2_PACKAGE_LIBNETCONF2
+	select BR2_PACKAGE_LIBSSH
+	select BR2_PACKAGE_LIBSSH_SERVER # For libnetconf2 to have SSH
+	select BR2_PACKAGE_LIBYANG
+	select BR2_PACKAGE_OPENSSL # For libnetconf2 to have TLS
+	select BR2_PACKAGE_SYSREPO
+	help
+	  Netopeer2 is a set of tools implementing network configuration
+	  tools based on the NETCONF Protocol.
+
+	  This is the server part.
+
+	  https://github.com/CESNET/Netopeer2
+
+if BR2_PACKAGE_NETOPEER2
+
+config BR2_PACKAGE_NETOPEER2_CLI
+	bool "cli"
+	help
+	  Enable netopeer2 CLI.
+
+endif
diff --git a/package/netopeer2/S52netopeer2 b/package/netopeer2/S52netopeer2
new file mode 100644
index 0000000000..cf53a8f109
--- /dev/null
+++ b/package/netopeer2/S52netopeer2
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+DAEMON="netopeer2-server"
+PIDFILE="/var/run/$DAEMON.pid"
+
+NETOPEER2_SERVER_ARGS=""
+
+start() {
+	printf 'Starting %s: ' "$DAEMON"
+
+	start-stop-daemon -S -b -q -p $PIDFILE -x "/usr/bin/$DAEMON" \
+		-- $NETOPEER2_SERVER_ARGS
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
+}
+
+stop() {
+	printf 'Stopping %s: ' "$DAEMON"
+	start-stop-daemon -K -q -p $PIDFILE
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
+}
+
+restart() {
+	stop
+	sleep 1
+	start
+}
+
+reload() {
+	# we do not support real reload .. just restart
+	restart
+}
+
+case "$1" in
+	start|stop|restart|reload)
+		"$1";;
+	*)
+		echo "Usage: $0 {start|stop|restart|reload}"
+esac
diff --git a/package/netopeer2/netopeer2.hash b/package/netopeer2/netopeer2.hash
new file mode 100644
index 0000000000..93a094d563
--- /dev/null
+++ b/package/netopeer2/netopeer2.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256  66f3ad68cc6e41f3231b090ef27016ccbfe007cda7d08ec19f409f7429f46ff9  netopeer2-1.1.34.tar.gz
+sha256  b46f161fbdcf127d3ef22602e15958c3092fe3294f71a2dc8cdf8f6689cba95b  LICENSE
diff --git a/package/netopeer2/netopeer2.mk b/package/netopeer2/netopeer2.mk
new file mode 100644
index 0000000000..641666e8d3
--- /dev/null
+++ b/package/netopeer2/netopeer2.mk
@@ -0,0 +1,21 @@
+################################################################################
+#
+# netopeer2
+#
+################################################################################
+
+NETOPEER2_VERSION = 1.1.34
+NETOPEER2_SITE = $(call github,CESNET,Netopeer2,v$(NETOPEER2_VERSION))
+NETOPEER2_DL_SUBDIR = netopeer2
+NETOPEER2_LICENSE = BSD-3-Clause
+NETOPEER2_LICENSE_FILES = LICENSE
+NETOPEER2_DEPENDENCIES = libnetconf2 libyang sysrepo
+
+NETOPEER2_CONF_OPTS = -DBUILD_CLI=$(if $(BR2_PACKAGE_NETOPEER2_CLI),ON,OFF)
+
+define NETOPEER2_INSTALL_INIT_SYSV
+	$(INSTALL) -m 755 -D package/netopeer2/S52netopeer2 \
+		$(TARGET_DIR)/etc/init.d/S52netopeer2
+endef
+
+$(eval $(cmake-package))


More information about the buildroot mailing list