[Buildroot] [PATCH v1 1/1] package/netopeer2: add package

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


Heiko, All,

On 2020-06-16 14:16 +0200, Heiko Thiery spake thusly:
> Netopeer2 is a set of tools implementing network configuration
> tools based on the NETCONF Protocol. This is the second
> generation of the toolset, originally available as the Netopeer
> project. 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.
> 
> Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>

Applied to master, after doing a bunch of changes:

  - fix dependencies and their comments
  - explain openssl and libssh+server dependencies
  - fix codestyle in Config,in, noticed by Adam
  - fix codestyle in .mk

Please review the commit I pushed for more details.

Thanks!

Regards,
Yann E. MORIN.

> ---
>  DEVELOPERS                                    |  1 +
>  package/Config.in                             |  1 +
>  ...BUGFIX-take-DESTDIR-into-account-649.patch | 33 ++++++++
>  ...HANGE-use-su-only-for-effective-root.patch | 79 +++++++++++++++++++
>  package/netopeer2/Config.in                   | 36 +++++++++
>  package/netopeer2/S52netopeer2                | 50 ++++++++++++
>  package/netopeer2/netopeer2.hash              |  3 +
>  package/netopeer2/netopeer2.mk                | 22 ++++++
>  8 files changed, 225 insertions(+)
>  create mode 100644 package/netopeer2/0001-build-BUGFIX-take-DESTDIR-into-account-649.patch
>  create mode 100644 package/netopeer2/0002-scripts-CHANGE-use-su-only-for-effective-root.patch
>  create mode 100644 package/netopeer2/Config.in
>  create mode 100644 package/netopeer2/S52netopeer2
>  create mode 100644 package/netopeer2/netopeer2.hash
>  create mode 100644 package/netopeer2/netopeer2.mk
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 76a153d695..57628fbead 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1080,6 +1080,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 d32eadab88..bd89fed041 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1739,6 +1739,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..fcf3aaf57d
> --- /dev/null
> +++ b/package/netopeer2/Config.in
> @@ -0,0 +1,36 @@
> +comment "netopeer2 needs a toolchain w/ C++, threads, dynamic library, host gcc >= 4.8"
> +	depends on BR2_USE_MMU
> +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \
> +		|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_HOST_GCC_AT_LEAST_4_8
> +
> +config BR2_PACKAGE_NETOPEER2
> +	bool "netopeer2"
> +	depends on BR2_USE_MMU # sysrepo
> +	depends on !BR2_STATIC_LIBS # sysrepo
> +	depends on BR2_INSTALL_LIBSTDCPP # sysrepo
> +	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
> +	select BR2_PACKAGE_LIBYANG
> +	select BR2_PACKAGE_LIBNETCONF2
> +	select BR2_PACKAGE_PCRE # sysrepo
> +	select BR2_PACKAGE_PCRE_UCP # syrepo
> +	select BR2_PACKAGE_SYSREPO
> +	select BR2_PACKAGE_OPENSSL
> +	select BR2_PACKAGE_LIBSSH
> +	select BR2_PACKAGE_LIBSSH_SERVER
> +
> +	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..2553501f1d
> --- /dev/null
> +++ b/package/netopeer2/netopeer2.mk
> @@ -0,0 +1,22 @@
> +################################################################################
> +#
> +# 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))
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'


More information about the buildroot mailing list