From patchwork Thu Oct 24 07:46:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiko Thiery X-Patchwork-Id: 1182665 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="C3Kf8rX+"; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46zKBb1mNyz9sPv for ; Thu, 24 Oct 2019 18:49:10 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 698BB21513; Thu, 24 Oct 2019 07:49:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zxkfl3j4G6+d; Thu, 24 Oct 2019 07:49:05 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id EEB86214E6; Thu, 24 Oct 2019 07:49:04 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 0F3871BF32D for ; Thu, 24 Oct 2019 07:49:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 0C1A7868C7 for ; Thu, 24 Oct 2019 07:49:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id n6Y2StvqVr8K for ; Thu, 24 Oct 2019 07:49:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 42660868C4 for ; Thu, 24 Oct 2019 07:49:01 +0000 (UTC) Received: by mail-wr1-f41.google.com with SMTP id t16so19730538wrr.1 for ; Thu, 24 Oct 2019 00:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ogosS6XXzcqmbuL0Aw1qfieD1l7aqmz5z24FGr9ALyQ=; b=C3Kf8rX+z1S7fWHMbbYkyTUGMRc14sbOv20lhH42KDB8yiXzel4bLTWigrXr0ENfbe MEL4FXxNd6Xr/swnt1YjDHjkPS5jdLJe5jwz5VnO2Krl3tknfWNGgkYIpM5EYRGrI2ot CTWeBDSboqQPIU2ywOq2j7P3rI13/4/lZOpllJl07psbCpWOG8odRF6EVqMaHotTbfne 9cEvgD996YUDfyzHSbGy08fjqPvY4LNT+kCEzoz7ViG/lQw5j9VswYyE38b9k+kxzvqU uqZ9hfyHVE9k5xe8Tjl/Jo/kVHYOOdNTn6g8Y2DadNEEoInm/Mr/p5zRE/3lX0LSRyFq z+cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ogosS6XXzcqmbuL0Aw1qfieD1l7aqmz5z24FGr9ALyQ=; b=irBltI8DSdCBWlBTX9mVvkLotvvcfxkJJLQdRvIFkyRYAdZ8Vn993wh+Uo0GhQk8be rYJQkQszuZpewP/c8xCvrVbRrKlQTJ/nMaDXJifgBVRqciMQ73PbtnPisHBRV72o+pkX 09NnSehPqPMVIQN7G5Cw35IVrWjQRwTykXTMxsxWgv2JHkYKqC4REzKe9CNrfX1DrUnB +bStrHd9wtAZpJkQG4tWsx+8eZr6/hNmOkc8vCa2kzWB+DLLOikCajiAxd3uPKUQu/q7 kCjuUkLJw5c0vvRjXmXRY290Rh8KbCUX3fEPcjEpiIphYp/HkCCmLmBwORWjHcxmS/7J dkuQ== X-Gm-Message-State: APjAAAWTqoOvf2OZhuXJ7ZKh42WpLMY4yF94WwlnENdOFoXn5b5JXWW9 V5B/ooCW/9qGw+gcDA2iJpUXkIIU X-Google-Smtp-Source: APXvYqwk3WGD00DwD8Is7d9YWPYgW1l/1KRiZv2Bik8YMMv0VO9OL4laEzULt1MaAYZmleu0PL8zdQ== X-Received: by 2002:a5d:4803:: with SMTP id l3mr2466869wrq.381.1571903339091; Thu, 24 Oct 2019 00:48:59 -0700 (PDT) Received: from hthiery01.sab.local ([213.135.10.150]) by smtp.gmail.com with ESMTPSA id c21sm1549536wmb.46.2019.10.24.00.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2019 00:48:58 -0700 (PDT) From: heiko.thiery@gmail.com To: buildroot@buildroot.org Date: Thu, 24 Oct 2019 09:46:43 +0200 Message-Id: <20191024074644.10442-3-heiko.thiery@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191024074644.10442-1-heiko.thiery@gmail.com> References: <20191024074644.10442-1-heiko.thiery@gmail.com> MIME-Version: 1.0 Subject: [Buildroot] [PATCH vX 2/5] package/sysrepo: add package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Heiko Thiery , Heiko Thiery , thomas.petazzoni@bootlin.com Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Heiko Thiery sysrepo is a YANG-based configuration and operational state data store for Unix/Linux applications. It is a dependency of Netopeer, a NETCONF server. Signed-off-by: Heiko Thiery --- DEVELOPERS | 1 + package/Config.in | 1 + ...espect-CMAKE_INSTALL_PREFIX-and-DEST.patch | 33 ++++++++++++ ...t-make-systemd-unit-dir-configurable.patch | 40 +++++++++++++++ package/sysrepo/Config.in | 35 +++++++++++++ package/sysrepo/S50sysrepod | 44 ++++++++++++++++ package/sysrepo/S51sysrepo-plugind | 49 ++++++++++++++++++ package/sysrepo/sysrepo.hash | 2 + package/sysrepo/sysrepo.mk | 51 +++++++++++++++++++ 9 files changed, 256 insertions(+) create mode 100644 package/sysrepo/0001-CMakeLists.txt-respect-CMAKE_INSTALL_PREFIX-and-DEST.patch create mode 100644 package/sysrepo/0002-CMakeLists.txt-make-systemd-unit-dir-configurable.patch create mode 100644 package/sysrepo/Config.in create mode 100644 package/sysrepo/S50sysrepod create mode 100644 package/sysrepo/S51sysrepo-plugind create mode 100644 package/sysrepo/sysrepo.hash create mode 100644 package/sysrepo/sysrepo.mk diff --git a/DEVELOPERS b/DEVELOPERS index c494b75bff..e5f5f8fe1a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1045,6 +1045,7 @@ F: package/python-sip/ N: Heiko Thiery F: package/libnetconf2/ F: package/libyang/ +F: package/sysrepo/ N: Henrique Camargo F: package/json-glib/ diff --git a/package/Config.in b/package/Config.in index d78b4c444b..7cb6f14df9 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1678,6 +1678,7 @@ menu "Networking" source "package/slirp/Config.in" source "package/snmppp/Config.in" source "package/sofia-sip/Config.in" + source "package/sysrepo/Config.in" source "package/thrift/Config.in" source "package/usbredir/Config.in" source "package/wampcc/Config.in" diff --git a/package/sysrepo/0001-CMakeLists.txt-respect-CMAKE_INSTALL_PREFIX-and-DEST.patch b/package/sysrepo/0001-CMakeLists.txt-respect-CMAKE_INSTALL_PREFIX-and-DEST.patch new file mode 100644 index 0000000000..5cb3606475 --- /dev/null +++ b/package/sysrepo/0001-CMakeLists.txt-respect-CMAKE_INSTALL_PREFIX-and-DEST.patch @@ -0,0 +1,33 @@ +From c4a2195febbd5d436f8de79d8391d8da9aa60ac4 Mon Sep 17 00:00:00 2001 +From: Michael Walle +Date: Thu, 10 Oct 2019 14:58:16 +0200 +Subject: [PATCH 1/2] CMakeLists.txt: respect CMAKE_INSTALL_PREFIX and DESTDIR + +Don't use absolute pathnames in the install function. This way the files +will be installed in the correct location even if CMAKE_INSTALL_PREFIX +and DESTDIR are changed. + +Patch comes from upstream pull-request: +https://github.com/sysrepo/sysrepo/pull/1638 + +Signed-off-by: Heiko Thiery +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e4521088..14b7cd36 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -357,7 +357,7 @@ if(WITH_SYSTEMD) + ${PROJECT_SOURCE_DIR}/deploy/systemd/sysrepod.service + ${PROJECT_SOURCE_DIR}/deploy/systemd/sysrepo-plugind.service + ) +- install(DIRECTORY ${PROJECT_SOURCE_DIR}/deploy/systemd/ DESTINATION "/lib/systemd/system" ++ install(DIRECTORY ${PROJECT_SOURCE_DIR}/deploy/systemd/ DESTINATION "lib/systemd/system" + FILES_MATCHING PATTERN "*.service") + endif() + +-- +2.20.1 + diff --git a/package/sysrepo/0002-CMakeLists.txt-make-systemd-unit-dir-configurable.patch b/package/sysrepo/0002-CMakeLists.txt-make-systemd-unit-dir-configurable.patch new file mode 100644 index 0000000000..3ab75f7957 --- /dev/null +++ b/package/sysrepo/0002-CMakeLists.txt-make-systemd-unit-dir-configurable.patch @@ -0,0 +1,40 @@ +From 906927b4ee2dd0d5bd669d193fc851d14919fbd1 Mon Sep 17 00:00:00 2001 +From: Michael Walle +Date: Thu, 10 Oct 2019 14:38:57 +0200 +Subject: [PATCH 2/2] CMakeLists.txt: make systemd unit dir configurable + +Patch comes from upstream pull-request: +https://github.com/sysrepo/sysrepo/pull/1638 + +Signed-off-by: Heiko Thiery +--- + CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 14b7cd36..14c84675 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -217,6 +217,9 @@ else() + message(FATAL_ERROR "Unknown file format \"${FILE_FORMAT_EXT}\", must be json, xml, or lyb.") + endif() + ++set(SYSTEMD_UNIT_DIR "lib/systemd/system/" CACHE STRING ++ "Path to the systemd service directory.") ++ + # timeouts + set(REQUEST_TIMEOUT 15 CACHE STRING + "Timeout (in seconds) for Sysrepo API requests. Set to 0 for no timeout.") +@@ -357,7 +360,8 @@ if(WITH_SYSTEMD) + ${PROJECT_SOURCE_DIR}/deploy/systemd/sysrepod.service + ${PROJECT_SOURCE_DIR}/deploy/systemd/sysrepo-plugind.service + ) +- install(DIRECTORY ${PROJECT_SOURCE_DIR}/deploy/systemd/ DESTINATION "lib/systemd/system" ++ install(DIRECTORY ${PROJECT_SOURCE_DIR}/deploy/systemd/ ++ DESTINATION "${SYSTEMD_UNIT_DIR}" + FILES_MATCHING PATTERN "*.service") + endif() + +-- +2.20.1 + diff --git a/package/sysrepo/Config.in b/package/sysrepo/Config.in new file mode 100644 index 0000000000..a93e314535 --- /dev/null +++ b/package/sysrepo/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_SYSREPO + bool "sysrepo" + depends on BR2_USE_MMU # libnetconf2 + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # host-protbuf + depends on BR2_HOST_GCC_AT_LEAST_4_8 # host-protobuf + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBNETCONF2 + select BR2_PACKAGE_LIBAVL + select BR2_PACKAGE_LIBYANG + select BR2_PACKAGE_PROTOBUF_C + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_PCRE_UCP + help + Sysrepo is an YANG-based configuration and operational state + data store for Unix/Linux applications. + + https://github.com/sysrepo + +comment "sysrepo needs a toolchain w/ C++, threads, dynamic libraray, host gcc >= 4.8" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + +if BR2_PACKAGE_SYSREPO + +config BR2_PACKAGE_SYSREPO_EXAMPLES + bool "sysrepo examples" + help + Enable sysrepo examples. + +endif diff --git a/package/sysrepo/S50sysrepod b/package/sysrepo/S50sysrepod new file mode 100644 index 0000000000..05ca627fb7 --- /dev/null +++ b/package/sysrepo/S50sysrepod @@ -0,0 +1,44 @@ +#!/bin/sh + +DAEMON="sysrepod" +PIDFILE="/var/run/$DAEMON.pid" + +SYSREPOD_ARGS="" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -b -q -p $PIDFILE -x "/usr/bin/$DAEMON" \ + -- $SYSREPOD_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 +} + +case "$1" in + start|stop|restart) + "$1";; + *) + echo "Usage: $0 {start|stop|restart}" +esac diff --git a/package/sysrepo/S51sysrepo-plugind b/package/sysrepo/S51sysrepo-plugind new file mode 100644 index 0000000000..9dd3bb1101 --- /dev/null +++ b/package/sysrepo/S51sysrepo-plugind @@ -0,0 +1,49 @@ +#!/bin/sh + +DAEMON="sysrepo-plugind" +PIDFILE="/var/run/$DAEMON.pid" + +SYSREPO_PLUGIND_ARGS="" + +start() { + printf 'Starting %s: ' "$DAEMON" + start-stop-daemon -S -b -q -p $PIDFILE -x "/usr/bin/$DAEMON" \ + -- $SYSREPO_PLUGIND_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/sysrepo/sysrepo.hash b/package/sysrepo/sysrepo.hash new file mode 100644 index 0000000000..39ec70a2f6 --- /dev/null +++ b/package/sysrepo/sysrepo.hash @@ -0,0 +1,2 @@ +sha256 d3066c1776a6727b96bbb3517eb646d0bb6037e8e1addcbe873cae590493843e sysrepo-v0.7.8.tar.gz +sha256 28a773bfffa828ec38c030fc8ace5f3aeb90926ec1309bbd135441c4387ce3cd LICENSE diff --git a/package/sysrepo/sysrepo.mk b/package/sysrepo/sysrepo.mk new file mode 100644 index 0000000000..1cebf9f8a9 --- /dev/null +++ b/package/sysrepo/sysrepo.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# sysrepo +# +################################################################################ + +SYSREPO_VERSION = v0.7.8 +SYSREPO_SITE = $(call github,sysrepo,sysrepo,$(SYSREPO_VERSION)) +SYSREPO_INSTALL_STAGING = YES +SYSREPO_LICENSE = Apache-2.0 +SYSREPO_LICENSE_FILES = LICENSE +SYSREPO_DEPENDENCIES = libev libnetconf2 libavl libyang pcre protobuf-c host-sysrepo +HOST_SYSREPO_DEPENDENCIES = host-libev host-libnetconf2 host-libavl host-libyang host-pcre host-protobuf-c + +SYSREPO_CONF_OPTS = \ + -DGEN_PYTHON2_TESTS=OFF \ + -DENABLE_TESTS=OFF \ + -DCALL_SYSREPOCTL_BIN=$(HOST_DIR)/bin/sysrepoctl \ + -DCALL_SYSREPOCFG_BIN=$(HOST_DIR)/bin/sysrepocfg \ + -DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_SYSREPO_EXAMPLES),ON,OFF) \ + $(if $(BR2_INIT_SYSTEMD),-DWITH_SYSTEMD=ON) \ + $(if $(BR2_INIT_SYSTEMD),-DSYSTEMD_UNIT_DIR=usr/lib/systemd/system) + +# On ARM, this is needed to prevent unaligned memory access with an optimized +# build .. https://github.com/sysrepo/sysrepo/issues/947 +SYSREPO_CONF_OPTS += -DUSE_SR_MEM_MGMT=OFF + +define SYSREPO_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sysrepo/S50sysrepod \ + $(TARGET_DIR)/etc/init.d/S50sysrepod + $(INSTALL) -m 755 -D package/sysrepo/S51sysrepo-plugind \ + $(TARGET_DIR)/etc/init.d/S51sysrepo-plugind +endef + +define SYSREPO_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/systemd/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/sysrepod.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/sysrepo-plugind.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants +endef + +HOST_SYSREPO_CONF_OPTS = \ + -DGEN_PYTHON2_TESTS=OFF \ + -DENABLE_TESTS=OFF \ + -DCALL_TARGET_BINS_DIRECTLY=OFF \ + -DREPOSITORY_LOC=$(BASE_TARGET_DIR)/etc/sysrepo \ + -DSUBSCRIPTIONS_SOCKET_DIR=$(HOST_DIR)/var/run/sysrepo-subscriptions + +$(eval $(cmake-package)) +$(eval $(host-cmake-package))